我知道如果我想用远程仓库中的文件强行覆盖本地仓库,我会这样做:
git fetch --all
git reset --hard origin/master
问题在于,当我去看当地回购的历史时,它已经完全抹杀了历史,并用远程回购历史的副本替换了它。
有没有办法可以在保留历史记录的同时进行强制覆盖?
例如,如果我在本地仓库中有一个文件,其中包含以下内容:
- ContentA
- ContentB
- ContentC
我在远程仓库中有相同的文件,内容如下:
- ContentA
- ContentC
- ContentD
从远程仓库拉出后,我希望历史记录显示该文件:
Version #1
- ContentA
- ContentB
- ContentC
Version #2
- ContentA
- ContentC
- ContentD
我不希望它显示这个(来自强制覆盖):
Version #1
- ContentA
- ContentC
- ContentD
我也不想让它显示(来自合并):
Version #1
- ContentA
- ContentB
- ContentC
Version #2
- ContentA
- ContentB
- ContentC
- ContentD
这可能吗?
答案 0 :(得分:1)
您无法让遥控器为您执行合并。你需要进行合并,然后你推送它所拥有的东西,它只是快速转发到你的提交。因此,您需要安排提交以解决您想要的任何内容,然后推送
您可以使用--no-commit选项进行合并,然后使用git checkout --ours或git checkout --thehis选择您想要的哪一方文件,然后git添加这些文件,最后git提交结束合并,以选择您想要的文件更改。至于你想要的历史,你可以编辑实际的提交注释,如果这就是你想要的。