如何在我的dev git分支中跟踪origin/master

ben*_*n39 5 git branch git-track

我是git的新手,我想知道如何解决一个非常基本的场景.我在stackoverflow上读了很多关于git的帖子,但仍然无法弄清楚答案.

我们有一个每个人都在工作的origin/master远程分支.我有一个我想要实现的功能,可能需要时间来开发.同时,人们可能正在检查原始/主人的代码.

考虑到以下需求,我的工作流程会是什么样子以及如何设置我的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
Run Code Online (Sandbox Code Playgroud)

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

$ git rebase master
Run Code Online (Sandbox Code Playgroud)

Wil*_*ell 5

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

创建一个新的本地分支

git checkout -b myFeature
Run Code Online (Sandbox Code Playgroud)

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

git push origin myFeature
Run Code Online (Sandbox Code Playgroud)

现在你可以在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
Run Code Online (Sandbox Code Playgroud)

当您的功能完成后,您可以将您的分支合并或重新绑定到主服务器,以便其他人获得您的新功能.像这样:

git checkout master
git merge myFeature
git push origin master
Run Code Online (Sandbox Code Playgroud)