私たちがアーロンと呼ぶ同僚は、長期プロジェクトとしてウェブサイトのセクションを改修するように割り当てられました。彼は、という名前の新しい Git ブランチを作成しましたaaron
。彼の変更はすべてこのブランチで行われました。彼が働いている間、私はサイト全体を維持し続け、私の変更を にコミットしましたmaster
。
最終的に、Aaron は自分のブランチを にマージしましたmaster
。master
これにより、マージ時からaaron
ブランチが最初に作成された時までに行ったすべてのコミットが何らかの形で元に戻りました。と入力git show <hash of merge commit>
すると、アーロンがブランチで作業している間に変更したすべてのファイルの差分が表示されます。これらの差分は、私が行ったすべての変更の元に戻ったことを示しています。master
Aaron が自分のブランチの各ファイルの内容を手動でコピーし、変更をコミットした場合と同じように見えます。(彼はこれをしませんでした。ログが何を示しているかを説明しようとしているだけです。)
アーロンによると、彼は何も変なことはしていません。彼はただ走ったと言いgit pull origin/aaron
ます。
何が原因でしょうか? git pull origin aaron
すべての変更を に戻した可能性はありmaster
ますか?
また、master の作業をすべて元に戻さずに、自分の変更を master に戻す簡単な方法はありますか?
編集1:
master
で変更され、マージ後に元に戻されたファイルの 1 つはfoo.txt
. だから私はこれをしました:
git checkout aaron
git log foo.txt
ログには、ブランチが作成された時点以降の変更は反映されません。ブランチのログのどこかで変更が元に戻されることを期待していましたが、そうではありませんでした。では、これは、アーロンが行ったと主張する単純な引っ張り以外の何かを行ったという最終的な証拠でしょうか?foo.txt
aaron
aaron
編集2:
私は彼がタイプorigin/aaron
したと言いましたが、彼は実際にタイプしましたorigin aaron
。上記に変更させていただきました。
編集3
以下の提案に従って、履歴を書き換えることでこれを解決することにしました。私はこの時点で、問題が衝突を解決しようとする誤った試みによって引き起こされたと確信しています。