簡體   English   中英

如何重做壓縮分支上的一些選定提交

[英]How to redo squash some selected commits on branch

如何重做或撤消壓縮分支上的某些選定提交,簡而言之,我的問題是

  1. 第一次

提交是 ABCDEFG

  1. 在壓縮了一些提交之后,它們是

提交是 AB-CD-EF-G

  1. 但現在我需要重做這第二步,並像這種方式那樣壓縮提交
 commits is AB-CD-E-FG

有什么我錯了讓我糾正。 我只是想簡化我的查詢

您從1.2.對 go 所做的操作已經改寫了您的歷史記錄,因此2.中的G與 1. 中的G不具有相同的 hash 1.

重新使用你的符號:

  1. 第一次

提交是 ABCDEFG

  1. 在壓縮了一些提交之后,它們是

提交是 AB-C'-D'-EF-G'


要撤消重寫,您需要獲取原始G提交(不是G' )的 hash 。

您本地的 git 存儲庫仍應在其 reflog 中包含它:

# in the following list of commits, spot the one that would match your initial commit :
git reflog

# you will have a shorter list if you look at the reflog of your working branch :
git reflog my/branch

一旦你有了 hash:

  • 確保你有一個干凈的倉庫(如果你有本地更改:存儲它們或丟棄它們),
  • 運行git reset --hard <that hash>
  • 並重新做你的擠壓。

關於git reset --hard的強制警告

git reset --hard是為數不多的破壞性 git 命令之一:如果您的磁盤(跟蹤的文件)上有未存儲在 git 中的更改,則此命令將強制刪除這些更改,並重新設置這些文件的內容目標提交的內容。

這就是為什么建議首先查看您的本地更改,並確定您丟棄的更改並不重要。 保存它們的方法很簡單:只需創建一個提交或存儲——它們至少可以在之后從 reflog 中訪問。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM