我開始與上游資源庫:
$ git clone https://github.com/mushorg/glutton
$ cd glutton
而只是爲了讓我的遠程名稱看起來像你的:
$ git remote rename origin upstream
然後我取你的PR:
$ git fetch upstream pull/62/head
$ git checkout FETCH_HEAD
你顯然並不需要這一步,因爲你已經有本地更改。
只是爲了確認我看你是同樣的事情,我看到了以下變化:
$ git log --oneline master..
cdbca37 Merge branch 'master' of https://github.com/HashCode55/glutton
b37aafd SMTP responses fixed and random wait time added
f25198e supports random wait time for response
4cfcc1d random removed
f2bfed7 refactor
da3dbdb refactor
3bfb62c removed rand function
1bb8a43 SMTP responses fixed
088f6df merged
a383e09 Revert "Revert "removed""
f1bb1c2 Revert "removed"
97bac3f removed
97a0408 Changes
有幾件事情跳出有:
- 你也許會發現更多的東西如果您在功能分支而不是您自己的
master
分支上工作,則可管理。也就是說,在開始進行任何更改之前,從git checkout -b my-spiffy-feature
開始。如果您將定期向上遊提供服務,如果您的master
分支始終反映上游master
分支在某個時間點的狀態,那麼您的生活將變得非常簡單,因爲這允許您使用簡單的git pull upstream master
更新本地主分支。
- 避免將代碼合併到您的功能分支。如果您需要合併上游更改,請定期在
upstream/master
上重新拼版。
- 避免在功能分支中生成提交提交。只需使用
git reset
。
如果你要按照上述步驟,你會避免所有的衝突和複雜化,讓你到這一點。
壁球所有這些變化可能是由重置當前分支反饋給上游master
分支開始最簡單的方法:
$ git reset upstream/master
這將重置資源庫,但不你的工作目錄,以upstream/master
分支的狀態。由於它不會修改工作目錄的狀態,這意味着您的所有更改都會保留,但不會保留提交歷史記錄。在這一點上,我們可以看到:
$ git status
[...]
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: app/server.go
modified: smtp.go
no changes added to commit (use "git add" and/or "git commit -a")
現在,我們可以創建一個新的提交:
$ git add -u
$ git commit
現在你對上游master
分支的上方設置了一個承諾。然後,您會強制將此推送到您自己的master
分支,以更新PR。 (注意:如果你擔心某些事情會發生,或者失去你的改變或者類似的東西,你可以在新的分支上工作,或者直接製作工作目錄的本地副本,然後替代它。)
Github有sqashing選項 –
@TusharKotlapure該選項僅適用於我想要的存儲庫的所有者。 – hashcode55