web-dev-qa-db-ja.com

GitKrakenで1つのファイルを元に戻す

GitKrakenでは、コミット全体を元に戻すのではなく、1つのファイルの変更を以前のコミットに戻すことができますか?

10
Feofilakt

回答

Git感覚のrevertは、コミット時にのみ実行できます。元に戻されたコミットの変更を完全に無効にする新しいコミットが導入されています。 こちら を参照してください。 GitKrakenはこれをサポートしています:コミットを右クリックして、Revert <branch> to this commit

ただし、達成したいことはgit checkoutを介して実行できます。 GitKrakenが単一のファイルに対してこの機能をサポートしているとはまだ思っていません。ただし、コマンドラインは使用できます。

コマンドラインから単一ファイルをリセットする

git checkout <commit> <file>

以前のバージョンのファイルをチェックアウトします。これにより、作業ディレクトリにある<file><commit>からのコピーとまったく同じになり、ステージング領域に追加されます。

ドキュメントは here にあります。

したがって、git checkout HEAD~1 <filename>は、単一のファイルを現在のHEADの前のコミットにリセットします。

17
kowsky

これはGitKraken UIで実行できますが、少し回り道があります。

  • 最新のコミットをファイルが削除された場所に戻しますが、GitKrakenが戻しをすぐにコミットするかどうかを尋ねてきたら、[いいえ]をクリックします。
  • すべての変更をステージング解除
  • 復元しようとしているファイルの追加のみをステージングする
  • Unstagedを右クリックして、すべてを破棄

これにより、復元したい1つのファイルの追加のみが残ります。コミットすると、1つのファイルが返されます。

これは1つだけでなく、多数のコミットにわたって機能することに注意してください...しかし、これらのコミットのすべてからすべてをロールバックし、すべてのロールバック(1つを除く)を破棄する必要があるため、大規模な場合は非常に遅くなる可能性があります変更。このような状況では、kowskyの回答で提案されているようにgit CIを使用する方がおそらく良いでしょう。

7
Mir

最後のコミットに対してUNDOを実行して編集し、その後強制プッシュを実行して上書きすることができます。とてもうまくいく

0
Carlos Pereira