我做了一個git commit
但我沒有推。我現在正在研究一個新的錯誤修復,它不應該與第一次提交相同的文件。如何在沒有更早版本的情況下推送一個Git提交?
是否有可能對我犯這個錯誤修復和git push
只有這個提交?
我做了一個git commit
但我沒有推。我現在正在研究一個新的錯誤修復,它不應該與第一次提交相同的文件。如何在沒有更早版本的情況下推送一個Git提交?
是否有可能對我犯這個錯誤修復和git push
只有這個提交?
所有提交給特定提交的提交都定義了新的提交。
也就是說,如果有一個主→dev的→錯誤修正如下所示的圖像中:
master → dev → bugfix http://img.skitch.com/20091029-tbffrg53q73mdipiwcr3g2ywuh.png
你可以把dev
單獨但不bugfix
單獨,但bugfix
定義包括dev
,所以dev
有沒有bugfix
但是沒有任何意義,如果你建立這個bug修正了作爲一個特性分支,你有什麼事情,看上去更像是這樣的:
feature branch http://img.skitch.com/20091029-t3w5qk3bhj3ftx1d9xnk32ibkb.png
你仍然可以追溯做到這一點(從origin/master
創建一個新的分支,摘櫻桃的變化,並在您的開發分支,然後git reset --hard HEAD^
得到bug修正改變它關閉)。
一旦這就是完整的,你可以轉發端口的Dev分支用一個簡單的git rebase master
,它會是這樣的:
new master http://img.skitch.com/20091029-1ts3enwsmsr29imcu7tyk75ett.png
在實踐中,從分支開始bug修復將會使這種一般來說,事情要容易得多。
你可以做的是將前一個提交移動到一個(臨時)分支,然後櫻桃選擇你的新提交到主。例如:
# first commit your current work
git branch temp_branch
git reset --hard HEAD~2
git cherry-pick temp_branch
git push
然後,temp_branch將包含您的新提交。那麼以後您可以選擇您以前一回主:
git cherry-pick temp_branch^
git branch -D temp_branch
這樣做了以後,你的主人分行將包含相同的兩次提交,你開始,但在相反的順序。
我們的商店廣泛使用個人分支。基本上,過程會是這樣的:
假設您目前在主分支
git checkout -b bug_fix_name_that_I_dont_want_to_commit
上面創建一個分支,並檢查出來...這是你把你是提交沒有準備好推動。
現在您應該可以在不影響主分支的情況下對當前分支進行提交。
當你準備發佈/推一個承諾,只是做:
git push origin master
和你的其他的提交不會去原產地庫。
當您準備將「錯誤修復」合併到主分支時,簽出主分支並執行;
git merge bug_fix_name_that_I_dont_want_to_commit
我認爲這回答了這個問題,但如果沒有,請讓我知道!
它看起來像你問了50多個問題,但只接受了答案的一小部分。請考慮使用「接受」功能標記對您最有幫助的答案。 –