我在Github上分支了一個項目,做了一個提交,推送到我的fork併發出了拉取請求。所有這一切都很好。從現有的拉取請求中移除提交
然後,我不斷提交併推送不相關的東西,但不知道所有這些都會添加到我的pull請求中。
我需要我在我的叉保留(在一個不同的分支或東西)所做的更改,但我必須從拉請求中刪除除第一次提交以外的所有更改。我該怎麼做呢?
我在Github上分支了一個項目,做了一個提交,推送到我的fork併發出了拉取請求。所有這一切都很好。從現有的拉取請求中移除提交
然後,我不斷提交併推送不相關的東西,但不知道所有這些都會添加到我的pull請求中。
我需要我在我的叉保留(在一個不同的分支或東西)所做的更改,但我必須從拉請求中刪除除第一次提交以外的所有更改。我該怎麼做呢?
首先,確保你當前的工作樹是乾淨的,然後就上創建一個新的分支承諾,以確保您不會失去你的工作:
git stash
git checkout -b unrelated-stuff
現在,切換回拉要求分支:
git checkout feature
然後重置分支指向特定提交ID(您將通過git log
或通過任何GUI應用程序找到ID):
git reset --hard COMMIT_ID
一旦你有你的地方feature
分支指向你喜歡的提交,你可能會迫使推動該分支服務器:
git push --force
在這一點上,你拉的請求上服務器將只包含相關的提交,而不相關的工作仍然在unrelated-stuff
分支上可用。
如果您在git stash
編輯它之前有任何未保存的工作,可以用git stash pop
取回。
請注意,強制推送是一個非常灰心的操作在git中,因爲它可能會打破其他人的本地存儲庫。在拉動要求的情況下,應該總體上是可以的(許多回購所有者更喜歡只有在審查後乾淨整齊時才合併PR),但是從未有過強行推入主人或其他可能有其他人的分支工作。
理解和學習git的好資源是http://learngitbranching.js.org - 看看你是否感興趣!