在我嘗試進行rebase之前,我知道我的功能分支(GL18)的提交是什麼(b7104e0),效果很差。我在Eclipse中查看Git Reflog,它多次列出提交b7104e0。我想將GL18的頭重新設置回b7104e0。在重新引用日誌中選擇哪個b7104e0提交是否重要,或者它們都一樣?使用reflog取消git rebase時,選擇哪個提交會有影響嗎?
回答
使用提交消息,提交作者,提交日期,樹形哈希和所有父提交散列來計算git散列,有關詳細信息,請參閱this blog post on the anatomy of a Git commit。
這意味着您看到的使用相同散列的每次提交都是完全相同的提交。你可以使用任何這些。實際上,如果您重置,則重置爲提交哈希:git reset --hard b7104e0
。
無,但只是爲了清楚起見,因爲標題和正文乍看問不同的問題,我們拼出來這裏明確:
的「真名」的任何承諾(或實際上git中的任何存儲庫對象)都是它的SHA-1,在這種情況下,它以
b7104e0
開頭(但繼續追加33個字符)。這個真實名稱唯一標識了該對象。在這種情況下,只要更短的版本保持唯一,它可以縮寫爲更短的。所有其他名稱,如分支名稱,標籤,很特別REF
HEAD
,稍微特別少(但仍特別)ORIG_HEAD
,MERGE_HEAD
,CHERRY_PICK_HEAD
,等等,和(終於 :-)) reflog條目,如[email protected]{3}
或branchname@{1}
,只是表示「真名」SHA-1 ID的方法。當使用git checkout
或重寫引用名稱的命令時,對此規則有一個特殊的豁免,但通常情況下,名稱或reflog條目僅解析爲該ID。許多名稱可能會解析爲單個ID,或者可能只有一個名稱解析爲ID,但名稱通常會解析爲ID。
一旦你有了正確的ID,這不要緊,你如何得到它。
只是爲了完整性:很明顯,如果我們要變化目標名稱的SHA-1的ID,例如,移動分公司或寫一個新值CHERRY_PICK_HEAD
,我們需要這個名字,而不是它的當前ID。我們需要一個名字的另一個地方是當使用間接(「符號」)引用,例如HEAD
名稱ref: refs/heads/master
,以便您將on branch master
作爲git status
將它放置。
我們還有一個特殊情況,名稱不能解析爲任何SHA-1 ID,這就是「尚未出生的分支」,這在最新版本庫中最常見,沒有任何提交:in這種情況下,您在分支master
上,但refs/heads/master
無法解析爲提交ID,因爲還沒有提交。如果您使用git checkout --orphan
創建一個尚未指向任何SHA-1(它將在下一次提交中獲取其初始SHA-1)的新分支,則此特殊情況可以稍後再發生。在這兩個古怪的情況下,HEAD
參考存在,但名稱分支字面上不存在存在(還)。
- 1. git rebase,提交重複
- 2. git rebase衝突是由哪個提交造成的
- 3. 使用git:在一個分支中提交的更改會影響'master'
- 4. git reflog中有空消息的項目
- 5. git會影響我的快遞嗎?
- 6. 有沒有辦法用git post-commit hook獲取提交的受影響文件?
- 7. 爲什麼git pull --rebase在重放現有提交時失敗?
- 8. javascript提交表單時會消失嗎?
- 9. 使用p4提交時,-j(選擇作業)選項在哪裏?
- 10. git rebase分支後推新提交
- 11. Git後提交:跳過--amend和rebase
- 12. git rebase保持最近的提交
- 13. git rebase interactive已經推送提交
- 14. 撤消git pull --rebase,日誌不顯示提交?
- 15. git rebase,「會被覆蓋」,「沒有變化 - 你忘了使用'git add'嗎?」
- 16. Rebase,但忽略一個上游提交?
- 17. Rebase/Replay僅合併提交
- 18. 沒有-a選項的git commit會有什麼影響?
- 19. 使用jQuery提交取消提交
- 20. 爲什麼使用git rebase -i重新排序提交不會搞砸歷史?
- 21. Git - 幻影本地提交
- 22. git rebase緊急沙箱提交而不影響另一個承諾這是在舞臺上打破
- 23. 使用git rebase更改之前提交的代碼-i
- 24. 如何使用git pull自動保存合併提交--rebase?
- 25. Git的交互式rebase中的「選擇」是做什麼的?
- 26. 使用jaxb XMLAdapter會影響性能嗎?
- 27. 提交表單時:使用jQuery選擇
- 28. 您使用AWSDBProxy嗎?擴展時性能會受到影響嗎?
- 29. GIT rebase - 多個提交到一個 - 仍在歷史中看到
- 30. 取消幾次提交只有一個在git
如果你的rebase失敗了,你也可以運行'git rebase --abort'而不是'git reset'來達到舊狀態。 – morxa