0

我考虑使用 git(用于 Web 开发)并在 lynda.com 上观看了很多课程,并暂时阅读了一些博客文章。但是有一个问题我找不到答案或不明白它是如何工作的。

我有一个 web 服务器,一个本地服务器上的 repo 和我本地机器上的 repo。

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

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

4

2 回答 2

1

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

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

显然,您可以用您选择的遥控器和分支替换origin和。master现在,当您推送时,您不必担心非快进问题,并且您可以确保在推送之前处理的是最新版本的代码。

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

于 2013-06-29T15:34:24.117 回答
0

它不会覆盖文件。它可能只应用两个更改(您和您的团队成员的)。如果两者都修改了文件的同一部分,则会发生冲突,您必须解决冲突然后再次推送。

于 2013-06-29T15:44:59.440 回答