常見的Git錯誤都有哪些,如何解決它們?

如果您曾經與許多開發者一起開發一個大項目,那麼使用 Git 作爲版本控制是一個好選擇。 不過 Git 很複雜,使用過程中經常會犯各種錯誤。 在本文中,我將討論程序員在使用Git時所犯的一些常見錯誤以及如何解決它們。

拼寫錯誤的最後提交消息

經過幾個小時的編碼後,您的提交消息可能存在很多拼寫錯誤,好在有一個簡單的解決方案:

git commit --amend 

該命令將打開您的編輯器,並允許您更改最後一次提交消息。 因爲可能沒人會注意到你寫的 “Initial commment” 有三個 m。

拼寫錯誤的分支名

假設已經是下午三點了,但是你還沒有吃午飯。飢腸轆轆的你可能直接就用 feature-brunch 作爲你的分支名了,哇塞,好美味啊。可是很明顯你寫錯了,應該是 feature-branch 。所以你可以使用 mv

你可以使用 mv 命令類似重命名文件的方式重命名此分支:將其移動到具有正確名稱的新位置。

如:

git branch -m feature-brunch feature-branch 

但如果您已推送此分支,則需要執行幾個額外步驟。 我們需要從遠程刪除舊分支並推送新分支:

git push origin --delete feature-brunch git push origin feature-branch 

不小心將所有更改提交到主分支

你可能正在開發一項新功能,由於太倉促,你忘記爲它打開一個新的分支。 這時候已經提交了大量文件,而且這些提交都位於主分支上。

現在我們需要使用以下三個命令將所有這些更改回滾到新分支:

注意:確保先提交或存儲更改,否則一切都將丟失!

git branch feature-branch git reset HEAD~ --hard git checkout feature-branch 

這將創建一個新分支,然後將主分支回滾到您進行更改之前的位置,然後最終檢出您之前所有更改完整的新分支。

忘了將文件添加到最後一次提交

另一個常見的 Git 陷阱是過早提交。你可能錯過了一個文件,忘了保存它,或者需要對最後一次提交做一個小改動。 這時候 --amend 再次成爲你的朋友。

添加忘掉的文件,然後運行該此靠譜命令:

git add missed-file.txt git commit --amend 

此時,您可以修改提交消息,也可以只保存它以使其保持不變。

將錯誤的文件添加到倉庫

但是如果你做的恰恰相反呢? 如果您添加了一個不想提交的文件,該怎麼辦? 一個流氓ENV文件,一個構建目錄,一個你不小心保存到錯誤文件夾的狗的圖片? 這一切都是可以解決的。

如果您所做的只是暫存文件但尚未提交,那就像重置該暫存文件一樣簡單:

git reset /assets/img/misty-and-pepper.jpg 

如果你已經提交了這些改變,那也不用擔心了。 您只需要在之前執行額外的步驟:

git reset --soft HEAD~1 git reset /assets/img/misty-and-pepper.jpg rm /assets/img/misty-and-pepper.jpg git commit 

上述命令將撤消提交,刪除圖像,然後在其位置添加新提交。

天啊,我又幹蠢事了!

這個命令適用於一切都出錯的地方。 當您從Stack Overflow中複製粘貼太多解決方案時,您的repo處於比啓動時更糟糕的狀態。 我們都去過那兒。

git reflog 顯示了您已完成的所有事情的列表。 然後它允許你使用Git的神奇時間旅行技能回到過去的任何一點。 但是你不應該輕易使用。

要獲取此列表,請鍵入:

git reflog 

我們所做的每一個動作,Git 都記錄下來。下面是執行該命令的輸出示例:

3ff8691 (HEAD -> feature-branch) HEAD@{0}: Branch: renamed refs/heads/feature-brunch to refs/heads/feature-branch 3ff8691 (HEAD -> feature-branch) HEAD@{2}: checkout: moving from master to feature-brunch 2b7e508 (master) HEAD@{3}: reset: moving to HEAD~ 3ff8691 (HEAD -> feature-branch) HEAD@{4}: commit: Adds the client logo 2b7e508 (master) HEAD@{5}: reset: moving to HEAD~1 37a632d HEAD@{6}: commit: Adds the client logo to the project 2b7e508 (master) HEAD@{7}: reset: moving to HEAD 2b7e508 (master) HEAD@{8}: commit (amend): Added contributing info to the site dfa27a2 HEAD@{9}: reset: moving to HEAD dfa27a2 HEAD@{10}: commit (amend): Added contributing info to the site 700d0b5 HEAD@{11}: commit: Addded contributing info to the site efba795 HEAD@{12}: commit (initial): Initial commit 

記下最左邊的列,因爲這是索引。 如果要返回歷史記錄中的任何一點,請運行以下命令,將{index}替換爲該引用,例如dfa27a2。

git reset HEAD@{index} 

你是否有自己的一些Git技巧嗎? 歡迎分享!

本文翻譯自 Medium

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章