cha*_*gar 1 git git-pull git-rebase
最近,由于几次错误的提交,我不得不压缩提交。简单地这样git pull --rebase origin master做对我来说是有效的,但我的队友已经在旧历史之上合并了新历史。所以我想知道是否有可能覆盖本地历史?
假设分支中有三个时间线remoteNew,localOld并且localNew有一个小时前的提交。
追随作品,用新的历史完全覆盖旧的历史。不过这里需要注意的是,oldHistory 在 newHistory 创建后没有新的提交。
git checkout localOld
git pull --rebase origin remoteNew
Run Code Online (Sandbox Code Playgroud)
以下并不如我所愿。它没有覆盖本地历史,而是创建了带有冲突的合并。
git checkout localNew
git pull --rebase origin remoteNew
Run Code Online (Sandbox Code Playgroud)
我相信这种情况发生是因为本地有新的提交。虽然我真正想要的是git push --force类似的结果,但为了拉动。另一种方法是将 master 分支替换为新分支并重命名。还有其他选项可以覆盖本地历史记录吗?
注意:想澄清一下,这是旧的存储库,但团队尚未对其进行处理,我们正处于采用 git 并在整个团队开始处理它之前完成工作流程的初始阶段。
要使用远程历史记录覆盖本地历史记录,将删除仅在本地历史记录中的所有文件。所以要小心!
git fetch --all
git reset --hard <remote>/<branch-name>
Run Code Online (Sandbox Code Playgroud)
以便与git fetch您下载最新的远程历史记录。将git reset分支重置为刚刚获取的分支。
有关更多信息,请查看类似的问题:How do Iforce "git pull" to overwrite local files?
| 归档时间: |
|
| 查看次数: |
2890 次 |
| 最近记录: |