如何提取压缩的提交
How to pull squashed commit
假设我有分支机构、两个 git 客户端和 git 服务器。最初所有这些都有两个提交(a 和 b):
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 上的 project/branch,然后再次检出远程 branch/project。
这也说明了为什么您不想在已经推送提交时重写历史记录(即推送力)。
你必须在上游获取然后重置:
git fetch
git checkout <appropriate branch>
git reset --hard @{upstream}
它将在其远程副本所做的同一提交中创建所述本地分支点。
作为旁注,以防万一您可能后悔提交 a
和 b
,您也可以事先使用
进行备份
git branch <backup-name> <your-current-branch>
假设我有分支机构、两个 git 客户端和 git 服务器。最初所有这些都有两个提交(a 和 b):
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 上的 project/branch,然后再次检出远程 branch/project。 这也说明了为什么您不想在已经推送提交时重写历史记录(即推送力)。
你必须在上游获取然后重置:
git fetch
git checkout <appropriate branch>
git reset --hard @{upstream}
它将在其远程副本所做的同一提交中创建所述本地分支点。
作为旁注,以防万一您可能后悔提交 a
和 b
,您也可以事先使用
git branch <backup-name> <your-current-branch>