【问题标题】:Update develop branch from the master branch without losing any changes in develop从主分支更新开发分支,而不会丢失开发中的任何更改
【发布时间】:2019-07-23 08:34:24
【问题描述】:

嗨,我有一个基于 master 分支的开发分支。 我在开发分支中进行了更改。 现在,我的问题是如果要更新主分支,如何在主分支的基础上升级开发分支而不丢失我在开发分支中的更改?

【问题讨论】:

  • 使用git pullgit pull --rebase。如果 Git 不允许您拉取,那么您必须先存储或提交您的更改。

标签: git github git-branch


【解决方案1】:

取决于你的意思是“升级”,但我假设你希望你的开发分支拥有 master 所拥有的提交。

所以你需要git mergegit rebase

# merge master into develop
git checkout develop
git merge master

# rebase develop on top of master
git checkout develop
git rebase master

或者,如果您的主服务器在服务器上,并且您想从您的源中获取更改,您可能必须执行相同的操作,但使用 pull 命令。

git checkout develop
git pull #or git pull --rebase

注意您当前的工作目录必须是干净的。否则,您必须提交(或存储)您的更改,以便从 master 获取内容。

【讨论】:

  • "# rebase master on top of develop" -> 我觉得它更像是"# rebase develop on top of master"
  • @jo_ 哎呀我的错误,你是完全正确的。我会编辑答案
【解决方案2】:

我建议您使用变基解决方案(请参阅 mereg vs rebase )。假设您在 个人 开发分支(没有其他人使用此分支)

第一次保存您当前的开发(在):

git add <all files you created> 
# -am is ; a: all added an modified    m: message follows
git commit -am "<comment your commit>"    
git push origin <my-dev-branch>

从这一点你不能丢失任何东西,因为遥控器上有一个副本

然后用远程信息更新本地

git fetch --all
git rebase master

此时您可能需要处理一些合并冲突

git mergetool

检查this 设置一个好的合并工具

解决所有合并冲突并重新测试代码后,您将再次推送到服务器 强制 (-f) 分支更新

git push -f origin <my-dev-branch>

【讨论】:

  • 请小心使用“push -f”,因为这会破坏使用该存储库的所有其他人的分支。
  • @jo:我知道 :) 这就是为什么您链接的文档指出:“一旦您了解什么是变基,最重要的是要学习什么时候不这样做。git 的黄金法则rebase 就是永远不要在公共分支上使用它。” (link)
  • @creinig 明白了你的意思,所以我应该添加类似“假设你在 personal 开发分支上,然后我称之为
【解决方案3】:

使用 rebase 进行开发和拉取。

git checkout develop
git pull --rebase origin master

【讨论】:

    猜你喜欢
    • 2016-01-01
    • 2022-11-02
    • 2015-02-19
    • 2011-04-14
    • 2020-12-23
    • 1970-01-01
    • 2021-07-24
    • 2020-07-13
    • 1970-01-01
    相关资源
    最近更新 更多