2011-12-16 33 views
3

我是Git的新手。我在GitHub上有一个公共回购协议,我的朋友需要同时在这个项目上工作。我们使用内置Git功能的Netbeans 7.1。我可以从克隆并提交GitHub上,但如考虑到我们有以下结构:Git&Issues about Simultaneous Teamwork

  • A.java
  • B.java
  • C.java

    1. 如果用户#1更改A.java和用户#2更改B.java,我们如何合并它们?
    2. 如果用户#1和用户#2都更改C.java,会发生什么情况?

有远程/取&远程/拉,我无法理解上的差异。我们将作为4人在学校项目上工作,我们也想学习版本控制。

回答

3

git fetch从远程git仓库中提取更改,但不会更改您是本地分支机构跟踪远程更改。 Git pull是git fetch,然后是本地副本上的git merge

一般来说,我做

git fetch 
git status 
git merge 

梅杰斯会做,就像任何其他供应链管理。如果发生冲突,您将有机会编辑/修复它们,然后您必须将更改推送到远程回购站以供其他人查看。用户也可以编辑同一个文件,这些更改不会导致冲突并且会合并。

1

拉入git等同于执行提取然后合并。

当您执行提取操作时,它只是检索更新后的存储库数据,但不会将更改合并到本地工作副本中。

在你的例子情况:

  1. Git会自动合并变为本地工作副本。由于更改是在单独的文件中(A.java & B.java),所以不会有冲突,所以git只会无缝地更新其他文件。
  2. 在这种情况下,它取决于您的更改在文件C.java中的位置与其更改的位置。
    • 如果他们在不同的地方,git会将这些修改合并在一起而不会出现问题。
    • 如果更改位于文件中的相同位置,git会将文件标记为冲突并要求您手动解决差异。
4

你需要的是一个关于git的基本教程。我喜欢这一个:git Magic

简短的回答是,git是完全建立这种需要。您只需了解它如何合并和组合来自多个用户的更改。但一旦你了解它,它就会非常出色。

+0

不错的教程btw谢谢! – Mustafa 2011-12-16 21:45:05