1. 程式人生 > >git邏輯和基本命令

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