[英]git + github auto merge commit + pull request
我通過github
接口將回購vanilla
分叉到vanilla_copy
,之后執行了: git clone vanilla_copy
,過了一段時間我做了git pull
並獲得了一個新的提交feature A
,我的歷史現在看起來像
Merge remote-tracking branch 'upstream/master'
feature A
在我做出自己的事情之后,它變成了:
feature created by me
Merge remote-tracking branch 'upstream/master'
feature A
現在,我想創建對vanilla
pull request
,
我feature created by me
提交feature created by me
具有在vanilla
倉庫中不存在的Parent是正常的嗎?
我應該如何使用git
不創建此auto merge commit
,如何使用git pull --rebase
或通過vanilla_copy/upstream
跟蹤vanilla/master
並使用git rebase branch
或其他一些機制?
我應該如何刪除此現有的合並提交? 我應該按以下說明通過git rebase -i
和git push -f
刪除提交 : 刪除Github提交歷史嗎?
為了使git repos易於瀏覽,我在提交請求之前將提交壓縮為幾個或一個,謹慎的變更集。 修復錯誤通常只需要提交一次,而較大的功能可能包含幾個單獨的改進,可以更輕松地跟蹤不同的提交。
在基於上游主服務器的最新狀態重新確定工作基礎之后,可能會有與您正在處理的問題相關的多個提交。 完成所有操作后,將其壓縮為帶有描述性消息的單個提交,例如“問題#100:一些錯誤修復”。
要將四個提交壓縮為一個,請執行以下操作:
$ git rebase -i HEAD~4
在隨后出現的文本編輯器中,將要壓入的提交旁邊的“ pick”一詞替換為“ squash”。 保存並關閉編輯器,然后git會將“ squash”提交與之前的提交合並。 然后,Git將為您提供將提交消息更改為“問題100:修復了一些錯誤”之類的機會。
重要提示 :如果您已經將提交推送到GitHub,然后在本地將其壓縮,則必須強制將推送推送到您的分支。
$ git push origin branch-name --force
有用的提示:在推送之前,您始終可以使用以下方法編輯最后的提交消息:
$ git commit --amend
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.