作業ディレクトリのファイルへの変更を部分的に取り消すコマンドがありますか?Gitのファイルを選択的に元に戻したり、チェックアウトしたりしますか?
ファイルをたくさん編集したとしますが、変更の一部をコミットされた状態に元に戻したいが、他の変更は元に戻したくないとわかっているとします。
git add -p
とよく似た働きをするオプションが考えられています。つまり、ファイルをハンクで処理し、保持したいかどうかを尋ねます。
作業ディレクトリのファイルへの変更を部分的に取り消すコマンドがありますか?Gitのファイルを選択的に元に戻したり、チェックアウトしたりしますか?
ファイルをたくさん編集したとしますが、変更の一部をコミットされた状態に元に戻したいが、他の変更は元に戻したくないとわかっているとします。
git add -p
とよく似た働きをするオプションが考えられています。つまり、ファイルをハンクで処理し、保持したいかどうかを尋ねます。
あなたが維持したくなかった作業ツリーの変更を破棄し、その後、
git checkout -- <path>
を使用すると、特定のファイルに保存しておきたいチャンクをステージングする
git add -p <path>
を使用することができますファイルのステージングされたバージョンをチェックアウトしてください。
最後に、あなたはあなたの変更unstagedであなたを残すために、ファイルの最新コミットバージョンにファイルの段階的なバージョンを元に戻す
git reset -- <path>
を使用することができます。 Gitのバージョンで
git checkout $file
は、ファイル$file
の状態を最後に確定した状態に戻します。私はgit checkout SHA-1 -- $file
を使ってファイルをSHA-1によって識別されるコミットに戻すことができると思います。
私がファイル内で行った変更の一部を保存して他のものを元に戻したいので、正確には私が望むものではありません –
戻って選択する必要があるコミットはいくつですか?それがちょうど1つの場合は、その直前にブランチを作成し、コミットしたファイルをチェックアウトしてから、git add -p
を使用して追加します。次に、あなたがいた場所に戻り、あなたの一時支店からファイルをチェックアウトすることができます。
です:
git checkout -b temp troublesome-commit^
git checkout troublesome-commit -- path/to/file
git add -p path/to/file
git commit -c troublesome-commit
git checkout @{-1}
git checkout temp -- path/to/file
git commit path/to/file
git branch -D temp
他の選択肢は戻ってと(当時git reset HEAD^
を行うと、バックシェルに落ちたときにコミットやり直し、edit
としてコミットマーキング)git rebase -i
にコミット編集を含んでいます。
あなたが選択しなければならない変更が一連のコミットに広がっている場合は、それらをパッチ(またはそのすべてをカバーするパッチ)として抽出し、パッチを手動で編集して残しておきたい残渣をgit apply --reverse
に送ります。
私は実際にコミットされたものを元に戻したくないのですが、私の作業コピーにのみあります –
私はこれが私が感謝のために探していると思います –
他のすべてのバージョン管理システムが単に "復帰"と呼ぶこの単純なユースケースでは、なぜGitコマンドがあいまいであるのですか? –
@Jan他のバージョン管理システムの 'revert'コマンドでは、ファイル内のどの変更を元に戻すことができますか?私はCVSとGitの経験しかないので、真剣に尋ねます。 Gitでは 'git checkout-path/to/file'はそのファイルのすべての変更を元に戻すコマンドですが、これは上記とは異なります。 – spacemanaki