Git分支
创建一个新的分支
git branch [分支名]
不加参数是查询分支的情况,分支前面的*代表当前所在分支
切换到其他分支
留心你的暂存区或者工作目录里,那些还没有提交的修改,它会和你即将检出的分支产生冲突从而阻止 Git 为你切换分支。切换分支的时候最好保持一个清洁的工作区域
git checkout 分支名
分支的新建与合并
从新分支回到master
- 用 git merge 分支名 命令来进行合并
遇到冲突时的分支合并
注意:如果远程数据库和本地数据库的同一个地方都发生了修改的情况下,因为无法自动判断要选用哪一个修改,所以就会发生冲突。==分割线上方是本地数据库的内容,
下方是远程数据库的编辑内容。
-
问题:只能手动合并处理代码冲突吗
目前尝试用vscode进行冲突修改
分支的管理
git branch
创建分支后仍然是再本分支进行操作,没有自动转移到新分支
-
查看各个分支最后一个提交对象的信息
- git branch -v
-
筛选出已经与当前分支合并的分支
- git branch --merge
-
筛选出尚没有与当前分支合并的分支
- git branch --no-merged
-
删除该分支
- git branch -d
-
强制删除该分支
- git branch -D
利用分支进行开发的工作流程
这些分支全部都是本地分支,这一点很重要。当你在使用分支及合并的时候,一切都是在你自己的 Git 仓库中进行的 — 完全不涉及与服务器的交互。
长期分支
特性分支
远程分支
它们是一些无法移动的本地分支;只有在 Git 进行网络交互时才会更新。远程分支就像是书签,提醒着你上次连接远程仓库时上面各分支的位置。
(远程仓库名)/(分支名) 这样的形式表示远程分支
同步远程服务器上的数据到本地
- git fetch origin
推送本地分支
-
git push (远程仓库名) (分支名)
-
远程分支的内容合并到当前分支
-
git merge origin/serverfix
如果想要一份自己的 serverfix 来开发,可以在远程分支的基础上分化出一个新的分支来
$ git checkout -b serverfix origin/serverfix
-
跟踪分支
从远程分支 checkout 出来的本地分支
在克隆仓库时,Git 通常会自动创建一个名为 master 的分支来跟踪 origin/master。这正是 git push 和 git pull 一开始就能正常工作的原因
- git pull
删除远程分支
- git push [远程名] :[分支名]
分支的衍合
分支中的修改整合到另一个分支的办法有两种
-
merge
-
rebase
-
衍合能产生一个更为整洁的提交历史
-
教程!!!!!:https://zhuanlan.zhihu.com/p/76921124
-
拉取远程代码
例:从master上pull新代码,然后跳转到自己的分支上,然后同步新代码到自己的分支 ,git rebase master
然后将分支的提交,跳转到主master上,git rebase 分支,将分支的代码同步到master,提交注意:!!!!!如果rebase出现报错,看提示,意思是手动处理差异,合并,然后提交(add) 然后执行git rebase --continue
-
-
衍合的风险
- 一旦分支中的提交对象发布到公共仓库,就千万不要对该分支进行衍合操作。
-
版本回退
git reset –hard HEAD ^
^ 表示回到上一个版本,如果需要回退到上上个版本的话,将HEAD改成HEAD^, 以此类推。那如果要回退到前100个版本,这种方法肯定不方便,我们可以使用简便命令操作:git reset –hard HEAD~100