Git 基本知識與經常使用指令

1、Git代碼狀態轉換圖html

其中:git

  • 未被Git跟蹤的狀態爲unstage狀態;
  • 已被Git跟蹤的狀態爲stage狀態(stage:階段),所以包括staging狀態和staged狀態。

      untrack files:是指還沒有被git所管理的文件;changed but not updated:是指文件被git管理,而且發生了改變,但改動還沒被git管理;這兩種狀態,均可以當作是改動還沒被git管理的狀態,咱們這裏稱unstage狀態。
staging是commit和未管理之間的一個狀態,也有別名叫index狀態,也就是git已經管理了這些改動,可是還沒完成提交。changes to be commited是指進入staged狀態的文件。
.gitignore中的文件,不會出如今以上三個狀態中。
注:bash

  • 這個圖也解釋了爲啥從遠端庫拉代碼,不須要add、commit。
  • 代碼一旦修改,就會成爲未被git庫跟蹤的狀態。須要add、commit。

 

2、大白話Git服務器

一、Git 管理代碼,保證代碼版本迭代連續性,即:向A分支merge或者push代碼時,A分支代碼必須是當前代碼的上一個版本,否則會產生衝突。(換句話說:Git確保當前的本地的代碼爲最新)app

二、Git有修改就有提交,就有新的代碼版本,git管理維護的是修改。字體

三、Git分支存儲的是代碼副本。spa

四、push :實際上就是將本地分支合併到遠端庫分支;pull:實際就是將遠端分支合併到本地分支。htm

 

3、Git本地經常使用操做指令blog

一、建立git庫索引

  git init  #在當前目錄中生成一個.git 目錄(含有.git目錄的目錄便是git倉庫)

二、註冊git用戶

--->用於在團隊合做開發中,代表代碼做者。

  git config --global user.name XXX  #用戶名

  git config --global user.email XXX   #用戶郵箱

  git config --list  #查看用戶信息

注:加--global,全局設置。

三、向git庫添加修改

  git add [path] #會把對應目錄或文件,添加到stage狀態
  git add .  #會把當前全部的untrack files和changed but not updated添加到stage狀態

其實是爲修改內容添加index索引。

四、向版本庫提交修改

  git commit –m 「XXXX」     #提交修改,添加註釋

注:git 提示: 未有add紅色字體,未有commit綠色字體,已提交則worktree是乾淨的

五、查看當前代碼庫的狀態

  git status

六、查看版本信息

  --->實際是查看修改提交信息

  git log

  git log --graph  #以圖形化(節點)展現當前git庫的提交信息。

七、查看指定版本信息

  git show sdjf974654dd….  #(show後面爲每次提交系統自動生成的一串哈希值)

  git show sdji97 #通常只使用版本號的前幾個字符便可

八、撤銷修改

  git reset
(1)撤銷總體修改
git reset --hard  #回到原來編輯的地方,改動會丟失。(一樣適用於團隊對於其餘人
的修改恢復)

git reset --hard sdv143kvf…... #可回到指定的版本#(hard後面爲每次提交系統自
動生成的一串哈希值)
     git reset [path] 會改變path指定的文件或目錄的stage狀態,到非stage狀態。
     git reset 會將全部stage的文件狀態,都改變成非stage狀態。

(2)撤銷某次修改
    回退1個change的寫法就是git reset HEAD^,
    2個爲HEAD^^,
    3個爲HEAD~3,以此類推。

九、向遠端庫推送修改(提交修改)

  git push origin 分支名

十、暫存修改

  git stash能夠把當前的改動(stage和unstage,但不包括untrack的文件)暫存。

  而後經過git stash list查看。

  並經過git stash apply從新取出來。但apply以前要保證worktree是乾淨的。

 

4、Git團隊開發經常使用操做指令

一、獲取遠端庫項目

  git  clone/pull

二、團隊開發的基本流程(多分支合併一個分支)

  git add .   #添加改動的文件
  git commit  #(提交至本地)
  git pull --rebase  #(將服務器項目與本地項目合併)
  git push    #(將本地項目上傳至遠端庫)
  (在提交前要git pull --rebase 一下,確保當前的本地的代碼爲最新。)

 

5、Git 分支管理

一、創建分支
  git branch AAA   #創建分支AAA

二、分支切換
  git checkout AAA   #從當前分支切換到AAA分支 (若AAA分支不存在,則自動新建)

三、將分支與主枝master合併
  git checkout master   #(首先切換回主枝)
  git merge AAA    #(將分支AAA與主枝合併)

注:git merge:默認狀況下,Git執行"快進式合併"(fast-farward merge),會直接將Master分支指向Develop分支。
  使用--no-ff參數後,會執行正常合併,在Master分支上生成一個新節點。爲了保證版本演進的清晰(保持提交曲線爲直線),建議採用這種方法。

四、當前分支查看
  git branch    #默認有master(也稱爲主枝)
  git branch -r  #查看遠端庫分支
  git branch –a  #查看當前全部分支(包括本地分支和遠端庫分支)

五、刪除分支
  git branch –d  AAA   #刪除分支AAA

六、切下遠端庫A分支到本地庫A分支

  git checkout -b  A origin/A  (若本地A分支不存在,則自動新建)

注:上面只是一些基本的操做命令,更多的命令可經過幫助文檔查詢。
         幫助文檔的使用:
man git-<需查詢的指令>      #(git後面有「-」)
    如commit的查詢爲  man git-commit

6、本地代碼上傳Github

一、Gtthub上創建遠端倉庫,複製下載連接。

二、本地指定目錄下,Gitbash粘貼遠端倉庫下載連接拉取遠端倉庫代碼。

三、複製本地須要提交的代碼到遠端倉庫目錄。

三、Git add、commit、push 提交本地代碼至Github遠端倉庫。

 

 

參考文檔:

https://www.cnblogs.com/chiao/archive/2011/07/27/2117835.html

相關文章
相關標籤/搜索