0

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

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

情况一:

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.

Q1:我们的本地存储库没有更新,但 github 存储库已更新。我们如何在不再次下载整个 repo 的情况下同步它?

Q2:开发人员多久更新一次本地存储库?我可能会在 20:00 更新它,但在 20:05 可能会有不同的提交。是否有更新本地存储库的实时解决方案?就像在这种情况下的保管箱一样,您进行更改并自动同步它。

情况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.

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

4

3 回答 3

2

Q1:您使用 Fetch 或 Pull 从原始存储库获取最新更改。

Q2:每次他们都必须这样做,要么是因为他们想查看原始 repo 中发生了什么,要么是因为 git 强迫他们这样做。事实上,如果你尝试推送到远程源仓库并且你的本地副本在它后面,git 会强制你首先更新你的本地副本,合并你的更改,然后再次推送。

Q3:是的,第二次推送会被拒绝。开发人员将不得不获取、合并或变基,从而解决潜在的冲突,然后推送。

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

于 2013-03-14T15:51:09.143 回答
0

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

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

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

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

您应该合并或变基以推送到远程,而不是 HEAD

于 2013-03-14T15:51:50.750 回答
0

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

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

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

于 2013-03-14T16:56:02.150 回答