我使用Git作为独奏开发者。我最近开始将我的项目推向私人回购网站。当我创建一个新服务器时,我克隆了repo并运行我创建的任何安装脚本来启动并运行它。
安装脚本通常会对某些目录进行更改。例如,cache
目录需要具有允许将文件写入其中的权限。有时我也会修改配置文件(虽然我已经开始在环境变量中添加配置文件),或者引入一些不属于项目的内容图像。
当我对这些文件进行更改时,我无法再使用git pull
来提取已更改的文件。如果我因为冲突而做git pull
,Git会抱怨。
我正在尝试找到一种方法,允许我从本地推送到远程,并从远程git(私有github)拉到我的服务器。
有可能吗?
答案 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-local
和proj-remote-local
以及project-remote
(还可以使用远程存储库中的密码保存配置文件,以使它们在当前服务器上保持安全)。您在服务器proj-local
上工作,如果您想要发布到所有服务器的更改,请选择它们并在proj-remote-local
之上应用,然后推送到project-remote
。
其他的事情是调查git ignore
你想要保留在本地的东西,这会使git不关心那些事情的变化,你只会在你关心的事情上工作。