2013-06-29 34 views
0

我认为使用git(用于web开发)并在lynda.com上观看了很多课程并阅读了一些博客文章。但有一个问题我找不到答案,或者不明白它是如何工作的。Git:如果我在推送前忘记更新会怎么样

我有一个Web服务器,本地服务器上的回购和本地机器上的回购。

如果我在更改本地服务器/ Web服务器(由其他团队成员更新)的同时处理该文件,该怎么办?会有警告吗?它会自动合并?它会覆盖文件吗?

例如:我编辑一些CSS和PHP文件,忘记更新我的本地文件。当我将这些文件提交到文件较新的本地服务器时会发生什么?

+0

你的意思是“拉前推”?提交仅在Git中是本地的,不会修改远程存储库中的任何内容。 – nif

+0

是的,我认为“推”不是“承诺”。对不起,这对我来说都是新的:-) – quinny

回答

1

当你在git(又名你的服务器)中推送到远程时,如果你的本地版本的分支和远程版本之间的提交顺序不是线性的,那么推送将被拒绝(永远不会-annoying“非快进”问题)。如果你想避免这样的问题,最好的办法是在推送之前确保你的服务器上有最新版本的代码。我会做的是以下几点:

在推送到远程之前: - git remote update提取所有的遥控器。 - 如果您的工作目录中有更改,git stash将暂时保存并清理您的工作目录。 - git rebase origin/master将适用mastermaster最近的共同祖先与origin/master之间的提交到origin/master和移动master分支到这个新的位置

很明显,你可以选择你的远程和分支取代originmaster。现在,当您推动时,您不必担心非快速转发问题,并且您可以确保在推送之前处理最新版本的代码。

或者,您可以对其进行设置,以便只有一名开发人员可以推送到您服务器上的分支,因此您不必担心多人推送到服务器:相反,一名开发人员管理所有更改服务器。

+0

谢谢,迈尔斯。直到现在我还没有读过很多命令。将检查他们,看看是否适合我。 – quinny

0

它不会覆盖文件。它可能只是适用于这两个更改(你和你的团队成员)。如果两者都修改了文件的相同部分,就会有冲突,您必须解决然后再次推送。

+0

谢谢! ......“会有冲突”意味着我得到一个警告,告诉我问题在哪里?就像我们两人编辑#37 - #64的行一样? – quinny

+0

Push不会合并,它只会尝试更新远程参考。即使两个更改都可以自动合并,它也会引发错误。 – nif

相关问题