四:分支管理

来源:互联网 发布:c语言编程技巧 编辑:程序博客网 时间:2024/06/16 02:27

可以创建一个属于自己的分支,别人看不到的,别人在在原来的分支上工作,你在自己的分支上工作,想什么时候提交就什么时候提交,在一次性合并到原来的分支上。

一.创建和合并分支

**分支名指向的是最新的提交,HEAD指向的就是当前分支名


1.git checkout命令加上-b参数表示创建并切换

git checkout -b dev(分支名)

2.或者如下:

git branch dev(分支名)---创建分支

git checkout dev               ---切换分支

3.以下命令查看当前分支

git branch(当前分支前会标有一个*号)

4.切换分支,并进行修改

git checkout master

5.合并,git merge命令用于合并指定分支到当前分支

git merge dev

6.删除分支

git branch -d dev


冲突管理:

1.在新分支dev上修改了read.txt文件,并提交

2.在master分支上也修改了read.txt文件,并提交

如果在master主分支上运行git merger dev会报冲突的警告,提示需要自行解决冲突内容(意思根据提示自己合并代码)

在master分支上解决了冲突内容后,重新add和commit该文件

git add file_name

git commit -m "xxxxx"

此时,master和dev分支就合并在一起了。

3.用带参数的git log可以看到分支的合并情况

git log --graph --pretty=oneline --abbrev-commit


分支管理策略:

合并分支时,如果可能,Git会用fast forward模式,但在这种模式下,删除分支后,会丢掉分支信息

1.在master分支上合并dev分支,请注意--no-ff参数(普通模式合并),表示禁用fast forword

git merge --no-ff -m "meger with no-ff" dev(本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去)


在实际开发中,应注意以下几点:

master分支应该是非常稳定的,也就是只用来发布新版本,平时不能在上面工作,尽量工作在其他分支,然后进行合并

合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出曾经做过合并,而fast forward合并就看不出曾经做过合并


*(需要临时修改一个bug的时候)有时候会遇到一种情况,正在当前分支工作,工作到一半,还没有完成,此时必须前去修复一个bug

Git提供一个stash功能,可以把当前的工作现场存储起来,等以后恢复现场后继续工作。

因为如果你在dev分支,工作区已有修改记录,此时git checkout 分支的话,是不成功的,无法切换。

1.必须先存储当前修改过的工作区,命令:git stash 

2.在切换去到需要修改bug的分支,例如master分支,git checkout master

3.再创建修改Bug的分支,例如:git checkout -b issue-01

4.修改bug后,回到Master分支,进行合并 git merge --no-f -m "merged bug fix 01" issue-01

5.此时回到dev工作区,用git status提示工作区干净,那么刚刚工作现场去哪里了呢,用以下命令可以查看

git stash list 

6.如果需要回到之前的工作现场,执行以下命令

a.git stash apply stash@{0}

    git stash drop

b.git stash pop : 恢复同时删除stash内容


*当手头工作没有完成时,先把工作现场git stash一下,然后去修改bug,修复后,再git stash pop,再回到工作现场


feature分支

如果一个新的分支,在修改后,突然说不需要该分支的修改了,就要删除该分支

如果执行git branch -d 分支名,  此时会报错,无法删除该分支,因为该分支没有被merge,如果删除将会丢失修改

强行删除的话,需要适用命令:git branch -D 分支名


*每开发一个新功能时候,最好新建一个分支


多人协作

*.git remote -v 能查看远程库的详细信息,显示可以抓去和推送的origin的地址(origin是远程仓库的默认名)

*.推送指定的分支,git就会把该分支推送到远程仓库对应的远程分支上:

git push origin 分支名

存在如下情况:

1.假如有一个同事在他自己本地dev分支修改了file1文件,并push上了github的dev分支。

git checkout -b dev origin/dev  若想在dev分支上开发,必须创建远程origin的dev分支到本地

修改并提交file1文件后

git push origin dev  

2.与此同时,同事已经修改好了,并提交至github的dev分支,你也刚好修改了dev分支下的file1文件,当你尝试push的时候会发生推送错误

因为同事的最新提交和你试图提交的有冲突。

git push origin dev

可以先尝试git pull把最新的提交从origin/dev抓下来,在本地合并,解决冲突,再推送

如果git pull 也失败,原因是没有指定本地dev分支与远程origin/dev分支的链接,运行如下命令:

git branch --set-upstream dev origin/dev

git pull

git pull成功后,但是合并有冲突,需要手动解决,解决方法和解决冲突一样,解决后,提交,在Push

git add file1

git commit -m "xxxxx"

git push origin dev








原创粉丝点击