web-dev-qa-db-ja.com

Gitkrakenの以前のコミットに戻る

私のプログラミングパートナーと私は、GitとGitkrakenにかなり慣れていないため、いくつかの間違いを犯し、プッシュとプルとコミットを間違った順序で実行し、かなり混乱させました。いくつかのコミットからスナップショットを取得し、手動でコードの現在の状態と比較したいと思います。に沿ったコマンド

"作業ディレクトリの状態をthis履歴コミットにする"またはそれ以上に、 "this履歴コミットの内容を別の作業ディレクトリに入れてください。これを名前にします"

私に与えられたオプションは、そのようには見えません。 「マスターをこのコミットにリセット」はいくつかのフレーバーで見られますが、これらのタイトルのどれも、現在の状態へのパスを損傷することなく、以前の状態を確認できることを納得させるものではありません。何か不足していますか?私がやろうとしていることをするための最良の方法は何ですか?

5
Joymaker

git reflogを使用することをお勧めします。このコマンドには、コミットと変更のローカル履歴が含まれます。このログを使用すると、ローカルリポジトリのすべてのイベントが表示されます。

リカバリする正確なコミットを見つけたら、git reset --soft HEAD@{n}を使用してそのコミットを開始点として設定できます。

--softの機能

Does not touch the index file or the working tree at all (but resets the 
head to <commit>, just like all modes do). This leaves all your changed
files "Changes to be committed", as git status would put it.

この後、すべての変更がステージ領域に反映され、それらを再度コミットするか何かを変更するかを決定できます。

thisGitの本 のセクションを読み、特に、元に戻すことについて this のセクションを読むことをお勧めします。

PS。追加として、使用するすべてのコマンドがgit resetに保存されているため、git reflogを何度でも使用できます。 、元に戻すこともできます。

それが役に立てば幸い

...しかし、これらのタイトルのどれも、現在の状態に戻るパスを損傷することなく、以前の状態を見ることができると私に納得させる...

まず、いつでも戻ることができます。 GitKrakenには便利な元に戻すボタンがあり、簡単なボタンをクリックすると、ほとんどの操作を元に戻すことができます。簡単に戻ることができるようにしたい場合は、backupブランチを作成するだけです。うまくいかない場合は、確認してください。

したがって、何かを壊すことを心配する必要なく、リラックスして物事を試すことができます。ここでの質問は、あなたが実際に何をしたいかです:

  • 「作業ディレクトリの状態をこの歴史的なコミットにする」

    以前の状態(つまり、コミット)に戻したいだけの場合は、reset <branch> to this commit - hard。何も起こらなかったかのように、選択したコミットに戻ります。以前の状態がどのブランチからも到達可能な場合(これはバックアップブランチを作成した場合に当てはまります)、引き続きすべてのコミットとその変更を確認できます。

    ハードリセットを実行すると、ステージングされていないコミットされていない変更が失われることに注意してください。

  • 「この歴史的なコミットの内容を、別の作業ディレクトリに名前を付けてください。名前を付けます」

    Gitは1つの作業ディレクトリしか認識しないため、これを直接行うことはできません。ただし、@ ChristopherDíazRiverosが提案した方法で、現在の状態を以前の状態と比較することができます。 hardリセットの代わりに、softリセットを実行できます。これにより、作業ディレクトリが選択したコミットにリセットされますが、すべての変更(以前の状態と比較)は段階的な変更として保持されます。これにより、GitKrakenの右下に表示され、必要に応じて破棄またはコミットできるため、簡単に確認できます。

2
kowsky