6

我是 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
4

2 回答 2

6

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

创建一个新的本地分支

git checkout -b myFeature

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

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
于 2012-01-20T10:58:06.567 回答
0

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

处理新的分支 FeatureA。您不希望频繁合并然后变基

git rebase origin  

以后只要你想合并到master。

git checkout master  
git merge FeatureA  
git push origin master  
于 2012-01-20T11:42:08.767 回答