分支管理
一、创建与合并分支
在第一次 Git 会自动生成一个 master 分支给你,master 是指向提交的,HEAD是指向 master的。所以HEAD 是指向当前分支的
master 分支是一条线,Git 用 master指向最新提交,用 HEAD 指向 master,来确定当前分支。
每次提交 master 都会向前前进一部,
创建一个 dev 分支时。Git 不仅创建了一个 dev 指针,同时改变了 HEAD 指针指向,将 HEAD 指向 dev,而 master 指针不变。
当 dev 分支工作结束,就可以将 dev 分支合并到 master,即将 master 指向 dev 的当前指针提交。
创建分支:git branch 分支名
切换分支:git checkout 分支名
创建,切换分支:git checkout -b 分支名
查看当前分支:git branch
切换到master 分支,然后合并分支:git merge dev,在合并分支前最好 git pull 一下。
在切换分支前,如果在当前分支没有 commit ,直接切换 Git 会自动将修改的部分直接带到当前切换的分支。
只有在 add,commit 之后,在切换分支,才会出现在当前分支修改,切换分支修改不见的效果。
分支可以创建也可以删除:git branch -d 分支名
冲突解决
一、制造冲突
创建一个分支:git branch feature1
切换分支:git checkout feature1
修改工作区内容,然后 add commit,提交到本地版本库。
然后切换到 master 分支上,在 feature1 分支修改的位置从新修改。
然后 add,commit ,提交到本地版本库
然后 git merge feature1 -m “” (把 commit 描述也写进去了)合并两分支,此时就会产生冲突。
因为此时 feature1 分支和 master 分支都有在相同的地方都有代码修改,同时也有提交。造成了 Git 无法合并。
Git 会用 <<<< ==== >>>> 来标记不同分支内容。
修改冲突,然后重新提交。
用 git log --graph --pretty=oneline --abbrev-commit 可以查看合并情况
Stash 暂存
git stash 可以将你现在已工作的内容暂存起来,下次取出。
git stash pop 可以将 stash 暂存的内容取出,同时删除 stash 暂存内容
git stash list 可以查看暂存的内容
每先一个需求最好创建一个分支来进行开发。
git remote -v 可以看出远程库信息
抓取分支
多人协助时,会往 master 和 dev 分支上推送各自修改。
默认情况下,只会 clone 下来时,只能看到本地的 master 分支。
现在要在 dev 分支上开发,必须创建远程的 origin 的 dev 分支到本地
可以通过:git checkout -b dev origin/dev将远程 origin 的 dev 分支创建到本地(即将本地 dev 分支 和本地 dev 分支绑定)。即可以在 dev 分支上开发和 push 到远程。
如果通过:git branch dev 创建 dev 分支,在 git pull 的时候 git 提示
通过 git branch —set-upstream-to=origin/dev dev 来将远程 dev 库和本地 dev 库关联。
之后就可以通过 git pull 操作,进行 push 也是同理,需要关联本地分支和远程分支。
一般操作情况:
1、在推送之前一般先拉取 git pull,如若有冲突解决冲突。
2、在 git push 自己本地的分支
git push 和 git pull 过程中会出现本地分支和远程分支未关联导致 push 和 pull 失败。通过上诉来关联。或根据 git 提示来操作。