如何拉取压缩的提交

4
假设我有一个分支、两个 Git 客户端和一个 Git 服务器。一开始,它们都有两个提交记录 (ab):
client1:  ...--a--b
client2:  ...--a--b
server:   ...--a--b

我已经压缩了client1的最后两次提交(现在假设为c),并进行了git push --force,所以现在分支看起来是这样的:
client1: ...--c
client2: ...--a--b
server:  ...--c

这是问题:如何在“client2”上拉取这些更改? “git pull --force”想要在“client2”上合并,但我只想拉取更改,以便在“client2”的分支看起来也像:
client2: ...--c
2个回答

4
你需要从上游获取并重置:
git fetch
git checkout <appropriate branch>
git reset --hard @{upstream}

它将使本地分支指向其远程副本所指向的相同提交。

顺带提一句,以防您后悔提交ab,您也可以使用以下命令进行备份:

git branch <backup-name> <your-current-branch>

太好了,可以了,谢谢。 - fas

0

虽然不完全是你所问的,但完成它的一种方法是在客户端2上删除项目/分支,然后再次检出远程分支/项目。 这也说明了为什么在提交已经被推送后不要重写历史记录(即强制推送)。


是的,现在我使用这个,但删除分支和检出需要更长时间的重建。 - fas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接