Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以在Git中合并而不在合并到分支上?_Git_Merge - Fatal编程技术网

是否可以在Git中合并而不在合并到分支上?

是否可以在Git中合并而不在合并到分支上?,git,merge,Git,Merge,今天我在使用Git时,发生了一些我不知道如何处理的事情 我在branchdevelopment,我做了git fetch以获取新的源代码/主代码。我想将origin/master合并到master,并最终签出更新的master。通常,我会这样做: git checkout master git pull 但是有一个问题;当前签出的分支development有一个.gitignore,其中包含许多旧的主文件没有的文件。旧的master控制了这些文件的版本。所以Git不允许我签出master,因为

今天我在使用Git时,发生了一些我不知道如何处理的事情

我在branch
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
文件。是否有办法确保合并是快进的?