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