0

私の友人はプロジェクトの一部に取り組んでおり、私は別の部分に取り組んでいます。

私の友人は、コードレビューされていないコードをコミットしました。これを元に戻す必要があります。しかし、私は彼が彼の仕事を失うことも望んでいません。

基本的に、私は約 20 分の時間をさかのぼりたいと思っています。私は彼のマシンにすべての変更を加えてもらいたいのですが、マスター ブランチにはこれらの変更を加えないようにしたいと考えています。

これを行う最善の方法は何ですか?私は git reset --hard を実行することを懸念しています - それは永続的であることがわかりました。これを実行すると、友人が git pull を実行したときに友人のコンピューター上のファイルが消去されるのではないかと心配しています。

4

5 に答える 5

0

これが私がすることです。 git branch not_code_reviewed_yet。これにより、友達の変更を含むブランチが作成されるため、後で友達に戻ることができます。 git reset --hard <commit you want master to go back to>。これにより、友達が変更する前にマスターをコミットに戻す必要があります。バージョングラフは次のようになります。

A
 \-B-C-D

AがマスターでDがnot_code_reviewed_yet

于 2012-07-16T17:24:12.373 に答える
0

これを試して

git reset HEAD^^^

^元に戻したいコミットごとに 1 つ追加します。

于 2012-07-14T00:41:09.457 に答える
0

私がすることは次のとおりです。

git log

戻りたいコミットのチェックサム (例: 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7) をコピーしてから、チェックアウトを実行します。これにより、作業ツリーが過去のバージョンで更新されます。

git checkout 085bb3

作業ファイルを別のディレクトリにコピーする必要があります (現在、作業ツリーの下にはありません)。

次に、マスター/メインブランチに戻ります

git checkout master

これで作業ツリーに戻りました。

于 2012-07-14T02:32:32.127 に答える
0

これには git revert をお勧めします。Revert は、元に戻されたコミットを元に戻す新しいコミットを作成します。これは、元のコミットがそのままであることを意味し、それ以降に発生したすべてのコミットではなく、問題のあるコミットのみを削除するという利点もあります。したがって、削除したいコミットが xxxxx の場合は、次のようにするだけです。

git revert xxxxx

デフォルトでは、コミットメッセージは他の人にそれが元に戻されたことを伝え、元のコミット ID を表示するので、誰もが元に戻されたコミットを簡単に見つけることができます。

于 2012-07-14T05:53:27.290 に答える
0

まず第一に、誤って永久に削除してしまったとしても、Git はデフォルトで削除されたアイテムの記録を数週間保持するので、おそらく復元することができます。これは、ある時点でコミットまたは隠蔽された変更にのみ適用されることに注意してください。

次に、変更を別のブランチに移動し、そのブランチでリモートをチェックアウトしない場合、プルを実行してもファイルは削除されません。または、彼は単にフェッチを行い、チェリーピックの変更を行います.

とにかく、私はこれを個人的に試したことはありませんが、あなたが望むコマンドは

git reset --soft HEAD~3

これにより、作業ツリーに新しいファイルを残しながら、ヘッドの位置が 3 コミット前に変更されます。

于 2012-07-14T00:32:01.217 に答える