Git(2)—特性
部分参见于 廖雪峰官方网站
- 分支管理
git checkout -b dev //建立新的分支dev HEAD指针移至dev分支,之后就是在dev进行操作 git commit -m "D" //进行一次新的提交 git checkout master //将HEAD指针移至master分支 git merge dev //将master分支向dev分支合并 git branch -d dev //删除dev分支
git checkout
命令加上-b
参数表示创建并切换,相当于以下两条命令:
$ git branch dev //创建分支 $ git checkout dev //移动指针 Switched to branch 'dev'
$ git branch //可以查看当前项目所含的所有分支 * dev master
* HEAD指针当前指向的分支
当合并之后产生冲突时,需要先解决冲突,修改文件之后再次提交,再次合并即可。
用Fast forward
模式,但这种模式下,删除分支后,会丢掉分支信息
强制禁用Fast forward
模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息
$ git merge --no-ff -m "merge with no-ff" dev
- Bug分支
git stash 可以把当前工作现场“储藏”起来,等恢复现场后继续工作
//创建另一个分支修复代码,合并到master分支后,切换回之前工作的分支
$ git stash list //查看stash内容
stash@{0}: WIP on dev: feb58f7 be_merged_finally
- git stash pop //恢复的同时把stash内容也删了
git stash apply stash@{0} //恢复后,stash内容并不删除,你需要用
git stash drop
来删除;
- 多人协作
当自己提交时比他人晚了一步,则需要先从远程拉取最新的,之后进行合并再上传
如果没有指定自己本地dev
分支与远程origin/dev
分支的链接 则会报错,需要设置,然后再拉取
错误提示提示 no tracking information
git branch --set-upstream-to=origin/dev dev
工作流程
-
首先,可以试图用
git push origin <branch-name>
推送自己的修改; -
如果推送失败,则因为远程分支比你的本地更新,需要先用
git pull
试图合并; -
如果合并有冲突,则解决冲突,并在本地提交;
-
没有冲突或者解决掉冲突后,再用
git push origin <branch-name>
推送就能成功!