如何将当前工作分支移动到git中的master分支

时间:2011-08-23 13:37:18

标签: git

我目前其中一个项目包含更多分支。主分公司尚未合并很长时间。所以我想用最新代码切换到掌握。

请你给我必要的命令和步骤。

让我重新构建我的问题。

我正在一个有不同分支机构的项目中工作。最新的变化是在除了主人之外的一些分支。现在我的要求是:有没有办法将当前工作分支移动到master而不将其与master合并,以避免冲突?

10 个答案:

答案 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

然而,这通常是一个坏主意:

  1. 你丢弃了主分支上的所有工作。也许你以后可能会想要这段历史? (您可以事先使用git branch old-master master“备份”您的主分支。)
  2. 您正在重写master分支的历史记录,因此,如果您曾与任何人共享此分支,那么结果将会让您感到困惑。
  3. 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)

如果您想从branchmaster进行一些提交,可以使用cherry-picking

这只需要从branchmaster的某些提交,但当然 - 并不保证不会发生冲突。

请参阅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,请执行以下命令。

  1. git checkout master
  2. git checkout branch_from_which_you_have_to_copy_the_files_to_master。

    (有句号)

  3. git add --all

  4. git push -u origin master

  5. git commit -m“从分支复制到主”

答案 8 :(得分:0)

至少在IntelliJ中,您可以执行以下操作:

  1. 检出分支以合并到master。
  2. VCS-> Git->合并更改
  3. 选择母版
  4. 将策略更改为“我们的”
  5. 选择“不快进”。
  6. 点击“合并”
  7. 提交(可能不需要)

这会将master变成您当前的分支。主人的历史被保留。我确定有一个git命令行等效项。

答案 9 :(得分:-3)

也许它不那么干净,但它对我有用

  • git pull#获取所有更改
  • 切换到my_branch
  • 复制所有文件tmp dir
  • 切换到主人
  • 删除主文件中的所有文件
  • 从tmp dir复制文件
  • 提交