簡體   English   中英

git checkout-分離頭問題

[英]Git checkout - detached head issue

我知道這里已經討論了很多。 我絕對不熟悉git及其分支的復雜性。 盡管我經歷了多個線程,但我對它們中使用的術語並不滿意。 因此,我正在尋找一些易於理解的逐步幫助。 我試圖解釋我的實際情況以及我要尋找的東西。

我有一個名為css-merge-2016分支,自最近幾天以來我一直在推送我的提交。 現在,我需要恢復為特定的提交。 我也不想保留在工作目錄中所做的任何更改。 如果一切恢復到我可以使用的特定提交之前的狀態。

我做了git checkout <commit_number> ,這表明我在DETACHED HEAD 然后我進入git checkout css-merge-2016 ,這是我用來推送更改的分支。 但是當我運行git branch時,它仍然顯示以下內容:

subrara @ subrara-desktop:/var/www/localsite.com/local.main.drupal$ git分支
*(與f996a78分開)
css-merge-2016

我再次使用git checkout <commitnumber>進行了檢查,它不再顯示DETACHED HEAD消息,而是說

HEAD現在位於f996a78 ...從customtheme / sass / pages中刪除了未使用的SCSS文件刪除的文件:pages> _home.scss規則合並到了base / sass / all / pages / _home.scss

我需要丟棄f996a78之后,我所做的所有提交,而我的本地存儲庫又回到f996a78 這是可能嗎? 如果是,怎么辦? 請提出建議。 我完全被卡住了!

更新:

如果我在此階段運行git status ,我可以看到

HEAD在F996A78分離
未暫存的更改未提交:
(使用“ git add / rm ...”更新將提交的內容)
(使用“ git checkout-...”放棄工作目錄中的更改)

然后是一長串紅色的文件列表,其中一些被標記為已modified ,一些被標記為deleted

當您檢出commit f996a78 ,您暫時處於分離狀態。 這意味着您的css-merge-2016分支保持不變,僅指向分支尖端的指針發生了變化。 如果您真的想擺脫在提交f996a78之后發生的提交,則可以使用git reset --hard

git reset --hard f996a78

請記住,這可能會導致f996a78之后發生的提交在某些時候被刪除,並且這些提交將立即不再位於您的分支中。

您還應該注意,如果要將分支推送到遠程,則現在必須進行強制推送,例如

git push --force origin css-merge-2016

因為您重寫了該分支的歷史。 如果css-merge-2016分支由除您之外的任何人共享,則您可能希望還原查詢中的提交,而不是使用git revert

你可以試試

git reset --hard f996a78

這會將您的工作目錄還原到所需的狀態。

吉特

您的問題的一部分與git的“分支復雜性”有關,以及有關git新知識。

git的有趣之處在於,基本上沒有“復雜性”。 當然,除非您知道各種命令,否則您實際上並不知道該怎么做,但是內部數據結構以及實際命令都非常“復雜”(閱讀:簡直簡單),而且肯定很簡單系統。

如果您僅閱讀一份有關git內部結構的文檔,請git閱讀以下內容: http : //gitready.com/beginner/2009/02/17/how-git-stores-your-data.html嘗試真正理解它的含義您(這並不難,也沒有很多信息)。 養成在白板或紙上繪制“提交樹”的習慣。 之后,您只需要了解單個git命令如何修改提交樹,就可以解決以后的任何問題。

如果您沒有該頁面,則可以添加https://www.jayway.com/2013/03/03/git-is-a-purely-functional-data-structure/

回答...

...對你的問題。 雖然在其他地方提到的git reset ...當然可以,但是我更喜歡:

git branch css-merge-2016_backup css-merge-2016    # just in case...

git branch -f css-merge-2016 f996a78
git checkout css-merge-2016

然后,讓分支(實際上只是指向提交的“便箋”一點)指向該較早的提交。 如果您100%確定已完成舊工作,則可以刪除備份分支( git branch -D )。

暫無
暫無

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

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