0

当发生合并冲突时,会发生计划外的代码更改来解决问题。我可以检查其他人是否与我在同一段代码上工作并在冲突发生之前进行合作吗?

4

2 回答 2

3

只有当您询问是否有更改,或者您尝试更改它时,Git 才会发现其他人更改了存储库。简而言之:不。不过,您可以在 git 之外与您的团队进行交流。可取的,甚至。

于 2014-10-12T02:44:40.983 回答
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 回答