簡體   English   中英

可以應用2次提交中的所有更改文件嗎?

[英]Possible to apply all changed files from 2 commits?

我有2次提交(A和B),我想恢復代碼以提交A,但是我想將提交B中所有更改的文件應用到提交A。

可能嗎?

是的,有可能; 但是有一兩個警告。

如果您已將提交A或B發布到共享存儲庫,則這樣做將給其他用戶帶來麻煩。 如果您在A或B的“下游”有其他提交,則需要進行額外的工作以使所有內容保持一致。 由於git存儲信息的方式,在任何一種情況下修改提交本質上都是破壞性的。

但是,如果兩者都不是,則使用git rebase相當簡單。 就像是

git rebase --interactive A^

這將顯示一個帶有基准“待辦事項”列表的編輯器,以及有關如何編輯待辦事項列表的說明。 您將把B的指示從拾取改為壁球或固定。

一種選擇是重置為在提交A之前提交並再次提交。 請記住,您需要在此處進行軟重置。

假設您具有這種提交層次結構

         HEAD
          |
N -> A -> B
  • 將HEAD移至N點git reset --soft HEAD~2
  • 它將所有提交A和B中的更改都添加到索引中,運行git status
  • 創建一個將同時更改A和B提交的新提交。

如果您已將工作推送到遠程倉庫,則可能需要force push才能將更改推送到遠程倉庫。

請記住:強行將更改推到遠程將覆蓋您在遠程倉庫中的工作。 小心。

git reset HEAD^^                 // reset to front HEAD contain A and B's source
git add .                        // add A and B's source to new commit
git commit -m "A message"        // commit A and B's source and add commit message

首先通過以下方式找出在特定提交(供參考)中修改的文件:

git show --pretty="" --name-only COMMIT_ID 

要還原任何特定的提交ID,請使用:

git revert COMMIT_ID

暫無
暫無

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

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