1

私はプロジェクトの管理にgitを使用していますが、この種のプログラムの経験はあまりないため、不適切に使用することがよくあります(たとえば、1回のコミットで多くの(無関係な)変更をコミットします)。私はそれらをよりよく使用しようとしています。

ところで、私は自分のプロジェクトの拡張機能を開発し始めたことに気づきました。そのため、git guiから、マスターのコピーである新しいブランチを作成しました。ここで、マスターをプロジェクトに関連しない最後のコミットに戻したいと思います。このコミットが何であるかは知っていますが、すべてのコミットをHEADからこのコミットに戻す方法がわかりません。また、これがブランチに影響を与えるかどうかもわかりません(すべての新しい作業を失うのは本当に苦痛です) ..)

だから、どうすればいいですか?

追伸:通常、私はgit guiを使用しますが、gitbashを使用しても問題はありません。私はwin7を使用しており、EclipseでJavaAndroidプロジェクトを管理しています。

4

2 に答える 2

2

ブランチへの変更はmaster、新しいブランチの履歴には影響しません。

masterの HEAD を特定のコミットに変更する場合は、 resetを使用します。

git checkout master
git reset --hard <commit id>

イベントのシーケンスが次の場合:

  1. 大きな変化をコミットします。
  2. 新しいブランチを作成します。

master前のコミットの前に戻りたい場合は、 resetを使用します。

git checkout master
git reset --hard HEAD^

イベントのシーケンスが次の場合:

  1. 大きな変化をコミットします。
  2. 他の変更をコミットします (これは にとどまりますmaster)。
  3. 新しいブランチを作成します。

そして、他のすべてのコミットをそのまま残してbig changeからコミットを削除したい場合は、 revertを使用します。master

git checkout master
git revert <commit id>

イベントのシーケンスが次の場合:

  1. 大きな変化をコミットします。
  2. 他の変更をコミットします (これも から削除する必要がありますmaster)。
  3. 新しいブランチを作成します。

また、最近のすべてのコミットをbig changeから含めて削除するには、 resetmasterを使用します。

git checkout master
git reset --hard <big change commit id>^
于 2011-12-20T13:12:56.453 に答える
2

ブランチを作成した場合は、マスターに戻し、目的のコミットにリセットしgit reset --hard commitidます。これで、「マスター」がこのコミットに設定され、ブランチは以前に構成したコミットを指し続けます。

ブランチ名は、特定のコミットの参照または代替名です。reset を使用すると、参照が指すコミットを変更し、作業ツリーを強制的に一致させることができます ( --hard を使用)

于 2011-12-20T12:49:28.353 に答える