以前 SVN を使用していたときにこの問題について考えたことがありましたが、その時は理解できず、バグには遭遇しませんでした。
今、Git を学習しているのですが、同じ質問があるので、質問させていただきました。
質問:
ブランチをマージするときに、競合がなければ、Git によって自動的にマージされたコードにはバグが発生しますか?
マージ中に Git によって検出される競合はすべて編集競合であるため、2 つの編集が同じ行にあるかどうか、2 つの編集に反対の操作があるかどうか (1 つは同じコードを追加し、もう 1 つは同じコードを削除する) など、明らかに Gitコード自体のロジックは気にしませんし、気にすることもできません。
したがって、マージ後にコードの正確性をチェックする必要があると思います。これは、2 つのブランチで解決された問題がマージ後に未解決の状態にあるかどうか、新しいバグが生成されていないかどうかを、マージのたびに検証することに相当します。 、そうすると仕事量が膨大になってしまいますよね?
実際に使ってみて確認してみてはいかがでしょうか?
Baidu をお持ちの場合は、同様の情報が表示されるはずです。開発はブランチ上にありますが、トランクから大きく逸脱しないようにするには、トランクからブランチに頻繁にマージする必要があります。
チームがプロセスに従えば、それほど問題はありません。
複数のユーザーが同じコードを編集すると、Git はマージ競合を報告します。これは手動で解決する必要がありますが、これは避けられません。実際の複数人によるコラボレーション プロジェクトでは、通常、全員がモジュールで開発し、同じファイルを変更する前に共通のモジュールを更新することを避けようとします。
マージ後に競合が報告されない場合は、同じコードがあまり変更されていないことを意味し、マージの正確性をチェックする必要はありません。論理的なバグを引き起こすマージされたコードについては、レビューする必要があります。
もちろん可能です。関数は a b c の 3 つのメソッドを使用する必要があります。3 人の人がその 3 つのメソッドを変更する必要があります (この場合、git はそれを競合とはみなしません)。 ; しかし、この機能が依然として 3 人が望んでいることを保証できますか?
いいえ、git merge には 2 つの状況があるためです。1 つ目は、ファイル内で同じコードが 2 人によって同時に変更された場合で、git merge は競合を報告します。手動でマージする必要があります。 2 番目: 2 人が同じファイルの異なるコード セグメントを変更した場合。 git は自動的にマージされます。バグがあるかどうかは、完全にコードを書いた人の問題です。バグはありますし、合併後も当然バグは発生します。バグはなく、マージ後もバグはなくなるでしょう。他人を責めないでください!
横になっているときに Git が撃たれて、私はコードのマージに対してのみ責任を負い、責任は負わないと言いました。 。 。 。 。 。
絶対的なものはなく、競合がなく、バグがマージできれば、勝利したとしか言えません。
これはバグとは呼ばれません、
冲突
と呼ばれます。競合の解決:他の人のバージョンを使用する
独自のバージョンを使用してください
手動マージ。
競合を回避する非常に一般的な方法は次のとおりです: 変更する前に、まず
pull
ローカル ブランチを作成して競合の可能性を減らしますそうですね、git は単なるバージョン管理ツールです。コードをマージしてバグが発生した場合、それはプロジェクト チーム自身のコードの問題であり、テスト コードを作成することで問題が解決されるはずです。
それは可能です、宝くじに当たるのと同じです