【问题标题】:How to keep track of origin/master in my dev git branch如何在我的 dev git 分支中跟踪 origin/master
【发布时间】:2023-03-26 02:25:01
【问题描述】:

我是 git 新手,我想知道如何处理一个非常基本的场景。我在 stackoverflow 上阅读了很多关于 git 的帖子,但仍然无法找到答案。

我们有一个每个人都在处理的 origin/master 远程分支。 我有一个我想要实现的 featureA,可能需要时间来开发。同时,人们可能正在将代码签入到源站/主站。

考虑到以下需求,我的工作流程会是什么样子,我应该如何设置我的 git 分支:

  1. 我希望能够将代码更改提交到我的分支并将它们推送到我们服务器上的远程分支,这样我就不会丢失更改以防我的计算机被炸毁。

  2. 我想让我的分支与主分支保持同步。

  3. 我想尽量减少常规合并。我喜欢 git rebase 的概念,所以我想最大限度地利用它并因此快速合并。

  4. 在某些时候,我们必须将我的分支 FeatureA 合并到 origin/master。

总结:

如何设置从 origin/master 拉取但推送到 origin/MY-BRANCH 的分支?

我的工作流程会是什么样子?

更新:

谢谢@will-pragnell!您的解决方案与以下解决方案有什么区别。

github上的这个页面建议:

https://github.com/diaspora/diaspora/wiki/Git-Workflow

为了从开发主干获取最新更新,请执行一次性设置,通过输入以下命令将主 GitHub 存储库建立为远程:

$ git remote add upstream git://github.com/diaspora/diaspora.git
$ git fetch upstream
$ git checkout master
$ git rebase upstream/master
$ git checkout 100-retweet-bugfix

[确保在分支中根据需要提交所有内容]

$ git rebase master

【问题讨论】:

    标签: git branch git-track


    【解决方案1】:

    git checkout -b FeatureA(创建和结帐分支)
    git push origin FeatureA(将您新创建的分支推送到原点)

    在新分支 FeatureA 上工作。你不想频繁合并然后变基

    git rebase origin  
    

    以后只要你想合并到master。

    git checkout master  
    git merge FeatureA  
    git push origin master  
    

    【讨论】:

    • 任何时候我做'git rebase master'然后'git push origin/multi-senders'我得到以下To ssh:xxx ! [rejected] multi-senders -> multi-senders (non-fast-forward) error: failed to push some refs to 'ssh://xxx' To prevent you from losing history, non-fast-forward updates were rejected. Merge the remote changes (e.g. 'git pull') before pushing again. See the 'Note about fast-forwards' section of 'git push --help' for details.
    【解决方案2】:

    您可能不想要一个从 master 拉取并推送到您自己的分支的分支。您想要的是从 master 拉到本地 master,在本地处理 rebase,然后推送到您自己的远程分支以获取该功能。这是一个相当标准的工作流程,可为您提供完全控制和最少的合并。我个人会这样做:

    创建一个新的本地分支

    git checkout -b myFeature
    

    将其推送到新的远程分支(如果您需要有关此步骤的更多信息,请参阅 this stackoverflow question

    git push origin myFeature
    

    现在您可以在 myFeature 分支上愉快地工作,在需要时使用上述命令推送,而不会弄乱主分支。当您需要获取其他人在 master 上所做的提交时,您可以这样做:

    git checkout master
    git pull (this will just fast-forward if you don't make any local changes to master)
    git checkout myFeature
    git rebase master
    

    当您的功能完成后,您可以将您的分支合并或重新设置为 master,以便其他人都能获得您的新功能。像这样:

    git checkout master
    git merge myFeature
    git push origin master
    

    【讨论】:

    • 谢谢@will-Pragnell!我的问题更新如下:您的解决方案与以下解决方案有什么区别。 github 上的此页面建议:github.com/diaspora/diaspora/wiki/Git-Workflow 为了从开发主干获取最新更新,请执行一次性设置,通过输入:$git remote add upstream git://github.com 将主 GitHub 存储库建立为远程/diaspora/diaspora.git, $git fetch upstream, $git checkout master, $git rebase upstream/master, $git checkout 100-retweet-bugfix, [确保在分支中根据需要提交所有内容], $git rebase master
    • 做完之后:@​​987654327@我得到了`! [rejected] multi-senders -> multi-senders (non-fast-forward) error: failed to push some refs to 'ssh://xxx' 为了防止您丢失历史记录,非快进更新被拒绝 合并在再次推送之前进行远程更改(例如“git pull”)。有关详细信息,请参阅“git push --help”的“关于快进的说明”部分。`
    • 关于您的第二条评论 - 在您尝试合并之前,您是否重新定位到 master ? (稍后我有空的时候会看看你的第一条评论——抱歉,这里超级忙!)
    • 看起来 git hub 上的指南增加了添加一个名为“上游”的新远程的步骤。在我的指南中,我假设您不需要根据您在问题中所说的内容执行此操作:“我们有一个每个人都在处理的 origin/master 远程分支。”我还没有使用过 github,但我认为这是该指南中介绍的用例所特有的。
    猜你喜欢
    • 2012-05-22
    • 2014-12-17
    • 1970-01-01
    • 2012-07-26
    • 2011-05-20
    • 1970-01-01
    • 2018-01-10
    • 2017-04-16
    相关资源
    最近更新 更多