2017-07-23 3 views
3

Gibt es eine bevorzugte Methode zum Zurücksetzen eines Teils eines früheren Commits im Sinne einer teilweisen Umwandlung nicht gestellter Änderungen (git checkout -p) und teilweise Hinzufügen nicht gestellter Änderungen (git add -p)?git selective revert (äquivalent zu `git revert --patch`)

d. H. Ich habe mehrere (oder sogar viele) commits zurück, die sowohl unerwünschte als auch unerwünschte Änderungen enthalten, und ich möchte einige dieser Änderungen selektiv rückgängig machen, während andere beibehalten werden.

Mein aktueller Workflow ist nicht Spaß:

git diff commit commit^ > selective.diff 
cp selective.diff selective2.diff 
nvim selective2.diff 
# change unwanted - to ' ' and remove unwanted +, then save 
rediff selective.diff selective2.diff | rewrite selective2.diff 
git apply selective2.diff 

und beten das Pflaster

Antwort

2
git revert --no-commit 
git reset --patch  # with `--hard` if you're sure 
2

dauert kann ich denke nur an so etwas wie

git revert commit --no-commit 
git reset # now the changes are unstaged 
git add -p 
... 
git commit 

Aber ich weiß nicht, ob es mehr ist praktikabel als Ihre Lösung.