每次我需要用master merge develop时,我都会这样做:
git checkout master
git merge develop
有时我会忘记切换出master。因此,我在使用master时错误地对代码进行了更改。它可以是凌乱的。我已经错误地使用了master几次。
是否有一种方法可以在不先切换到master的情况下通过merge连接到master
发布于 2019-01-31 03:15:38
如果你想做一个真正的合并到master,不。真正的合并需要一个工作树,至少在潜在的情况下是这样。它还使用索引,它需要匹配操作外部的当前分支(请参阅下面的git worktree add方法)。
如果您想要执行快进操作(而不是实际的合并),这是可能的。例如:
git push . develop:master(请注意缺少+ sign或--force选项)将尝试将您的master快进到与您的develop相同的提交。使用HEAD表示当前分支:
git push . HEAD:master只有在可以进行快进的情况下,这些方法才会起作用。如果不是,您将得到一个错误的表单:
! [rejected] [name] -> master (non-fast-forward)它告诉您需要一个其分支是master的工作树,以便在其中运行git merge。
要做到这一点而不改变你当前工作树的分支,如果你的Git至少是2.5 (最好是2.15),可以使用git worktree add。例如,假设您位于存储库的顶层,位于分支feature/X上
git worktree add ../master # NB: assumes ../master is available as a directory name
cd ../master
git merge feature/X
... # do what it takes to complete the merge here
cd - # return to your main repository
rm -rf ../master # remove added worktree
git worktree prune # clean up list of added worktrees添加的工作树有它自己的索引(和它自己的HEAD),所以git merge现在有一个索引和工作树来做它的工作,或者把它的乱七八糟的东西留给你去修复,无论是实际发生的(参见kostix's comment) )。
发布于 2019-01-31 03:09:40
不是的。
我想您可以编写一个小的shell脚本来完成这三个步骤:
#!/bin/sh
set -e
git checkout master
git merge develop
git checkout develop您可能还想在最后一次结帐之前添加一个git push origin master。
发布于 2019-01-31 05:34:30
您可以尝试git-extras提供的一个名为git graft的命令。
它不是一个正确的git命令,但是git-extras提供了一系列使用git存储库的工具。
在您的情况下,git graft develop master可能会给出您想要的结果。
https://stackoverflow.com/questions/54447800
复制相似问题