2014-10-12 2 views
0

При возникновении конфликта слияния происходит непреднамеренное изменение кода для решения проблемы. Могу ли я проверить, работает ли другой человек в том же разделе кода, что и я, и сотрудничать до возникновения конфликта?есть проверка в git, чтобы избежать работы с одним и тем же фрагментом кода и избежать более позднего конфликта.

ответ

3

Git только узнает, что кто-то другой изменил репозиторий, когда вы спрашиваете его, произошли ли изменения или если вы пытаетесь его изменить. Короче говоря: нет. Однако общение с вашей командой за пределами git возможно. Желательно, даже.

0

Git - это DVCS (где D означает децентрализованное). Нет никакой информации о локальном копировании репозитория других соавторов.

Я предполагаю, что вы используете центральный пульт (git-сервер), и что вы имеете в виду, что неявное слияние, когда вы вытаскиваете из своего пульта после того, как другой соавтор нажал их изменения, приводит к конфликту слияния на вашем конце.

В следующем тесте remote - это ваш центральный репозиторий (это может быть URL-адрес, здесь это только локальный каталог, но git не волнует), foo - это ваша локальная копия и панель - ваш коллега.

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 

Как вы, возможно, поняли, существует только конфликт, который вы пытаетесь протолкнуть. В этот момент на пульте отправляется только сообщение вашего коллеги, и вы можете позвонить им на свой стол, чтобы разрешить конфликт вместе. Как только это будет сделано, вы можете нажать, они тянут, и проблема решена.

+0

Благодарим вас за ответ, мне потребуется немного времени для работы – rustystylus