GIT使用筆記
GIT合併時二進制文件衝突
GIT在合併時如果出現衝突,如果是普通的文本文件,git會在文件衝突的地方標註出來,開發者可以對衝突代碼進行編輯,解決衝突後commit即可,但如果是二進制文件發生了衝突,git是無法標註衝突的,這時候只能從參與合併的兩個分支中選擇一個版本保留,捨棄掉另一個
git checkout FILE –ours [ –theirs ]
–ours 表示檢出當前分支,即保存當前分支的改動,丟棄另外一個分支的改動.
–theirs 表示檢出另外分支, 即保存另外一個分支的改動,丟棄當前分支的改動.
舉個栗子:
有分支A和B, 當前我們在分支A上, 需要把分支B合併到分支A, HashMap.c文件發生衝突了.
git checkout HashMap.c –ours 表示衝突的地方採用A分支上的修改,丟棄B分支上的修改.
git checkout HashMap.c –theirs 表示衝突的地方採用B分支上的修改,丟棄A分支上的修改.
解決完衝突後,就可以像往常一樣 git add git commit了.
取消已經track的文件的版本控制
有些時候需要忽略對某些文件的版本控制,只需要在.gitignore文件中記錄下該文件即可,但是對於已經被添加到版本控制中的文件,.gitignore文件不會對已經track的文件生效,此時需要移除掉該文件的版本控制,讓後將該文件加入到.gitignore文件中commit提交
移除對某個文件的版本控制
git rm –cached filename
移除某個文件夾下的所有文件的版本控制
git rm -r –cached foldername
移除掉版本控制後一定要將響應文件加入到.gitignore文件中,不然文件又會被重新add
git reset的三個參數
git reset –hard是我經常使用的一個命令,不過對於–hard參數的意義不是很明白,後來查了查資料,發現還有兩個參數–soft,–mixed,所以這裏就簡單描述一下各個參數的意義
撤回到已經改動且add,但是沒有commit的狀態
git reset –soft
撤回到已經改動但是沒有add,也沒有commit的狀態
git reset –mixed
完全撤回,消除掉當前所有的改動和add,完全撤回到時的狀態
git reset –hard