是否可以在Git中合并而不在合并到分支上?
今天我在使用Git时,发生了一些我不知道如何处理的事情 我在branch是否可以在Git中合并而不在合并到分支上?,git,merge,Git,Merge,今天我在使用Git时,发生了一些我不知道如何处理的事情 我在branchdevelopment,我做了git fetch以获取新的源代码/主代码。我想将origin/master合并到master,并最终签出更新的master。通常,我会这样做: git checkout master git pull 但是有一个问题;当前签出的分支development有一个.gitignore,其中包含许多旧的主文件没有的文件。旧的master控制了这些文件的版本。所以Git不允许我签出master,因为
development
,我做了git fetch
以获取新的源代码/主代码。我想将origin/master
合并到master
,并最终签出更新的master
。通常,我会这样做:
git checkout master
git pull
但是有一个问题;当前签出的分支development
有一个.gitignore
,其中包含许多旧的主文件
没有的文件。旧的master
控制了这些文件的版本。所以Git不允许我签出master
,因为这样这些文件就会被覆盖
我不知道该怎么办,所以我只是签出了origin/master
如果有一种方法可以在不签出master
的情况下将origin/master
合并到master
,我想这会救我一命。(这是一个快进合并,所以合并失败不是一个选项。)
对此我能做些什么?完全成熟的合并需要工作树来解决冲突
如果您知道合并是快进的,那么可以使用git update ref
例如:
git update-ref -m "Fast-forward merge" refs/heads/master refs/remotes/origin/master
不要只做git update ref master
,因为它会在.git/
中创建“master”,而不是.git/refs/heads/
(refs/remotes/origin/master
可以缩写为origin/master)在这种情况下,我通常会从工作树中删除所有新忽略的文件,因此,签出
将不再覆盖它们git clean
可以帮助您实现这一点。您还可以查看签出
的-f
或-m
选项,了解其他方法。我不知道。gitignore做到了。。。您的开发分支上有未提交的更改吗?没有。[由于Stackoverflow奇怪的注释规则,此方法被人为延长了时间。]在这种情况下不起作用--这些文件很重要,我想保存它们。我可以将它们转移到一个临时文件夹中,但这会很麻烦。@酷RR,您想保存它们,但不想将其版本化,并且您已将它们从母版中的版本更改为?使用像@Vi:这样的工作流可能更安全。这不是一个实用的解决方案,我必须在许多不同的服务器上维护该脚本/别名。@cool RR,为什么?如果您基于公钥访问服务器(而不是每次都键入密码),那么它只是server1 server2 server3中i的;do scp gitffmaster${i}:/usr/local/bin/;完成
@Vi:这在共享服务器中也有效吗,我没有根访问权限?@cool RR,如果没有根访问权限,那么(前提是您已经有可用的$HOME/bin
目录),它就像server1 server2 server3中的对于I一样;do scp gitffmaster${i}:bin/;完成
。在我的系统中,.profile
如果找到,会自动将$HOME/bin
添加到路径中。您还可以为该命令分发带有别名的.gitconfig
文件。是否有办法确保合并是快进的?