10

TortoiseGit を使用して (私はコマンド ラインの使用を避けようとしています)、特定のコミットから追加されたすべてのコミットを削除し、「過去に戻る」にはどうすればよいですか (使用例: 何かを続けて、どこが気に入らなかったかを考えました)行っていたので、その間のすべてを無視して「戻る」ことにしました)。

要するに、5 つのコミットを「戻し」、後で削除したいと考えています。

4

3 に答える 3

28

TortoiseGit -> Show log に移動します。保持したい最新のコミットを選択すると、上記のすべてが消去されます。次に、それを右クリックして「「マスター」をこれにリセット」を選択し、「ハード」を選択します。ただし、これを行うと、別のブランチに保存されない限り、それ以降のすべてのコミットが永久に失われるため、注意してください。

于 2011-12-09T15:42:10.203 に答える
2

Tortoise を使用したことはありません (エレクトロニカ グループを数えない限り) が、GUI でそれを行う方法が見つからない場合や、最終的に CLI を使用することに決めた場合に備えて、この情報を提供します。

@Tuxified が言及しているように、これはgit reset --hard <COMMIT>. コミットを指定する必要があります。これは、可能な方法の威圧的なパノラマのいずれかで実行できます。最も一般的な形式HEAD~4は、現在のブランチの先頭から 4 コミット前のコミットdeadbeef42を指定する と、SHA1 が 0xdeadbeef42 で始まるコミットを指定する のような形式です。Linux または OSX を実行している場合はman git-rev-parse、「SPECIFYING REVISIONS」の下の を介して、コミット指定子の詳細を取得できます。

また、現在のブランチ ( git branch -m new_branch_name) の名前を変更してから、元に戻したい場所にヘッドを持つ新しいブランチを作成することもできます。利点は、そこで行ったことのすべてまたは一部を使用したくなった場合でも、簡単にアクセスできることです。コミットをタイプミスした場合、重大な最悪の瞬間から救われます。さらに、git ブランチは非常に軽量であるため、唯一の本当の欠点は、別のブランチがリストされることです。新しいマスター ブランチを作成するには、 を使用git branch master <COMMIT>して、それをチェックアウトします。したがって、ここでの最終的な効果は最初のオプションと同じですが、ブランチに古い変更が保存されている点が異なりますnew_branch_name。必要に応じて、後で に新しいコミットを行った後で、これらの変更を元に戻すこともできmasterます。

これらの手法はどちらも「履歴の書き換え」と見なされ、リポジトリを他のユーザーと共有している場合に問題が発生することに注意してください。賢明で、クラウド シティまたは別の PC のバックアップ リポジトリにプッシュしている場合は、再度プッシュする前に、その側で問題を修正する必要があります。

これはおそらくあなたが今必要としているよりもはるかに多くの情報ですが、もしあなたが git を頻繁に使うようになったら、いつかこのことを学びたいと思うでしょう. Tortoiseの使い方が分からなくてすみません…

于 2010-03-28T00:59:59.327 に答える
0

コマンド ラインから、revert または reset コマンドを使用できます。TortoiseGit同様のコマンドがあるはずですが、おそらくコミットログを見ることでそれらにアクセスできますか?

(使っていないTortoiseGitので確認できません)

于 2010-03-28T00:22:13.073 に答える