2013-07-11 53 views
1

一些問題詢問如何重寫(rebase)一些提交以便它們出現在分支上,但是這些都似乎假設實際上必需的rebase,即提交通緝對於分支是穿插master通緝(無論是由「你」或其他人)。追溯性地將Git的行提交爲分支

這個問題更簡單:我在master分支上有一個存儲庫的克隆,並且我做了一堆意圖創建GitHub拉取請求的提交。通常我會之前開始提交已運行

git checkout -b new-feature 

,但在這種情況下,我忘了。我是否可以追溯性地將此序列標記爲在新分支上提交(無需使用git rebase)?

回答

2

您可以將提交到分支和reset你的主分支到它與:

git branch new-feature 
git reset --hard origin/master 

注意,這會吹走任何未提交的更改,如果這是你之前應該使用git stash問題開始拯救他們。

+0

聽起來像是我自我回答的簡單版本,省略了新分支的結帳。下次進入這種情況時會嘗試一下。 –

+0

是的,這很簡單,它的工作原理。也可能想要添加例如'git checkout new-feature && git push fork new-feature && git checkout master'。 –

1

假設fork是您的GitHub叉遠程:

git checkout -b new-feature origin/master 
git reset --hard master 
git push fork new-feature 
git checkout master 
git reset --hard origin/master 

即:

  1. 創建新的分支,在上游末端生根。
  2. 強制它包含之前在master上提交的內容。
  3. 將分支推送到分叉存儲庫以準備提請請求。
  4. 回到master分支。
  5. 刪除它的新提交。

也許不是最優雅的解決方案,但似乎工作。可能還想通過--set-upstreampush