1. 程式人生 > >About Git

About Git

概念

分散式版本控制系統。

集中式和分散式的區別:

集中式:版本庫放在在中央伺服器,如 SVN,CVS

分散式:每個人的電腦都是版本庫

安裝

檢視系統有沒有安裝 Git:

$ git

Linux 安裝命令:

$ sudo apt install git

配置:

$ git config --global user.name "你的名字"
$ git config --global user.email "你的郵箱" 

使用

初始化 Git 倉庫:

$ git init

把修改提交到暫存區:

// 新增一個檔案
$ git add filename
// 新增多個檔案
$ git add filename1 filename2 ...

把暫存區內容提交到當前分支:

$ git commit -m "修改總結"

檢視倉庫當前狀態:

$ git status

檢視所做修改:

$ git diff [filename] // 比較工作區與暫存區某檔案的區別
$ git diff HEAD -- [filename] // 比較工作區與版本庫最新版本某檔案的區別

檢視提交日誌:

$ git log
$ git log --pretty=oneline // 簡潔版
$ git log --graph          // 有圖

ps:版本號不是遞增,而是SHA1生成,在分散式環境下防止版本號衝突。

版本回退:

$ git reset --hard HEAD^    // 回退到上一個版本
$ git reset --hard HEAD^^   // 回退到上上個版本
$ git reset --hard HEAD~100 // 回退到上100個版本
$ git reset --hard [版本號]  // 回退到某個版本號

檢視 Git 命令日誌:

$ git reflog

放棄工作區的修改,回到暫存區或版本庫最新版本:

$ git checkout -- [filename]

將暫存區修改撤銷,放回工作區:

$ git reset HEAD [filename]

將本地倉庫推到 Github 倉庫:

$ git remote add origin [遠端倉庫連結]

將當前分支推送到遠端:

$ git push -u origin master // -u 引數將本地 master 和遠端 master 聯絡起來
$ git push origin master
$ git push origin [分支名稱] // 推送其他分支

克隆遠端倉庫:

$ git clone [遠端倉庫連結]

分支:

$ git branch [分支名稱]      // 建立分支
$ git branch -d [分支名稱]   // 刪除分支
$ git branch -D [分支名稱]   // 強行刪除分支
$ git checkout [分支名稱]    // 切換分支
$ git checkout -b [分支名稱] // 建立並切換分支
$ git branch               // 檢視當前分支
$ git merge [分支名稱]      // 將某分支合併到當前分支上
$ git merge --no-ff -m "message" [分支名稱] // 不使用 Fast Forward 模式

快照:

$ git stash // 儲存快照
$ git stash list // 檢視快照列表
$ git stash apply // 恢復快照
$ git stash drop // 刪除快照
$ git stash pop // 恢復並刪除快照

檢視遠端庫的資訊:

$ git remote
$ git remote -v // 詳細資訊

從遠端倉庫獲取程式碼:

$ git pull

將遠端倉庫分支與本地倉庫分支建立連結:

$ git branch --set-upstream-to=[遠端倉庫分支] [本地倉庫分支]

推送原生代碼到遠端倉庫:

$ git push

將本地未 push 的分叉提交歷史整理成直線:

$ git rebase

標籤:

$ git tag [標籤號]  // 打標籤
$ git tag          // 顯示所有標籤
$ git tag [標籤號] [版本號]  // 根據版本號打標籤
$ git show [標籤號] // 檢視標籤資訊
$ git tag -d [標籤號] // 刪除標籤
$ git push origin [標籤號] // 推送標籤號到遠端
$ git push origin --tags  // 推送所有標籤到遠端
$ git push origin :refs/tags/[標籤號] // 刪除遠端倉庫標籤