1. ホーム
  2. git

[解決済み] git selective ローカルでの変更をファイルから戻す

2022-04-28 11:31:21

質問

svn リポジトリを追跡している私の git リポジトリで、1 つのファイルにいくつかの編集を加えました。

今、私はこれらの変更を(svn revert のように)、しかしファイルの一部だけを戻したいと思っています。

ファイルの差分を表示し、不要な変更を破棄(復帰)し、必要な変更を保持できるようにしたいのですが。

その

git add -i 

コマンドにはそのためのオプションがあるようですが、私はまだこれを実行したくありません。

どのように解決するのですか?

で直接行うことができます。 git checkout -p . 参照 Daniel Stutzbachの回答 の下にあります。


古い回答 (以前 checkout -p が導入された)。

こんな風にできるんですね。

git add -i

(残したいハンクを選択)

git commit -m "tmp"

これで、残したい変更だけをコミットし、残りはステージされていない状態になりました。

git reset --hard HEAD

この時点で、コミットされていない変更は破棄され、作業ディレクトリはきれいになり、コミットしておきたい変更が一番上にくるようになりました。

git reset --mixed HEAD^

これは最後のコミット ('tmp') を削除しますが、変更を作業ディレクトリに残し、ステージしないようにします。

EDIT: 置き換えた --soft--mixed を、ステージングエリアの清掃のために使用します。