2013-06-06 104 views
-1

假設我在git中從master分支了一個功能分支。現在我對這個分支進行了一些更改,我認爲它已經爲主分支做好了準備。因此,我推送到遠程存儲庫,並使用github用戶界面來處理從我的功能分支到主分支的請求。在pull請求中添加提交

現在,由於拉取請求中的反饋,我需要更改我的特性分支中的一些內容。我現在是簡單的選項來提交更改作爲新的提交併推送它。如果分支稍後進行合併,我的功能將被分割爲多個提交。

如果我想避免多次提交,有什麼可能性?我看到了以下可能性:

  1. 使用git commit --ammend並追加改變當前提交
  2. 使用git rebase -i和壁球的變化連成一片提交

這兩種解決方案都存在一個巨大的問題:如果沒有push -f,我無法再玩。

問:

  1. 這是工作流程在某種程度上錯了嗎?聚合提交是否是錯誤的,我應該把它們作爲單獨的提交嗎?
  2. 如果不是,可以在這裏使用push -f嗎?
  3. 如果是的話,我該如何確保我沒有做任何非常糟糕的事情?我能以某種方式將影響限制在我的遠程分支上,而不會影響其他任何東西嗎?摧毀我自己的特色分支並不壞,但摧毀主人並不好。
  4. 是否有其他可能性避免push -f
+0

'這兩種解決方案都存在一個巨大的問題:我不能沒有推-f'了COMIT。你什麼意思?一旦你的本地歷史記錄和遠程歷史記錄再次對齊,你應該能夠再次不用'-f'來推送。所以,我猜只有第一次推送應該用'-f'來執行。至少,如果沒有人推動你重寫的歷史(根據我的回答) – ThanksForAllTheFish

回答

1
  1. 既然是你的一個分支,可以改寫歷史,工作流程是正確的,到底是不是單獨提交不易混淆。
  2. 答案是肯定的,所以git push -f不在。
  3. 在推動之前,您可以只觀察本地分支的外觀。諸如gitkgit log之類的工具可以提供幫助。
  4. 由於這是你的分支git push -f並不壞,但如果你想保持舊的分支,你總是可以創建一個新的分支。
0
  1. 它可能會令人困惑。只有在合併時壓縮/修正可能比在開發時壓扁更好。這應該由公關合並的人來完成。
  2. 當您更改歷史記錄時,需要它:)
  3. git push -f <remove> <branch>僅強制推送一個分支。
  4. 製作一個單獨的分支。但是這需要一個新的公共關係,所以通常不值得這樣做,除非這些變化太大以至於你不想重新開始討論。
0
  1. 基本上這是不對的,但如果你確信沒有其他人拉到一個分支,可以隨意改寫歷史。您不應該重寫遠程拉分支的歷史記錄,這樣操作會導致本地存儲庫出現問題,這可能會重新引入您重寫的歷史記錄。
  2. 如前所述,只需在推送到遠程設備之前重寫本地歷史記錄即可。
  3. 點3.
0

如果你拉的請求沒有被接受,因爲它是和討論導致您的反饋意見,我會說,你原來的拉請求已被拒絕,你應該如果您所參與的項目對拉取請求有一些更嚴格的要求,請準備一個新項目。

否則,您預計新提交添加到您的分支,而不是墊底或修改已經存在的提交,推動他們Github上,讓拉請求更新。

這樣你將最終有至少兩次提交pull請求:得到了討論,原來的一個,並與反饋變化的承諾。

如果該項目所需引入請求是一個只提交,你必須創建一個新的拉要求所有的改變壓扁成一個承諾,而且可能重建基礎上發展的新的當前頭。

相關問題