Gitには、TFSのようにファイルを「ロック」するメカニズムがありません。2人がファイルの同じ部分をアクティブに編集している場合は、競合が発生する可能性があります。
主なもの:
あなたがしていることについて同僚と話してください。可能であれば調整し、必要に応じて警告します。これは一種の歩行者のようですが、通常は本来よりも遅く発生します。 スクラムはあなたのルーチンの一部になるので素晴らしいです。
最大の要因は、変更を自分自身にどれだけ長く保持するかです。未解決の変更が長ければ長いほど、変更セットが重複する可能性が高くなります。
一緒に作業している機能に統合ブランチを作成するのは良いことです。チェックポイントを作成し、プッシュし、リベースを頻繁に行うと、修正が難しい大きな変更を加える可能性が低くなります。ただし、小さな競合は非常に簡単に処理できます。マスターにプッシュする前に、戻ってコミットの一部をクリーンアップする必要があるかもしれませんが、それは通常、調整するのに十分簡単です。
ささいなこと:
差分を調べることは、コードの一部がどのように変更されたかを理解するための素晴らしいツールです。異なるフォーマット設定間を移動する人々は、このツールを壊します。
一貫性のある形式を持つことは、これらの取るに足らない競合に役立ちます。一貫したフォーマットを選択するプロセスは別の問題です。;)
関数で作業していて、空白が正しくないことに気付いた場合は、それを修正します。同じ機能に取り組んでいる他の誰かが同じことをします。
たとえば、左インデント:
namespace foo {
namespace bar {
class Foo {
public:
void something();
};
class Foo {
public:
void something();
};
}}
namespace foo {
namespace bar {
}
}
私は個人的に、最初のセットのようにすべての名前空間を左揃えにすることを好みます。これにより、空白のノイズが最小限に抑えられます。ただし、一貫性は重要です。
タブとスペースは別のものです。理論的には、どちらを選択するかは問題ではありませんが、どちらかを選択してください。
コードの移動は避けてください(明らかに正当な理由がない場合)。これを行うのは難しいですが、各ファイルに含まれるものが少ないファイルが多い場合、これはそれほど問題にはなりません。
小さな「ハウスキーピング」の変更は、機能/バグ修正のコミットとは別にしてください。これにより、これらのコミットの変更をマージするのが非常に簡単になります。1つが機能の変更で、もう1つが空白の変更である場合、機能の変更を盲目的に行うことができます。