【问题标题】:How to pull squashed commit [duplicate]如何拉压扁的提交[重复]
【发布时间】:2020-08-29 10:01:54
【问题描述】:

假设我有分支、两个 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

【问题讨论】:

    标签: git git-pull


    【解决方案1】:

    你必须在上游获取然后重置:

    git fetch
    git checkout <appropriate branch>
    git reset --hard @{upstream}
    

    它将在其远程副本所做的同一提交中生成所述本地分支点。

    作为旁注,以防您对提交 ab 感到后悔,您也可以事先进行备份

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

    【讨论】:

    • 太好了,谢谢。
    【解决方案2】:

    不完全是您的要求,但完成它的一种方法是删除客户端 2 上的项目/分支,然后再次签出远程分支/项目。 这也说明了为什么您不想在已推送提交时重写历史记录(即推送力)。

    【讨论】:

    • 是的,现在我用这个,但是删除分支和结帐需要更长的重建时间。
    猜你喜欢
    • 2019-01-21
    • 2018-08-14
    • 2021-03-17
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 2021-05-11
    • 1970-01-01
    • 2014-09-13
    相关资源
    最近更新 更多