分支管理
创捷和合并分支
自己创建属于自己的分支,别人看不到,继续在原来的分支上正常工作,而自己在自己的分支上干活,想提交就提交,等到开发完毕后,再一次性合并到原来的分支上,这样既安全,又不影响比别人工作。
Git的分支无论是创建、切换还是删除,都能在一秒内完成,十分高效。
创建并切换分支
git checkout dev //创建名为dev的分支
git checkout dev //切换到dev分支
git checkout -b dev //创建并切换到dev分支,作用同上面两条
查看当前分支
git branch //默认为master即main分支
查看所有分支
git branch -a
查看远程分支
git branch -r
切回master 分支
git checkout master
将dev 分支的工作结果合并到master 分支上
git merge dev
删除dev 分支
git branch -d dev
switch命令也可操作分支
git switch -c dev //创建并切换到新的分支dev
git switch master //切换分支为master
解决冲突
当其main分支和其他分支都有了各自新的提交时,这种情况下Git无法合并,因为可能发生冲突:
合并时会产生冲突提示:
产生冲突的文件内容里也会有一些提示:
更改文件内容消除分支后再提交,此时冲突被消除:
使用git log可以查看分支的合并情况:
git log --graph //查看分支合并图
git log --graph --pretty=oneline //简写内容
git log --graph --pretty=oneline --abbrev-commit //简写提交
最后可以删除分支了
git branch -d branch1
分支管理策略
通常,合并分支时默认为Fast forward 模式,但这种模式在删除分支后会丢失分支信息。在强制禁用该模式时,Git会在合并时生成一个新的commit ,即存了一份当前分支状态,这样,从历史中就能找到分支信息。
合并分支时强制禁用Fast forward 模式:
git merge --no-ff -m "xxx" dev
禁用ff后的分支状态:
main 分支应该是最稳定的,仅用来发布新版本,平时不会直接在该分支上面干活。所有每个人都应该在自己独有的分支上干活,有成果时再合并到main 分支上去。因为团队合作下的分支结构应该如此:
Bug分支
当主分支上出现紧急bug需要修复,但你正在操作的分支上又有任务还在进行需要暂存工作现场时,使用:
git stash
存储当前工作现场后即可切到其他分支干活了,完事后,恢复刚刚的工作现场:
git stash list //显示工作现场的列表
git stash apply //恢复工作现场
git stash drop //删除存储的工作现场
git stash pop //恢复工作现场并删除该存储
git stash apply stash@{1} //恢复到指定的stash
复制某个特定的提交到当前分支:
git cherry-pick xxxxx //只变更某个commit id的commit
强制删除某个分支
git branch -D dev
多人协作
查看远程库的信息:
git remote
git remote -v //显示更详细的信息
推送分支,即提交本地的某分支到远程库对应的远程分支上:
git push origin dev
其他人克隆远程库
git clone https://github.com/username/xxx.git
默认情况下其他人只能看到本地的main分支,如果需要在dev 分支上开发就需要在本地创建远程origin 的dev 分支,本地创建该分支后即可push 。
当你试图在某分支上进行推送时,但你的提交与其他人的已提交产生了冲突,则会导致推送失败。那么你需要先git pull 将远程的最新提交的抓下来,然后在本地合并,等解决了冲突后再进行推送。
若无法git pull ,则需要指定本地分支与远程分支的链接:
git branch --set-upsteam-to=origin/dev dev
git rebase
可以将本地未push的分叉提交整理为直线。目的是使得我们再查看历史提交时变化时更更容易,因为分叉的提交需要三方对比。
git merge与git rebase参考:
https://blog.csdn.net/michaelshare/article/details/79108233
内容参考-https://www.liaoxuefeng.com/wiki/896043488029600
|