提交给GitHub

时间:2017-08-22 07:01:55

标签: git github

当我想要进行更改并将它们提交给GitHub时,我使用以下工作流程:

$ git checkout -b NewBranch
# Creates a new branch from origin/master for working on a specific feature and immediately switches to that branch. At this point you can add the feature you want.

$ git commit -a -m 'added a new function'
    # Commits the changes to the NewBranch

$ git checkout master
$ git merge NewBranch
    # Merging the changes we did in NewBranch with origin/master
$ git branch -d NewBranch
    # Deletes the NewBranch as it’s no longer needed
Pushing changes to remote repository
$ git push origin
    # Pushes all the changes from the master branch to the origin repository

此时我访问GitHub网站并转到我的在线存储库,即原始项目的分支。在那里,我点击 New Pull Request ,添加一些文本,并在向原始所有者的Pull请求中提出所有更改。

直到这里,一切都按预期工作。但是,此时,当我在客户端本地进行其他更改并执行另一个git push origin时,这些更改也会立即合并/添加到先前所做的相同Pull请求中。

如何避免将这些新更改添加到原始Pull请求中?我只想在我的个人分支中在线,而不是在原始存储库中。

3 个答案:

答案 0 :(得分:0)

您将有两个解决方案:

  1. 当您提供拉取请求时,首先合并拉取请求。合并后,您可以在本地开始工作。

  2. 推送代码后,您可以创建新分支&从旧分支中提取代码,然后开始处理它。因此,当您要推送代码时,它将推送到您的新分支,它将不会合并到先前的拉取请求。要合并它,您需要创建新的拉取请求。

答案 1 :(得分:0)

感谢@oruckdeschel的最终和最佳解决方案是将我的工作方式改为以下步骤:

设置'git push'

$ git config --global push.default simple

Simple将当前分支推送到其上游分支,但如果上游分支的名称与本地分支不同,则拒绝推送(这将是未来git版本的默认名称)

添加新功能

$ git checkout -b NewBranch

创建一个新分支(针对每个功能)并立即切换到该分支。此时,您可以对文件进行特定于功能的更改。

$ git commit -a -m 'Added a new feature’

将更改提交至 NewBranch

$ git push

将当前分支及其更改推送到GitHub。

Go to the GitHub webpage of your fork and click ‘Compare & Pull Request’:
- Base fork: OriginalAuthor/Project  - Base: Master --- Head fork: Me/Project  - Compare: NewBranch 

当提出拉取请求时,对此分支的所有新更改也将自动添加到同一拉取请求

$ git checkout master
$ git merge NewBranch

将我们在 NewBranch 中所做的更改与合并。 master 将始终为私有,不会在GitHub上的Pull Requests中共享

$ git push -d origin NewBranch
$ git branch -d NewBranch

仅在接受Pull请求时删除分支

希望这也可以帮助其他人与GitHub合作。

感谢大家的帮助!

答案 2 :(得分:0)

我的评论作为答案:

  

我通常与分支机构合作有点不同。在我致力于分支后,我推了推。所以分支将落入github。在那里你可以创建Pull Request。将您的更改合并到主服务器(不删除分支)并执行您的"私有"主人的变化。无论何时推送到Pull Requested分支,提交都会自动添加到pull请求中。