git 分支管理(Linux)

分支管理

1.合并与删除分支

例如:分支master  dev

1. 新建一个分支 $git branch dev

2. 切换分支 $git checkour dev

3. (1,2)可以合并为 $git checkout -b dev

4. 查看当前分支$git branch

*dev

branch  (会列出所有分支,在当前分支前有*)

5. 对文件做一些修改,然后提交。(当前分支为dev

6. 切换回master分支$git checkout master

7. master分支上可以看到对文件所做的修改不存在。

8. dev分支工作成果合并到master$git merge dev   merge命令用于将指定分支合并到当前分支

9. 合并后可以删除dev分支 $git branch -d dev

10. 删除后查看branch ,只剩下master分支了。

查看分支(本地) git branch    git branch -r(远程) git branch -a(本地和远程)

创建分支 git branch 分支名

删除分支(本地) git branch -d 分支名   

删除远程分支 

$ git push origin --delete [branch-name]

$ git branch -dr [remote/branch]

切换分支 git checkout 分支名

创建+切换 git checkout -b 分支名

分支合并到当前分支 git merge 分支名

2. 解决冲突

新建一个分支feature1

f分支里将test.py 文件修改,提交

切回master分支,修改test.py,提交

 

使用merge  $git merge feature1 合并

快速合并发生冲突

 

进行修改后,保存再提交。

 

git 无法自动合并分支时,必须先解决冲突,再提交,合并完成

git log --graph 命令可以看到分支合并图。

 

 

3. 分支管理策略

fast foeward 模式,在删除分支后,会丢掉分支信息

禁用ff模式后,提交时会产生一个commit信息,这样从分支历史上可以查看出历史信息

1.新建一个dev分支,修改文件并提交。

2.切换回master分支

3.合并分支$git merge --no-ff -m”merge dev master”  dev

4.这样可以用 git log 查看历史  $git log --graph  --pretty=oneline   --abbrev-commit

 

3.1分支策略

开发过程中,每个人都有自己的分支,自己提交到dev分支中。版本发布时,再将dev提交到master

 

4. Bug分支

1.要创建一个新的分支修改一个bug ,但当前分支没有提交。

2.$git stash 将当前分支(dev)‘隐藏’起来,等恢复现场后继续工作。

3.确定要在哪个分支上修复,(当前在dev分支工作)假定在master分支上建立临时分支

 $git checkout master

 $git checkout -b issue-001

4. 现在修改bug,然后提交

5. 完成后切回mastermerge合并。$git merge --no-ff -m “merge in master” 

删除issue-001分支

6. 修复完bug,回到dev分支

7. 刚才工作现场‘隐藏’到哪去了。用$git stash list 还在,只是存在某个地方了

8. 两种恢复方法$git stash apply 但恢复后stash内容不删除,你可以用$git stash drop 删除

9. $git stash pop 恢复的同时把stash内容删除了

10. 你可以多次stash ,恢复时先用git stash list 查看,再恢复指定stash $git stash apply stash@{0}

11. 

5. Feature 分支

开发一个新功能,在feature-vulcan分支上

1. 新建$git checkout -b feature-vulcan  开发完后提交。切回dev,准备合并,删除

2. 突然改计划,销毁此分支

3. $git checkout -d feature-vulcan  Git提示失败,因为还没有合并,若删除将丢掉修改。

4. 强制删除$git branch -D feature-vulcan

6. 多人合作

查看远程库信息$git remote

$git remote -v   (可以看到详细的抓取和推送的origin地址)

$git remote remove 库名  (删除本地库)

6.1推送分支  

$git push -u 本地库(可选) 本地分支(可选)

例:$git push -u origin master

 master:主分支

 dev:工作分支

 bug:不用提交,在本地修改

 feature:是否提交取决于,是否和小伙伴合作在上面开发

6.2抓取分支

现在模拟一个新的电脑(注意要把SSH key添加到github中),或在同一个电脑的另一个目录克隆

$git clone [email protected]:123lxy/Desktop.git

默认情况下克隆后只能看到master分支

1. 现在要在新的dev分支上开发

创建$git checkout -b dev origin/dev

现在可以在dev分支上修改,提交,push

2. 其他人已经修改,将origin/dev 分支推送了提交,碰巧我也对文件做了修改,并试图push

失败了,因为冲突。

git pull 把最新的提交从origin/dev抓下来,然后在本地合并,解决冲突,再推送。

3. git pull失败了因为没有指定本地dev与远程origin/dev的链接

 $git branch --set-upstream dev origin/dev

 pull,成功了。

4. 但合并有冲突,需要手动解决和 六(2)解决冲突一致。

5. 解决后,提交,push

 

1.$git remote -v 查看远程库信息

2.本地推送git push origin branch-name ,失败就git pull抓取远程新提交

3.在本地创建和远程对应的的分支git checkout -b branch-name origin/branch-name(本地和远程名最好一致)

4.建立本地分支和远程分支的关联git branch --set-upstream branch-name origin/branch-name

5.从远程抓取分支用git pull ,若有冲突,先处理冲突


猜你喜欢

转载自blog.csdn.net/lxy_python/article/details/80372181