CVS
鉴于公司用的版本工具为CVS,合并分支经常搞混,故记录
1.假设主版本为 trunk1.0 分支为 branch1.0
2.首先切换到trunk
merge ,出来的start tag 是指 主版本上的分离点的tag trunk1.0,end tag是指实际的分支即branch1.0
Git工具
参考文档:Git教程(https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000)
git 状态,此命令可以在查看git状态后,还会给出很多本地帮助
git status
查看分支
当前分支前有*
$ git branch
* dev
master
git merge命令用于合并指定分支到当前分支。合并后,再查看readme.txt的内容,就可以看到,和dev分支的最新提交是完全一样的。
如
$ git checkout master
Switched to branch 'master'
再
$ git merge dev
Updating d17efd8..fec145a
Fast-forward
readme.txt | 1 +
1 file changed, 1 insertion(+)
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
分支
- 创建分支
$ git branch dev
$ git checkout dev
Switched to branch 'dev'
也可以简写为 创建并切换到某分支
git checkout -b dev
- 查看分支,所有远程也要看加 -a
$ git branch
* dev
master
- 推送分支
git push origin 本地分支名:远程分支名
- 获取某远程分支
这里要理解一个概念:追踪分支或者跟踪分支
在Git中‘追踪分支’是用与联系本地分支和远程分支的. 如果你在’追踪分支'(Tracking Branches)上执行推送(push)或拉取(pull)时, 它会自动推送(push)或拉取(pull)到关联的远程分支上.
我的理解是:它只是帮你进行了关联,让你pull或者push的时候,不需要指定分支而已
参考文档:http://gitbook.liuhui998.com/4_7.html
git branch --track experimental origin/experimental
git checkout -b dev origin/dev,作用是checkout远程的dev分支,在本地起名为dev分支,并切换到本地的dev分支
- 删除某本地分支
git branch -D dev
tag
切换到需要打tag的分支上
$ git branch
* dev
master
$ git checkout master
Switched to branch 'master'
打tag
$ git tag -a v1.0 -m "hello world"
查看tag
git tag
推送tag到origin
git push origin --tags
合并分支
分支开发验证后,要先合并分支到本地主干,再push到远程master上
先切换到本地master
git merge 分支名
这是注意一点,默认为fast-forward模式,这样的话,你的主干是没有commit记录的,它不会生成新的commit
除非禁用,这样你看git log就会有merge的commit记录
git merge --no-ff -m "merge with no-ff" dev
git的工作流程
http://blog.csdn.net/fuchaosz/article/details/51698896
实际git 回退代码
https://blog.csdn.net/yxlshk/article/details/79944535
回退代码是生产过程中经常发生的一件事
主要有 git reset和git revert两种
主要区别在于 git revert 是相当于新的一次commit,他并不是回退到以前的一个版本,而是把之前某个版本执行逆操作,对于之前的提交的版本不受影响
-
git reset
git reset --hard commit_id
一般只有在某个版本的后续完全不想要才会使用
image.png
相当于把head指针到了回退的那个版本,如果你reset后,直接push是push不了的,因为当前的版本比较低,需要使用git push -f (即强制提交)
-
--hard和soft的区别
hard:重置索引和工作树。 自<commit>以来,工作树中跟踪文件的任何更改都将被放弃
soft:会将所有的更改放入工作区,让你可以commit到index暂存区 -
git revert
image.png
git revert其实是新建了一个commit,内容是某个版本的逆操作
实际工作从CVS转移到git
项目背景:开发环境要从cvs转到git,进行尝试
1.如果将cvs项目改为git
如果说要保留之前的cvs提交记录等,需要用cvs2svn工具
但如果不需要历史记录,则直接在本地clone一个远程仓库
在本地导入原cvs的所有数据,编写.gitignore后提交即可,这是可以看到远程仓库是干净的,再删了本地的,重新拉一份就可以了
.gitignore如果在Windows环境下,要用bash进行创建
创建内容,主要是过滤cvs/ .project .setting/ target 等文件
2.eclipse 如果要导入本地的git文件,因为仓库中没有project等,直接import maven项目即可,不需要import git-local
网友评论