Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 当两个开发人员处理同一个文件并提交、更新等时会发生什么_Git_Github - Fatal编程技术网

Git 当两个开发人员处理同一个文件并提交、更新等时会发生什么

Git 当两个开发人员处理同一个文件并提交、更新等时会发生什么,git,github,Git,Github,我们想和我的朋友一起启动一个开源项目并使用Git。我们知道Git,但我们只在单独工作之前使用它来分叉东西 假设我们已经创建了一个存储库 情景1: Both of us downloaded repository to our local computers to started working. I've created A.php, with a function named A() in it. Committed. My friend created B.php, with a funct

我们想和我的朋友一起启动一个开源项目并使用Git。我们知道Git,但我们只在单独工作之前使用它来分叉东西

假设我们已经创建了一个存储库

情景1:

Both of us downloaded repository to our local computers to started working.
I've created A.php, with a function named A() in it. Committed.
My friend created B.php, with a function named B() in it. Committed.
问题1:我们的本地存储库没有更新,但github存储库已经更新。我们如何在不再次下载整个回购协议的情况下进行同步

问题2:开发人员多久更新一次本地存储库?我可能会在20:00更新它,但20:05可能会有不同的提交。是否有更新本地回购协议的实时解决方案?与本例中的dropbox一样,您进行了更改,它会自动同步

情景2

Me and my friend both started working on A.php. The file currently has function A(). 
I made a function called function B(), committed.
My friend also created a function called B() too. Committed.

问题3:将会发生什么?第一个提交人是否正常提交,第二个提交人是否会收到类似“文件已更改,请再次同步文件并在之后提交”的错误?

Q1:您可以使用Fetch或Pull从原始repo获取最新更改

问题2:每次他们都必须这么做,要么是因为他们想看看原始回购协议中发生了什么,要么是因为git迫使他们这么做。事实上,如果您试图推送到远程原始回购协议,而您的本地副本在其背后,git将迫使您首先更新本地副本,合并更改的重定基础,然后再次推送

问题3:是的,第二次推送将被拒绝。开发人员必须获取、合并或重新设置基础,从而解决潜在的冲突,然后推送


我推荐阅读,它既优秀又免费。

A1。你为什么需要这个?您可以执行
git pull
将存储库的更改拉到本地。这里没有其他接收数据的方法,只有获取整个更改

A2。真的,你可以根据需要做。如果您不需要其他人的功能,则可能暂时不进行更新。如果你需要它-拉它

我总是在每一个实现的特性之后进行检查,因为许多开发人员都在处理类似的文件。我所做的更改越少,解决冲突就越容易

A3。Git不合并函数,而是合并源文件。如果一个在文件的开头添加一个(),另一个在文件的结尾添加一个(),则所有内容都将成功合并,并且将有两个A()


您应该合并或重新设置基址,以便推到远程位置,而不是您的头部。

为了响应您对指南的请求,这些指南将回答您的问题,我有一些建议。我是git新手,但我一直在esper.net上的git IRC里闲逛,吸收信息。以下是我认为最有帮助的教程/指南

  • 到目前为止我最喜欢的。非常清晰和简单的教程,引导您轻松了解git的各个方面
  • 不是最流畅的教程,但它有一个伟大的“备忘单”和许多有用的链接在底部
  • try.github.com这是github的入门教程。由于您已经在本地使用它,此链接将更好地帮助初学者
  • gitolite.com/master-toc.html一个人关于使用git的大量而密集的笔记

希望这些链接有帮助!我相信你所有的问题和更多的问题都可以通过这些教程得到解答。

Lisa你打算接受你任何问题的答案吗?@AlienWebguy我离开了一段时间。没有选择答案,我不会留下任何问题。谢谢你提醒我。