Git 基本知識與常用指令


一、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中的文件,不會出現在以上三個狀態中。
注:

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

 

二、大白話Git

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

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

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

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

 

三、Git本地常用操作指令

1、創建git庫

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

2、注冊git用戶

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

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

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

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

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

3、向git庫添加修改

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

實際上是為修改內容添加index索引。

4、向版本庫提交修改

  git commit –m “XXXX”     #提交修改,添加注釋

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

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

  git status

6、查看版本信息

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

  git log

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

7、查看指定版本信息

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

  git show sdji97 #一般只使用版本號的前幾個字符即可

8、撤銷修改

  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,以此類推。

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

  git push origin 分支名

10、暫存修改

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

  然后通過git stash list查看。

  並通過git stash apply重新取出來。但apply之前要保證worktree是干凈的。

 

四、Git團隊開發常用操作指令

1、獲取遠端庫項目

  git  clone/pull

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

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

 

五、Git 分支管理

1、建立分支
  git branch AAA   #建立分支AAA

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

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

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

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

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

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

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

注:上面只是一些基本的操作命令,更多的命令可通過幫助文檔查詢。
         幫助文檔的使用:
man git-<需查詢的指令>      #(git后面有“-”)
    如commit的查詢為  man git-commit

六、本地代碼上傳Github

1、Gtthub上建立遠端倉庫,復制下載鏈接。

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

3、復制本地需要提交的代碼到遠端倉庫目錄。

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

 

 

參考文檔:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM