当我想要进行更改并将它们提交给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请求中?我只想在我的个人分支中在线,而不是在原始存储库中。
答案 0 :(得分:0)
您将有两个解决方案:
当您提供拉取请求时,首先合并拉取请求。合并后,您可以在本地开始工作。
推送代码后,您可以创建新分支&从旧分支中提取代码,然后开始处理它。因此,当您要推送代码时,它将推送到您的新分支,它将不会合并到先前的拉取请求。要合并它,您需要创建新的拉取请求。
答案 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请求中。