我提交了添加了一些代碼並刪除了一些代碼的更改。現在,我想撤消這個。該文件還有其他更改(以及提交中更改的其他文件),我不想撤消該文件,因此標準的git恢復將不會執行。我想要的是創建一個提交,通過提供行號撤消這些選擇更改。最好是一種技術,允許我使用我的GUI客戶端(Github桌面)來選擇diff中的更改/行號。我會怎麼做呢?恢復Git中文件的選擇行
回答
可能有多種方式來實現這一點,但我喜歡的東西去:
# stage a reversion of the given commit without making a commit of this reversion
git revert -n <hash-of-commit-to-partially revert>
# Unstage these changes so the reversion is only in the working tree
git reset
# Selectively stage only the parts which make the reversions which you want
git add -p <path-of-interest>
# Optional: discard other changes from the working tree for testing
# (you might need to "git clean" if you are discarding the reversion
# of a change that originally removed a file)
git checkout -- .
# Commit the selective reversion
git commit
謝謝。這很可能適用於我。尤其是通過允許我有選擇地在GUI客戶端中重新添加對索引的更改。然而,我覺得有一個不同的情況,比如說,我有很多文件被更改,我想要做的就是更改一行。我必須添加除了那一行之外的所有內容。似乎效率低下。 –
@AlexBollbach:即使對於這種情況,我也可能會按照相同的程序。如果你有很多變化,並且你仍然可以將它限制在你感興趣的一個文件中,並且快速跳過你不感興趣的塊,那只是'add -p'很昂貴(在人的時間) 。 –
@AlexBollbach:這可能意味着你正在恢復的那個和當前提交之間的一些提交已經觸及相同的行你正在恢復的變化。您必須解決提交問題,但如果衝突僅影響您丟棄的回覆部分,則無需「正確」執行此操作。 –
- 1. 恢復git文件夾中的文件
- 2. git選擇性恢復文件的本地更改
- 3. git恢復選擇性更改
- 4. Git:恢復我的.gitignore中的文件
- 5. 從Git恢復文件?
- 6. git pull後恢復文件
- 7. 如何在git中恢復文件?
- 8. 從Git對象中恢復文件
- 9. 恢復刪除的文件夾git的
- 10. 恢復git的文件 '的git的復位 - 硬頭'
- 11. GIT恢復已刪除的文件夾
- 12. Git reset恢復被忽略的文件?
- 13. 使用git checkout來恢復文件 - 無論如何恢復它?
- 14. git:從提交恢復文件
- 15. 如何使用git恢復文件?
- 16. Git簽出不會恢復文件
- 17. git重置後文件未恢復--hard
- 18. 用Eclipse git恢復覆蓋文件
- 19. 從早先的git合併中恢復已恢復提交的文件
- 20. 如何恢復和修復Git中的文件更改
- 21. 創建和恢復文本選擇
- 22. 從文件中恢復Git回購「不是GIT packfile」
- 23. 在Git中,如何恢復提交之前恢復的分級文件?
- 24. 恢復NSTableView中的選擇(NSWindowRestoration)
- 25. 恢復從選定的分支git拉
- 26. JFace TreeViewer恢復選擇
- 27. jQuery - 恢復刪除的選擇選項
- 28. Git + Rails:如何恢復使用「git rm -r」刪除的文件?
- 29. 恢復壞的git的文件後的復位 - 硬命令
- 30. git rebase after git恢復
通過撤消,你的意思是創建一個類似於一個復歸承諾,只有恢復這些行的東西,做你的意思是你想擺脫原來的提交,或者你的意思是你想改變原來的提交不改變這些行,但改變所有其他的行爲呢? –
我的意思是恢復的方式。創建了一個新的提交來解除這些選定的更改。 –
如果答案有助於您解決問題,請將其標記。它會幫助其他有類似問題的人。 –