我目前其中一个项目包含更多分支。主分公司尚未合并很长时间。所以我想用最新代码切换到掌握。
请你给我必要的命令和步骤。
让我重新构建我的问题。
我正在一个有不同分支机构的项目中工作。最新的变化是在除了主人之外的一些分支。现在我的要求是:有没有办法将当前工作分支移动到master而不将其与master合并,以避免冲突?
答案 0 :(得分:41)
如果您希望 master 与 other_branch 中的文件状态完全相同并保存历史记录 - 请执行下一步操作(它比reset
更柔和):
git checkout master
git checkout other_branch .
(有句号)
这会将 other_branch 的完整副本复制到当前( master ): 然后定期提交。
git add --all
git commit -m "* copy other_branch to master working tree"
注意, other_branch 中未跟踪(未编入索引)的文件(目录)将保留,如果主人没有跟踪它们。要删除那些未跟踪的文件(目录):
git clean -fd
有关详细信息,请参阅How to remove local (untracked) files from the current Git working tree?
答案 1 :(得分:14)
您想将'develop'分支合并为master吗?
git checkout master
git merge develop
或者您想将更改从master合并到开发分支中吗?
git checkout develop
git merge master
答案 2 :(得分:11)
首先,我会尝试将其合并到master
并查看是否确实存在很多冲突 - git的合并对于仅标记真正的冲突非常有用。如果您在开始之前确保git status
是干净的,并且发现有太多冲突要处理,您可以回过头来看:
git reset --merge
但是,如果您只想让当前的master
与其他分支相同,那么 可以
git checkout master
git reset --hard other-branch
然而,这通常是一个坏主意:
git branch old-master master
“备份”您的主分支。)master
分支的历史记录,因此,如果您曾与任何人共享此分支,那么结果将会让您感到困惑。git reset --hard
应始终谨慎使用,因为它会丢弃您所有未提交的更改。答案 3 :(得分:3)
如果我正确理解您的英语,您不希望将您的更改合并回master,但只需将master重置为指向当前已检出分支中的最新提交?为此,请使用:
git branch -f master
答案 4 :(得分:3)
您需要将当前分支合并到主分支中。我这样做的方式是:
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
答案 5 :(得分:1)
如果您想从branch
到master
进行一些提交,可以使用cherry-picking。
这只需要从branch
到master
的某些提交,但当然 - 并不保证不会发生冲突。
请参阅my answer至 Managing hotfixes when develop branch is very different from master?
但是,如果您想将branch
的所有提交转换为master
,则无法解决合并和解决冲突(除非git reset --hard other-branch
所描述的master
分支 - 并且气馁 - 由Mark)。
答案 6 :(得分:0)
如果要将工作分支合并到主服务器中,还可以使用更简洁的rebase。
git checkout master
git rebase <working branch>
答案 7 :(得分:0)
如果要将文件从分支复制到master,请执行以下命令。
git checkout branch_from_which_you_have_to_copy_the_files_to_master。
(有句号)
git add --all
git push -u origin master
git commit -m“从分支复制到主”
答案 8 :(得分:0)
至少在IntelliJ中,您可以执行以下操作:
这会将master变成您当前的分支。主人的历史被保留。我确定有一个git命令行等效项。
答案 9 :(得分:-3)
也许它不那么干净,但它对我有用