一、操作命令
1、拉取color-life分支
git checkout -b color-life
git status?
git pull
git lg? ?查看本地和以前提交歷史
git fetch origin color-life? ?
git branch --set-upstream-to=origin/color-life color-life
git branch --set-upstream 本地關(guān)聯(lián)遠程分支
git rebase --continue
本地假如有代碼改動的就把本地的代碼先暫存
git add .
git commit -m"備注內(nèi)容"
git push?
git pull origin color-life
2刘莹、解決因為本地代碼和遠程代碼沖突阎毅,導致git pull無法拉取遠程代碼的問題
git stash list??
查看本地倉庫中都存儲了幾個stash版本
git stash pop?
將倉庫中的代碼合到本地最新代碼
git stash show?
顯示stash合并到本地代碼后,哪些文件會修改点弯,以及修改的概述
如果不小心把自己的內(nèi)容搞丟了扇调,可以使用?git fsck --lost-found
3、fetch更新本地倉庫兩種方式:
//方法一
$ git fetch origin master //從遠程的origin倉庫的master分支下載代碼到本地的origin master
$ git log -p master.. origin/master//比較本地的倉庫和遠程參考的區(qū)別
$ git merge origin/master//把遠程下載下來的代碼合并到本地倉庫抢肛,遠程的和本地的合并
//方法二
$ git fetch origin master:temp //從遠程的origin倉庫的master分支下載到本地并新建一個分支temp
$ git diff temp//比較master分支和temp分支的不同
$ git merge temp//合并temp分支到master分支
$ git branch -d temp//刪除temp
4狼钮、git reset?
沒有push,這種情況發(fā)生在你的本地代碼倉庫,可能你add ,commit 以后發(fā)現(xiàn)代碼有點問題.
首先捡絮,Git必須知道當前版本是哪個版本熬芜,在Git中,用HEAD表示當前版本锦援,也就是最新的提交commit_id(79f673d631b08907496ce792f429e1f00da25b73)猛蔽,上一個版本就是HEAD^,上上一個版本就是HEAD^^灵寺,當然往上100個版本寫100個^比較容易數(shù)不過來曼库,所以寫成HEAD~100。
HEAD指向的版本就是當前版本略板,因此毁枯,Git允許我們在版本的歷史之間穿梭,使用命令git reset --hard?79f673d631b08907496ce792f429e1f00da25b73叮称。
git reset --hard origin/color-life
穿梭前种玛,用git log可以查看提交歷史,以便確定要回退到哪個版本瓤檐。
要重返未來赂韵,用git reflog查看命令歷史,以便確定要回到未來的哪個版本挠蛉。
5祭示、git?revert
已經(jīng)push,對于已經(jīng)把代碼push到線上倉庫,你回退本地代碼其實也想同時回退線上代碼,回滾到某個指定的版本,線上,線下代碼保持一致.你要用到下面的命令
git revert用一個新提交來消除一個歷史提交所做的任何修改.
revert 之后你的本地代碼會回滾到指定的歷史版本,這時你再 git push 既可以把線上的代碼更新.(這里不會像reset造成沖突的問題)
revert 使用,需要先找到你想回滾版本唯一的commit標識代碼,可以用 git log 或者在adgit搭建的web環(huán)境歷史提交記錄里查看.
git revert c011eb3c20ba6fb38cc94fe5a8dda366a3990c61
兩者區(qū)別
git revert是用一次新的commit來回滾之前的commit谴古,git reset是直接刪除指定的commit看似達到的效果是一樣的,其實完全不同.
第一:上面我們說的如果你已經(jīng)push到線上代碼庫, reset 刪除指定commit以后,你git push可能導致一大堆沖突(或git push -f強制推送).但是revert 并不會.
第二:如果在日后現(xiàn)有分支和歷史分支需要合并的時候,reset 恢復部分的代碼依然會出現(xiàn)在歷史分支里.但是revert 方向提交的commit 并不會出現(xiàn)在歷史分支里.
第三:reset 是在正常的commit歷史中,刪除了指定的commit,這時 HEAD 是向后移動了,而 revert 是在正常的commit歷史中再commit一次,只不過是反向提交,他的 HEAD 是一直向前的.?
6质涛、?git push -u origin master?
上面命令將本地的master分支推送到origin主機,同時指定origin為默認主機掰担,后面就可以不加任何參數(shù)使用git push了汇陆。
二、碰到的bug以及注意事項
1带饱、在自己的分支下寫代碼毡代,不要在項目分支下寫代碼,之后可以繼續(xù)合并
2、git 提交月趟、申請合并的描述灯蝴,都要詳細地寫,切不可馬虎應付孝宗,不然后面沒法排查和回溯
3穷躁、不要再rebase狀態(tài)下修改代碼,拉下來后趕緊提交后因妇,與服務器同步后再修改代碼
碰到困惑是記得手動保存一下文件
4问潭、checkout導致代碼錯亂:提交后再checkout
5、下班之前一定要git push 婚被,以防本地一些意外的bug導致代碼丟失