我目前有一个项目,它包含更多的分支。主分支还没有合并很久。所以我想用最新的代码切换到master。
你能给我一些必要的命令和步骤吗?
让我重新定义我的问题。
我在一个项目与不同的分支工作。最新的改动是在master以外的某个分支上。现在我的要求是:是否有一种方法可以将当前工作分支移动到master而不与master合并,以避免冲突?
如果您希望在master中拥有与other_branch完全相同的文件状态并保存历史记录-执行以下操作(并注意末尾的句号):
git checkout master
git checkout other_branch .
现在您将在当前主中拥有other_branch的完整副本(它比reset
软),但尚未提交。然后定期提交:
git add --all
git commit -m "* copy other_branch to master working tree"
注意:other_branch中的未跟踪(未索引)文件(目录)将保留,如果它们没有被master跟踪。删除未跟踪的文件(目录):
git clean -fd
参见如何从当前Git工作树中删除本地(未跟踪的)文件?
是否要将'develop'分支合并到master中?
git checkout master
git merge develop
或者您想要将master中的变更合并到您的开发分支中?
git checkout develop
git merge master
首先,我会尝试将其合并到master
,看看是否真的有很多冲突- git的合并只在标记真正的冲突方面很好。如果你在开始之前确保你的git status
是干净的,并且你发现有太多的冲突需要处理,你可以返回:
git reset --merge
但是,如果您只想使当前的master
与其他分支相同,则可以使用:
git checkout master
git reset --hard other-branch
然而,这通常是一个坏主意,因为:
- 你在扔掉主分支上的所有工作。也许你以后会想知道这段历史?(你可以事先用
- 你正在重写
master
分支的历史,所以如果你曾经和任何人分享过这个分支,结果会让你们两个都感到困惑。 -
git reset --hard
应该谨慎使用,因为它会丢弃所有未提交的更改。
git branch old-master master
"备份"你的主分支)如果我没理解错的话,您是不想将更改合并回master,而只是将master重置为指向当前签出分支中的最新提交?为此,使用:
git branch -f master
您需要将当前分支合并到主分支中。我的做法是:
1) git fetch origin # get all branches from server
2) git rebase master # update your local master to the origin master, in case master has changed upstream
3) git checkout <branch> # go to your branch
4) git rebase master # rebase your branch to master; applies your branch's changes ontop of the master, where it diverged
5) git checkout master # go back to master
6) git merge <branch> # merge your branch into master. since you rebased, this should be trivial
7) git push # push your master upstream
如果您想将文件从分支复制到主分支,请执行以下命令:
-
git checkout master
-
git checkout x_branch .
(时期)
-
git add—all
-
git commit -m "从x_branch复制所有内容到master"
-
git push -u origin master
如果您想从branch
到master
进行一些提交,您可以使用择优选择。
只接受从branch
到master
的某些提交,但是–当然;不能保证不发生冲突。
看我对的回答,当开发分支与主分支非常不同时管理热修复?
然而,如果你想把所有的提交从branch
到master
,你将无法绕过合并和解决冲突(除非你git reset --hard other-branch
master
分支描述–和气馁&;由马克)。
如果你想将工作分支合并到主分支中,你也可以使用rebase,这更简洁一些。
git checkout master
git rebase <working branch>
至少在IntelliJ中,您可以执行以下操作:
- 签出分支以合并到master。
- vc -> Git ->合并变化
- 选择主
- 将策略更改为"ours"
- 选择"No fast forward"。
- 点击"合并"
- 提交(可能不需要)
这会把master变成你当前的分支。大师的历史得以保存。我确信有一个git命令行是等价的。
也许它不是那么干净,但它适合我
- git pull #获取所有更改 切换到my_branch
- 复制所有文件
- 切换为主
- 删除主目录 中的所有文件从tmp目录拷贝文件
- 提交