我有一个应用程序在分支上的git存储库中运行(比如dev
)。应用程序修改某些存储库中的内容并提交它们。我现在必须将这些更改合并到另一个分支(比如master
),但问题是在执行此操作之前我不想git checkout master
。有没有办法说“将当前分支合并为主”?
答案 0 :(得分:30)
您案例中的“主人”似乎是“快速转发”。你可以“推”分支到掌握。
cd /path_to_dir_with_no_branch_switch/
git push . appbranch:master
答案 1 :(得分:3)
一种可能的解决方案是克隆存储库并在所述克隆中执行合并(检出master
),从而能够解决那里的潜在冲突。
然后,在以后的日期,当能够在第一个回购中签出master
时,您将从克隆中提取更新的主分支。
答案 2 :(得分:3)
答案 3 :(得分:1)
即使你的分支不能快速转发,即使它有真正的冲突,你仍然可以在没有完整结账的情况下进行合并。假设您想将当前提示 dev
合并到 master
。值得尝试 git push . dev:master
如果您认为它可能有效,它会检查快进是否是正确的移动,如果是,那么它就在那里,但是如果您不能只是重新挂上标签,您的下一步是< /p>
git clone -nsb master . `mktemp -d`
cd $_
git reset -q
git merge origin/dev
git push
cd -
您现在已经完成了“最少结账合并”。克隆、cd 和重置运行所需的时间比在 10 年历史的中端上键入一个不小的项目(3.5G 历史,1.2G 完整检出 >70K 文件)所需的时间要少,因为它不重复任何东西。