git的使用流程

心語花束發表於2017-03-04

git的使用流程

git 碼雲 倉庫通訊說明

    在寫 git 命令之前先來描述一下 git 和碼雲之間的通訊。
1. 首先 在碼雲倉庫中新建自己的倉庫,設定相關的配置
2. 執行 git clone url(遠端倉庫地址) 將遠端倉庫下載到本地。
    進入專案目錄,目錄下有.git檔案,在這個目錄下寫自己的專案檔案。
3. 如果你已經在本地使用了git管理了你的專案,現在需要將本地的專案上傳到碼雲倉庫。
    你同樣需要在碼雲上新建專案,將專案清空即可。
    然後在本地新增遠端倉庫地址,就可以將已經存在的git專案推到碼雲上了,注意步驟,否則是推送到遠端倉庫
4. 關於密碼許可權問題
    你需要使用碼雲上的 SSH 連結,不要使用 https 連結,然後按照連結步驟 
    [http://git.mydoc.io/?t=154712][1] 配置即可。

git的安裝

在git官網上下載 git 安裝檔案,下載所需版本,一路點選下一步即可,也可以自行設定選項。
安裝完成以後。雙擊 Git Bash 開啟命令皮膚。
執行 git version 檢視版本號,能正常執行並輸出版本號,說明 git 安裝成功。
如果在 cmd 中無法啟用 git 命令,需要配置環境變數。配置的過程如下:
在我的電腦中右擊,
選擇屬性選項 ->高階系統設定 -> 高階選項卡 -> 點選環境變數按鈕 ->
在系統變數中找到 Path 雙擊將 git 的安裝目錄複製進去即可.
這樣就能在 cmd 中啟用 git 指令了,如有疑問自己百度一下配置好即可。

git 指令的使用

使用前先了解一下 dos 和 linux 的簡單命令( 可以先略過 )

cd 命令
cd .. 返回上一級目錄
cd d: 進入 d 盤(指定的碟符)
cd / 返回根目錄
cd <folderName> 進入指定的目錄

ls命令
ls 列出當前目錄下所有的檔案( 不含隱藏檔案 )
ls -lat 列出隱藏檔案目錄詳細資訊
ls -a 列出目錄下所有的目錄和檔案

mkdir 命令
mkdir <dirname> 建立新目錄(在當前目錄下)

touch 命令
touch <fileName> 建立新檔案

cat 命令
cat <fileName> 顯示這個檔案

vi 命令
vi <fileName> 編輯檔案
在英文狀態下輸入 i,進入插入模式
編輯文字後,按 esc 鍵退出編輯
按 :wq 儲存並退出,回到命令皮膚

git 檢視檔案狀態

 1.git status : 檢視當前狀態,看提示的顏色和標誌,區分檔案需要的操作。
 2.git status -s : git status 簡化 注意前面的字母標誌,分為2列,
   第一列是對staging區域而言,第二列是對working目錄而言。同時注意字母的顏色,區分當前檔案的狀態。

git 跟蹤檔案

 1.git add : 將檔案新增到暫存區,非常重要的一個操作,這樣就可以實時的對你的檔案進行跟蹤了。
 2.git add filename : 將filename檔案新增到暫存區
 3.git add . : 將所有檔案新增到暫存區
 4.git add -A : 新增所有改動檔案到暫存區( 不常用 )
 5.git add -u : 新增有改動且已追蹤的檔案( 不常用 )

git 檔案比較

 1.git diff : 比較檔案,預設是工作區和暫存區檔案比較,不加引數是所有檔案
 2.git diff --cached : 暫存區和本地倉庫比較
 3.git diff head : 工作區和本地倉庫比較
 4.git diff filename : 工作區和暫存區 filename 檔案的對比,可以加路徑。
 5.git diff branchName filename : 比較當前分支和 branchName 分支的 filename 的檔案
 6.git diff romoteName/branchName filename : 比較遠端主機 romoteName 的 branchName 分支的filename檔案比較。
 即當前分支的某個檔案和遠端主機的某個分支的程式碼比較。
 
 注意:如果不傳filename,比較所有檔案,傳filename時注意檔案路徑。
 在執行add操作是,為了安全先執行diff命令。在 git diff 中存在狀態字
 第一列 M 表示:版本庫和處理中間狀態有差異( 版本庫與暫存區有差異 )
 第二列 M 表示:工作區和暫存區檔案有差異( 當前檔案指 )
    A: 你本地新增的檔案(伺服器上沒有)
    C: 檔案的一個新拷貝
    D: 你本地刪除的檔案(伺服器上還在)
    R: 檔名被修改了
    T: 檔案的型別被修改了
    U: 檔案沒有被合併(你需要完成合並才能進行提交)
    X: 未知狀態(很可能是遇到git的bug了,你可以向git提交bug report)

    詳情請查閱相關資料,不過意義不大,用一段時間就知道了。

git 檢視日誌

 1.git log : 列出提交的詳細資訊
 2.git shortlog : git log 簡化
 3.git log -p : 檢視歷次的 log 資訊及更改情況
 4.git log -p -number : 檢視距現在最近的 number 次的 提交的資訊及更改情況
 5.git log --stat -number : 檢視log顯示檔案修改情況
 6.git log --pretty=oneline : 檢視提交的版本 ID
 
 7.git reflog : 檢視所有的操作資訊。
 
 git log --stat -number 
 很有用的一個命令,可以迅速查詢到你上次提交的具體的檔案資訊,只是展示那些檔案被修改過。

git 提交

 1.git commit -m "資訊" : 提交到本地倉庫
 2.git commit filename -m "資訊" : 提交指定檔案,可以是檔案目錄,多檔案用空格隔開
 3.git commit --amend -m "資訊" : 合併提交
 4.git commit -a -m "資訊" : 新增到暫存區並提交到本地倉庫(不建議使用)

git 回退

 1.git checkout .(<fileanme>|/dirname) : 撤銷修改,不建議使用,會造成修改的檔案無法找回。(從工作區撤回)
 2.git reset HEAD <filename> : 從暫存區撤銷指定檔案
 3.git reset : 從暫存區撤銷所有未提交的檔案
 
 4.git reset --hard HEAD : 硬回退到最後一次提交(硬)
 5.git reset --hard HEAD^ : 最後一次提交的前一個提交(硬)
 6.git reset --hard HEAD~number : 回退到前 number 版本(硬)
 
 7.git reset --hard versionNumber : 回到指定的版本,通過 versionNumber 版本號(硬)
 8.git reset --hard master@{num} : 回到指定的版本
 --hard : 直接回退到工作區
 --soft : 從倉庫恢復,本次修改的內容依然存在,只是處於為提交狀態
 後面 5 條不知道為什麼這樣顯示,很無奈。

git 分支

    說道分支,特別強調,在git使用過程中,一定要知道所有的操作都是針對當前分支的。所以在檢視git文件時要深刻理解你當前處在
哪個分支,想在當前分支上做哪些操作。 這一點對於git的使用至關重要,幾乎所有的指令都直接和間接與分支關聯。

1.git branch branchName : 建立一個名為 branchName 的分支
2.git checkout branchName : 從當前分支切換到 branchName 分支
3.git checkout -b branchName : 建立並切換分支
4.git checkout -b branchName remoteName/branchName 建立一個乾淨的分支(以遠端分支為基礎,建立新的本地分支,如果clone後,需要切換到某個分支,而本地並沒有這個分支。可以使用該命令)

5.git branch -d branchName : 刪除分支,未合併分支不能被刪除,使用 -D 強制刪除分支
6.git branch : 列出本地分支
7.git branch -a/-r : 列出所有分支
8.git branch -v : 檢視分支的最後修改(分支最後一次提交的版本資訊)
9.git reflog show branchName : 列出指定分支的版本記錄列表
10.git reflog show --date=iso branchName :  檢視分支建立的時間

11.git merge branchName : 將指定的 branchName 分支合併到當前分支。    

git 中斷 stash

    起名中斷,自己這麼理解,該方法很有用。特別是在開發新版本的時候,正式伺服器上有一個緊急的,
需要修復的 bug, 這個時候怎麼辦,又不想提交。於是你可以執行這個命令。保持現場,等你回來。

1.git stash : 中斷,保持現場。(用編號標記不同的中斷)
2.git stash pop : 取出中斷,恢復最後一次中斷時的現場。
3.git stash list : 檢視所有的中斷資訊
4.git stash apply stash@{1} : 取出指定的中斷
5.git stash clear : 清除所有中斷

    舉一個例子,比如你在dev分支正在開發一個功能,這時master分支有一個亟待解決的bug。
此時dev分支的功能並沒有開發完,現在並不想執行 commit,提交。這時你執行 git stash,中斷。
然後切換到mater分支上修復bug,修復完成後切換到 dev 分支,
然後將中斷取出,執行git stash pop 就可以繼續你的開發工作了。

相關文章