マージの競合が発生すると、問題を解決するために計画外のコード変更が行われます。他の人が私と同じコード セクションで作業しているかどうかを確認し、競合が発生する前に協力することはできますか?
2 に答える
0
Git は DVCS です (D は分散化を意味します)。他の共同作業者のリポジトリのローカル コピーについての情報はありません。
中央のリモート (git サーバー) を使用していると仮定します。別の共同作業者が変更をプッシュした後にリモートからプルするときに暗黙のマージが行われ、最終的にマージの競合が発生するということです。
次のテストでは、remote は中央リポジトリ (URL の場合もあります。ここでは単なるローカル ディレクトリですが、git は気にしません)、foo はローカル コピー、bar は同僚のリポジトリです。
mkdir gitTests
cd gitTests
#Create our remote (server)
git init --bare remote
#Create a new repo in directory foo
git init foo
cd foo
echo 'a' > a
git add a
git commit -m 'First commit'
#Set the remote as our central repo and push to it
git push --set-upstream ../remote master
#Create our colleague's repo from the remote
git clone ../remote ../bar
#Colleague makes a commit, pushes to remote
cd ../bar
echo 'b' >> a
git commit a -m 'Colleague commit'
git push
#We work on the same file, creating a merge conflict
cd ../foo
echo 'c' >> a
git commit a -m 'Our conflicting commit'
git push
#We get an error, because our push is non fast-forward, we need to pull before
git pull
#Here, we get a local merge conflict
ご存じかもしれませんが、プッシュしようとしているのは競合だけです。その時点で、同僚のコミットのみがリモートにあるため、同僚をデスクに呼び出して一緒に競合を解決できます。それが完了したら、押すことができ、引っ張ることができ、問題は解決されます。
于 2014-10-12T03:07:12.390 に答える