git邏輯和基本命令
提交和推送的區別
提交(commit):把您做的修改,儲存到本地倉庫中
推送(push):把您本地倉庫的程式碼推送至伺服器(一般是遠端伺服器及gitlab或github)
拉取和獲取的區別
git pull 從遠端拉取最新版本 到本地 自動合併 merge
不帶分支地址預設拉取所在分支的程式碼,正常:git pull origin master
git fetch 從遠端獲取最新版本 到本地 不會自動合併 merge 正常操作如下:
git fetch origin master
git log -p master ../origin/master
git merge orgin/master
分支和合並
git branch XXX 建立分支(程式碼會從master複製過來)
git checkout XXX 切換分支(程式碼也會切換成XXX的程式碼。
如果xxx分支程式碼有後續提交過和mster不一樣,這時就全不一樣了,
不會合並哦,別搞錯,跟master程式碼沒關係)
git merge XXX 合併XXX分支(假如你現在master,這時master就合併了XXX分支
的程式碼,XXX分支程式碼還是原來的程式碼)
合併程式碼有兩種方案:
1.主分支合併xxx分支
git fetch origin xxx
git log -p master..origin
/xxx
git merge origin
/xxx
首先你必須在master分支上,如果你在ccc分支上,那就是ccc分支合併xxx分支的程式碼【gitlab上合併到主分支可以申請】,merge是合併了程式碼和提交路徑等等
2.拉取的方法
git pull xxx 拉取xxx的程式碼過來,併合並
區別:git pull = git fetch + git merge
拉取線上程式碼,覆蓋本地已改的程式碼或恢復誤刪檔案,及恢復線上版本
git fetch 或者 git fetch --all
git reset --hard XXX
版本回退
1.假設有2個提交記錄
commit def5adef853da4cc05752bdb36577c127be71ba5
Author: 132982jianan <[email protected]>
Date: Thu Dec 28 16:01:36 2017 +0800
add data to 1.txt
commit f36801544670e00b2f59a28e19017d2786c4085e
Author: 132982jianan <[email protected]>
Date: Thu Dec 28 15:59:46 2017 +0800
init 1.txt
(END)
2.現在回到最開始的那一個提交
git reset --hard f36801544670e00b2f59a28e19017d2786c4085e
3.檢視日誌,就會發現只剩下一個提交了
git log
commit f36801544670e00b2f59a28e19017d2786c4085e
Author: 132982jianan <[email protected]>
Date: Thu Dec 28 15:59:46 2017 +0800
init 1.txt
(END)
4.這個時候,發現回退版本錯了,那麼就用git reflog檢視提交記錄
git reflog
f368015 [email protected]{0}: reset: moving to f36801544670e00b2f59a28e19017d2786c4085e
def5ade [email protected]{1}: reset: moving to def5ade
f368015 [email protected]{2}: reset: moving to f36801544670e00b2f59a28e19017d2786c4085e
def5ade [email protected]{3}: commit: add data to 1.txt
f368015 [email protected]{4}: commit (initial): init 1.txt
5.找出想要回退的版本,進行回退
恢復
git reset --hard def5ade