四git fetch -a (拉最新代码)
1. git fetch -a是为了将远端最新的更新拉取到本地代码仓库,因为git是分布式的,我们做的git所有操作都是在自己本地,因此在rebase之前本地需要知道远端最新的一批更新
2. 在本地某一个开发分支上进行git fetch -a操作时,本地的其他开发分支都会感受到远端主分支的最新更新,当切换分支的时候就不需要再进行git fetch -a操作,可以直接进行git rebase origin/develop
当执行 git fetch
命令时,它会执行以下操作:
- 检查远程仓库是否有新的提交或分支。
- 获取远程仓库的最新提交历史,但不会应用到当前工作目录中。
- 更新本地仓库的远程分支指针,指向远程仓库的最新提交。
通过执行 git fetch
命令,你可以获取远程仓库的最新状态,并查看分支的更新情况,以便进行后续操作,如合并、比较或重新基于最新的提交进行开发。
需要注意的是,git fetch
不会自动合并或修改你的本地代码。如果需要将远程分支的更改应用到本地分支,你可以使用 git merge
或 git rebase
命令来完成合并操作。
所以: 合并完之后,如果本地分支还没有变化,可以使用
git fetch -a 更新代码
五 git rebase
先到自己的分支,然后rebase
5.1git rebase 和 git merge 有啥区别?
rebase会把你当前分支的 commit 放到公共分支的最后面,所以叫变基。就好像你从公共分支又重新拉出来这个分支一样。
举例:如果你从 master 拉了个feature分支出来,然后你提交了几个 commit,这个时候刚好有人把他开发的东西合并到 master 了,这个时候 master 就比你拉分支的时候多了几个 commit,如果这个时候你 rebase master 的话,就会把你当前的几个 commit,放到那个人 commit 的后面。
merge 会把公共分支和你当前的commit 合并在一起,形成一个新的 commit 提交
5.2merge和rebase实际上只是用的场景不一样
更通俗的解释一波.
比如rebase,你自己开发分支一直在做,然后某一天,你想把主线的修改合到你的分支上,做一次集成,这种情况就用rebase比较好.把你的提交都放在主线修改的头上
如果用merge,脑袋上顶着一笔merge的8,你如果想回退你分支上的某个提交就很麻烦,还有一个重要的问题,rebase的话,本来我的分支是从3拉出来的,rebase完了之后,就不知道我当时是从哪儿拉出来的我的开发分支
同样的,如果你在主分支上用rebase, rebase其他分支的修改,是不是要是别人想看主分支上有什么历史,他看到的就不是完整的历史课,这个历史已经被你篡改