修改文件后Git Pull。如何避免冲突?

时间:2016-07-27 12:59:40

标签: git github

我使用Git作为独奏开发者。我最近开始将我的项目推向私人回购网站。当我创建一个新服务器时,我克隆了repo并运行我创建的任何安装脚本来启动并运行它。

安装脚本通常会对某些目录进行更改。例如,cache目录需要具有允许将文件写入其中的权限。有时我也会修改配置文件(虽然我已经开始在环境变量中添加配置文件),或者引入一些不属于项目的内容图像。

当我对这些文件进行更改时,我无法再使用git pull来提取已更改的文件。如果我因为冲突而做git pull,Git会抱怨。

我正在尝试找到一种方法,允许我从本地推送到远程,并从远程git(私有github)拉到我的服务器。

有可能吗?

4 个答案:

答案 0 :(得分:6)

执行git stash,然后将所有本地更改保留在一边,然后您就可以执行git pull。 现在您已在计算机上获取所有远程更改。 然后执行git stash apply重新应用配置更改。

答案 1 :(得分:1)

在本地存储库中进行永久性无索引/未提交的配置更改不是一个很好的方法(正如您所发现的那样)。

要解决根问题:

  • 每个环境都有一个配置文件。这可以(并且,除非它包含密码或其他机密,应该)存在于存储库中(在这种情况下,将它们捆绑在具有不同名称的/config目录中),或者可以保留在外面(然后你只会在存储库中有某种默认的配置文件,而实际上并没有执行#34;)。
  • 运行脚本时,请将它们指向正确的配置文件。例如,您可以通过使用配置文件名建立环境变量,或通过在公共位置(如/etc/opt/...)或在存储库中将符号链接作为忽略的符号链接(如config/localhost)来执行此操作。 )。无论你做什么,你的代码都会知道要选择哪个实际文件。

然后,您始终可以在任何地方提交所有更改,并且不会将来自不同环境的配置文件视为一个(由于文件名不同);没有冲突等。

答案 2 :(得分:0)

git stash

Git stash将您的更改置于Stash状态。然后你做:

git pull

然后拉出新的变化:

git stash apply

将带回您的更改。无论如何,你需要一个合并工具。我个人使用并推荐PHPStorm MergeTool,我发现它非常易于使用且具有出色的用户界面。

答案 3 :(得分:0)

从不git pull而是git fetch然后决定是否要在远程顶部合并或变基。这样,您始终可以将更改提交到本地仓库,以确保其安全。

按照你描述的方式工作的方式我将使用每台服务器的本地分支。 我会推送远程只需要你需要的更改。

因此,在服务器上,您将拥有分支proj-localproj-remote-local以及project-remote(还可以使用远程存储库中的密码保存配置文件,以使它们在当前服务器上保持安全)。您在服务器proj-local上工作,如果您想要发布到所有服务器的更改,请选择它们并在proj-remote-local之上应用,然后推送到project-remote

其他的事情是调查git ignore你想要保留在本地的东西,这会使git不关心那些事情的变化,你只会在你关心的事情上工作。