1.合併後發現合併錯了怎麼辦?
git merge --abort //終止合併
。
2.想合併某一次提交怎麼辦?
切換到想要合併的分支:
git cherry-pick + 要合併某次提交的index
;例如: git cherry-pick 62ecb3
。
3.怎麼暫存當前不想提交的程式碼?
git stash
可用來暫存當前正在進行的工作;git stash save
備註資訊;git stash pop
恢復暫存區的內容;git stash list
命令可以將當前的Git棧資訊列印出來,你只需要將找到對應的版本號,例如使用git stash apply stash@{1}
就可以將你指定版本號為stash@{1}
的工作取出來,當你將所有的棧都應用回來的時候,可以使用git stash clear
來將棧清空。
4.*git裡的lf和crlf換行符自動轉換
- 提交時轉換為LF,檢出時轉換為CRLF
git config --global core.autocrlf true
- 提交時轉換為LF,檢出時不轉換
git config --global core.autocrlf input
- 提交檢出均不轉換
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 檢視當前分支關聯:
git branch -vv
git config --list
6.本地修改提交到暫存區了,想撤回怎麼撤回?
git reset HEAD <file>
將暫存區撤回(commit撤回);工作區也想撤回使用git checkout <file>
,此命令一般用於修改本地暫存區,不影響遠端庫,寫錯程式碼完全撤回,操作不可逆。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一次。