Git&关于同步团队合作的问题

时间:2011-12-16 21:23:13

标签: git netbeans github

我是Git的新手。我在GitHub上有一个公共回购和我&我的朋友需要同时处理这个项目。我们正在使用内置Git功能的Netbeans 7.1。我可以克隆并提交给GitHub但是例如我们认为我们有以下结构:

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

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

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

3 个答案:

答案 0 :(得分:4)

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

简短的回答是,git是为了满足这种需求而构建的。您只需要了解它如何合并并组合来自多个用户的更改。但是一旦你明白它就会很出色。

答案 1 :(得分:3)

git fetch从远程git repo获取更改,但不会更改您是跟踪远程更改的本地分支。 Git pull是git fetch,后跟本地副本上的git merge

一般来说我

git fetch
git status 
git merge

合并将像任何其他SCM一样完成。如果出现冲突,您将有机会编辑/修复它们,然后您必须将更改推送到远程仓库以供其他人查看。用户还可以编辑同一个文件,这些更改不会导致冲突,只会合并。

答案 2 :(得分:1)

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

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

就你的例子而言:

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