Fork me on GitHub

git 分支常用命令

##<font color =deepSkyBlue>git拉取</font>
###<font color =DarkTurquoise>git拉取代码到新分支</font>
```
# 可以把远程某各分支remote_branch_name拉去到本地的branch_name下,如果没有branch_name,则会在本地新建branch_name
git fetch origin remote_branch_name:branch_ame
```
###<font color =DarkTurquoise>git pull 和fetch区别</font>
1. git fetch:相当于是从远程获取最新版本到本地,不会自动合并
```
$ git fetch origin master:tmp
$ git diff tmp
$ git merge tmp
```
- <font color =LimeGreen>首先从远程的origin的master主分支下载最新的版本到origin/master分支上</font>
- <font color =LimeGreen>然后比较本地的master分支和origin/master分支的差别</font>
- <font color =LimeGreen>最后进行合并</font>
- <font color =LimeGreen>在实际使用中,git fetch更安全一些,因为在merge前,我们可以查看更新情况,然后再决定是否合并。</font>
###<font color =DarkTurquoise>git rebase和merge区别</font>
####<font color =DarkTurquoise>git merge</font>
```
$ #将test分支合并到master分支
$ git merge test master
```
- <font color =LimeGreen>自动根据两个分支的共同祖先两个分支的最新提交 进行一个三方合并,然后将合并中修改的内容生成一个新的 commit。通过merge合并分支会新增一个merge commit,然后将两个分支的历史联系起来,其实是一种非破坏性的操作,对现有分支不会以任何方式被更改,但是会导致历史记录相对复杂</font>
####<font color =DarkTurquoise>git rebase</font>
```
$ git checkout experiment
$ git rebase master
```
- <font color =LimeGreen>它的原理是首先找到这两个分支(即当前分支 experiment、rebase操作的目标基底分支 master)的最近共同祖先 C2,然后对比当前分支相对于该祖先的历次提交,提取相应的修改并存为临时文件,然后将当前分支指向目标基底 C3, 最后以此将之前另存为临时文件的修改依序应用。</font>
- <font color =LimeGreen>rebase会将整个分支移动到另一个分支上,有效地整合了所有分支上的提交,主要的好处是历史记录更加清晰,是在原有提交的基础上将差异内容反映进去,消除了 git merge所需的不必要的合并提交,总的原则是,只对尚未推送或分享给别人的本地修改执行rebase操作清理历史,从不对已推送至别处的提交执行rebase操作,这样,你才能享受到两种方式带来的便利。</font>

##<font color =deepSkyBlue>参考链接</font>
[https://www.yiibai.com/git/git_pull.html](https://www.yiibai.com/git/git_pull.html)
[https://www.cnblogs.com/chenny7/p/7644318.html](https://www.cnblogs.com/chenny7/p/7644318.html)
posted @ 2022-03-18 18:00  bugMaker-java  阅读(28)  评论(0编辑  收藏  举报