簡體   English   中英

git + github自動合並提交+拉取請求

[英]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

  1. feature created by me提交feature created by me具有在vanilla倉庫中不存在的Parent是正常的嗎?

  2. 我應該如何使用git不創建此auto merge commit ,如何使用git pull --rebase或通過vanilla_copy/upstream跟蹤vanilla/master並使用git rebase branch或其他一些機制?

  3. 我應該如何刪除此現有的合並提交? 我應該按以下說明通過git rebase -igit 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

也可以看看:

Git書第6.4章:Git工具-重寫歷史

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM