1

私はまだ Git にかなり慣れていないので、ばかげたことをお許しください。

リモート リポジトリから変更をプルする際に問題が発生しました。以前に特定のファイルに多くの変更を加えたことがあり、チーム メンバーがまったく機能しないいくつかの変更をプッシュしました。私を混乱させているのは、彼の変更が私がしたことを変更するのをどのように防ぐことができるかということです. 最後のコミットを元に戻してそこから移動するのと同じくらい簡単ですか?

4

2 に答える 2

1

git は分散バージョン管理システムであるため、使用する信頼モデルによって異なります。この場合、あなたと彼らはおそらく両方ともマスターを変更しており、あなたは両方とも(おそらく)やっていgit pull origin masterます。これを行うとき (または実際git fetchgit merge構成するもの) は、基本的に、他の人が行った変更、つまり、リポジトリへの書き込みアクセスを許可された他の人が行った変更を信頼していると言っていることになります。これがおそらく今日のあなたの場所です。
インタラクティブなリベースを行うことを検討することをお勧めします (例:git rebase -i HEAD~10)これにより、履歴のコミットを簡単に削除することもできます。最後のコミットを元に戻すのではなく、変更をコミットしてプルする必要があるため、これは以前のコミットになり、アクセスが難しくなります。ただし、rebase interactive は細心の注意を払って使用してください。そのようなことを学ぶときは、プロジェクト全体を別のディレクトリに戻すことをお勧めします。結果をコミットしてプッシュする前に、結果を注意深く調べてください。

再発しないように、今後も多くのオプションがあります。

  • 支店で働く

  • git fetch変更をマージする前に、オリジン追跡ブランチに持ち込まれた変更を最初に調べてください。

  • 変更を確認して承認する担当者を 1 人任命する

オプションの詳細については、
git branch、fork、fetch、merge、rebase、および clone の fetch merge および rebase オプションを参照してください。違いは何ですか?

于 2012-09-06T01:17:53.147 に答える
0

あなたができることは

  • コードをローカルにコミットしてからプルする
  • より良いオプションは、マージされるファイルを表示する git fetch を実行することです
  • 両方が共通のファイルで作業している可能性がありますが、別の行で作業している場合でも、競合することなく再帰的にマージされます。
  • 競合がある場合は、どちらが正しいかを考慮して解決し、解決されたファイルを再度コミットします。最後にコードをプッシュすると、変更が正常にプッシュされます。
于 2012-09-06T06:24:27.403 に答える