git 常見問題及操作方法

suydCao發表於2018-10-27

1.合併後發現合併錯了怎麼辦?

git merge --abort //終止合併

2.想合併某一次提交怎麼辦?

切換到想要合併的分支: git cherry-pick + 要合併某次提交的index;例如: git cherry-pick 62ecb3

3.怎麼暫存當前不想提交的程式碼?

  1. git stash 可用來暫存當前正在進行的工作;
  2. git stash save備註資訊;
  3. git stash pop 恢復暫存區的內容;
  4. git stash list 命令可以將當前的Git棧資訊列印出來,你只需要將找到對應的版本號,例如使用git stash apply stash@{1}就可以將你指定版本號為stash@{1}的工作取出來,當你將所有的棧都應用回來的時候,可以使用git stash clear來將棧清空。

4.*git裡的lf和crlf換行符自動轉換

  1. 提交時轉換為LF,檢出時轉換為CRLF git config --global core.autocrlf true
  2. 提交時轉換為LF,檢出時不轉換 git config --global core.autocrlf input
  3. 提交檢出均不轉換 git config --global core.autocrlf false

5.git如何關聯遠端分支和本地分支?

關聯分支的好處,可以直接使用git pull, git push 等命令簡化操作,減少程式碼提交的失誤等; 當我們在本地新建一個叫dev-test的分支的時候,我們希望他與git的遠端上的某個分支進行關聯。 剛好遠端也有一個dev-test分支 git branch --set-upstream-to origin/devtest devtest 遠端分支在前,本地分支在後。 git 檢視當前分支關聯:

  1. git branch -vv
  2. git config --list

6.本地修改提交到暫存區了,想撤回怎麼撤回?

  1. git reset HEAD <file>將暫存區撤回(commit撤回);工作區也想撤回使用git checkout <file>,此命令一般用於修改本地暫存區,不影響遠端庫,寫錯程式碼完全撤回,操作不可逆。
  2. git revert 62ecb3 一般用於遠端庫撤銷某次操作(push撤回),撤銷到某個commit之前,revert後會重新做一次提交,head向前。

7.*使用git revert會出現的問題

因為git revert是用新提交覆蓋舊提交,因此,被覆蓋的提交等於不會被採用了。如果兩個分支(假設是master和A分支)先合併再用revert回滾,之後又合併(A合併到master),就會發現在master分支上,A分支第一次合併之前的修改大部分不見了。這是因為從時間的發生順序來看,A分支第一次合併之前的修改發生在revert之前,revert發生在後,而 revert拋棄了A第一合併之前的修改,那麼再合併Git就認為你永遠拋棄了A第一次之前的修改。要解決這個問題,需要把revert產生的提交再revert一次。

相關文章