提交可能不會丟失。首先進行備份。檢查你有什麼分支,以及它們是什麼。如果您確實無法在任何分支中找到您的提交,則可能有興趣瞭解reflog。
如果您還沒有安裝庫瀏覽器(我喜歡tig),你可以使用下面的命令檢查你的資料庫:git log --graph --all --oneline --decorate
如何修改先前的承諾,並提交,但不刪除在主人面前的提交?
如果提交編輯是以前的承諾:
- 讓你想要的變化。
- 如果您不添加新文件,則可能使用
git add -u
進行更改。
- 修改以前的提交,
git commit --amend
會這樣做,如果您不想編輯提交消息,請添加-C HEAD
。
如果你想編輯一個較舊的提交,你需要使用rebase。 這可以交互完成:
- 開始從你想要編輯哪個分支,通常用在你的工作副本沒有變化。
- 在之前的提交中進行所需的更改。
- 階段並提交這些更改 - 不要在這裏寫一個合理的提交消息。
- 運行
git rebase -i
,這將打開一個編輯器:
- 移動最後一行(與廢話提交信息),直到它是對線下你要編輯的提交。
- 將
pick
更改爲f
(用於修正)。
- 不作任何其他更改文件
- 保存並退出
- 的Git應該修改你剛纔的承諾,包括編輯,並會嘗試衍合上頂部的其他變化。
這會嘗試將您的編輯應用於先前的提交,並在之前的提交和您的編輯之後重新綁定所有後續更改。如果稍後的提交受到編輯的影響,您可能會遇到合併衝突。 Git將提供如何解決這些問題的說明。如果您不理解它們,則可以使用git rebase --abort
返回到您開始的位置,並且您的編輯是最新的提交。
請注意,您不應編輯已經推送到共享存儲庫的提交。這很可能造成很多混亂。
我真的不明白你在說什麼。你究竟做了什麼,你最終得到了什麼? – poke
不幸的是我不知道我用了什麼命令。我一直在閱讀教程,並沒有完全理解我一直使用的所有命令。 (因爲這個問題,我做了很多新的命令,所以我不能只看我的歷史記錄) – Jordan
一般提示然後:不要盲目跟隨教程並輸入你不明白的命令。先看看它們,並首先了解它們的作用以及爲什麼現在有必要使用它們。 – poke