eclipse git confusions:如何合并&推?

时间:2012-08-20 22:39:05

标签: eclipse git egit

我似乎永远无法弄清楚如何使用git。我只是做随机命令,它最终起作用。这就是我想要推动时通常做的事情:

  • 从上游获取

  • 提交

  • 推送到上游

但是,上述步骤有时无效。例如,当我从上游获取时,我的本地分支不会更新。

如何将远程分支合并到我的本地分支? pull和fetch有区别吗?

3 个答案:

答案 0 :(得分:4)

“git pull”相当于“git fetch”,后跟“git merge”

您想要做的是:

git commit -am "your message here"

这会在本地提交您当前的更改,并且仅在本地提交。现在,假设分支“foo”:

git pull origin foo

这是“git fetch”后跟“git merge”。此步骤中的所有内容都将完成到您的本地分支,但仍然对远程分支没有影响。根据git的设置方式,您可能需要指定分支。

如果您遇到合并冲突,则必须修复列出的文件,然后重新添加:

git add path/to/resolved.file

完成后,将您拥有的所有内容从本地更改推送到远程服务器:

git push origin foo

如果在提交之前提取,则可能导致您的本地分支无法更新。

tl;博士,在拉之前总是提交!

答案 1 :(得分:2)

很好理解git fetch和git pull look here之间的差异。

  

用最简单的术语来说,“git pull”执行“git fetch”后跟a   “git merge”。

     

您可以随时进行“git fetch”更新本地副本   远程分支。此操作永远不会更改您自己的任何分支   并且在不更改工作副本的情况下可以安全地完成。我甚至   听说人们在一个cron工作中定期运行“git fetch”   背景(虽然我不建议这样做)。

在eclipse中使用git可能有点棘手,但是如果你理解git基础知识,你就应该应对它。我建议你阅读一个git tutorials,这样你就能理解基本的git操作。

答案 2 :(得分:1)

学习git的第一步:不要使用egit。

现在,你正从上游获取和拉动。这让我觉得有几个人对同一个存储库有写访问权限,所以我们可能不希望进行大量的合并来使历史复杂化。最好这样做。我假设您已经对您要放置在master存储库的本地upstream分支机构进行了更改或一组更改,而这些更改已被其他人推送到您提交。

首先,我们获取新的更改但尚未使用它们。这会将upstream/master更新为上游master分支的新负责人。

git fetch upstream master

现在,我们需要引入这些变化。这个命令重写历史,我们假设 您尚未在任何地方发布更改。

git rebase upstream/master master

如果你已经发布了你的更改,那么你应该使用这个更混乱的命令(不要同时使用它们,只需使用这个!)

git merge upstream/master master

现在,我们可以推动:

git push upstream master

对于git pull --rebasegit pull版本,前两个步骤可分别缩短为rebasemerge

如果您已经在master分支上,那么大多数第二个参数都是多余的,但为了清楚起见,我写了它们。值得注意的是,给git-rebasegit-merge提供第二个参数只会在执行操作之前检查该分支。只有在您没有将参考设置为自动提取和推送主服务器时,才需要将master提供给fetchpush