版本控制工具

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:重置索引和工作树。 自以来,工作树中跟踪文件的任何更改都将被放弃
    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

你可能感兴趣的:(版本控制工具)