git 分支常用命令


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