【GIT】認識GIT的概念,整合常見GIT使用方式

常見問題

回答

什麼是工做區, 暫存區, 版本庫

首先咱們會使用 git init, 建立一個倉庫. 這個倉庫會存放咱們之後提交的每個版本的庫即(版本庫)git

工做區 fetch

git init下的文件夾的全部目錄及文件,但不包括.git目錄下的文件url

暫存區(stage or index)spa

git add, 添加的文件或文件夾, 暫存區屬於版本庫存儲的一塊區域. 注意:暫存區的文件只屬於該分之下的暫存,若是沒有執行commit操做, 則不容許切換分支.3d

版本庫
版本庫包含暫存區及分支, 當使用git commit 將暫存區的文件提交到倉庫裏, 暫存區的文件就會清空,生成一個 commit id 進入版本庫中.code

git 基本描述

分支和HEAD的關係

一個git倉庫通常會建有多個分支, 以便並行開發. HEAD表示當前分支的指向.
使用git checkout -b dev
當前的 HEAD指向 dev分支blog

如何撤銷工做區變動的內容

git checkout -- filename (前提, filename 已在倉庫中)開發

如何從暫存區撤銷回工做區

git reset HEAD -- filenamerem

如何從版本庫回退

git reset commit_id, 修改的內容都處於工做區狀態
git reset --soft commit_id, 修改的內容都處於暫存區狀態
git reset --hard commit_id, 版本庫徹底替換工做區get

GIT使用分支的常見指令

git branch dev mastermaster 分支下建立 dev 分支
git branch -m dev DEV 修改 dev 分支名稱爲 DEV 分支
git diff master dev 比較兩個分支的文件內容變化

GIT checkout 的各類用法

git checkout branch_name 切換分支
git checkout branch_name --force 強制切換分支, 修改的工做區不會被清除
git checkout -b local_branch 從當前分支開啓新分支
git checkout -b local_branch origin/remote_branch 從遠程分支remote_branch拉取到本地local_branch, 而後切換到local_branch, 而且創建映射關係
git checkout branch_name -- filename 從別的分支拉取文件到本的分支指定文件

GIT fetch 的用法

git fetch --all 獲取全部遠程全部分支到本地倉庫
git fetch branch_name 獲取遠程單獨分支到本地倉庫
git fetch branch_name:local_name 獲取遠程分支到本地倉庫, 而且建立一個對應的本地local_name分支, 不創建映射關係

GIT push 的用法

git push origin master 將本地的master推到遠程master分支
git push origin :dev 刪除遠程分支dev
git push origin dev:master 將本地的dev推到遠程master分支

GIT diff 的用法

git diff 當前工做區暫存區 的變化比較
git diff HEAD 當前 工做區+暫存區最後一次提交的變化比較
git diff branch_a branch_b 比較兩個分支的 HEAD

GIT log 的用法

git log 默認不用任何參數的話,git log 會按提交時間列出全部的更新,最近的更新排在最上面
git log -p 展開顯示每次提交的內容差別
git log -[number] 展現最近 number次的提交信息
git log --stat 展現每次提交的內容變化文件的增長刪除的行數
git log --shortstat 只顯示 --stat 中最後的行數修改添加移除統計
git log --name-only 只顯示修改的文件
git log --name-status 顯示修改文件的狀態 [A|M|D]

格式化參數
git log --pretty=[short|full|fuller|oneline] 修改log輸出的樣式
git log --abbrev-commit 只顯示部分commit_id
git log --relative-date 現實距離當前的時間格式, 如 1 minutes ago
git log --graph 顯示 ASCII 圖形表示的分支合併歷史

GIT config的用法

git config --global user.name xxx 設置git用戶的名稱
git config --global user.mail xxx 設置git用戶的的郵箱
git config --global core.autocrlf true|input|false true表示檢查是轉換爲當前系統的回車換行lf or crlf, false表示不檢查, input表示輸入時轉換lf, 輸出不檢查

GIT show的用法

git show [commit_id|HEAD] --name-only 查看某一次commit 修改的文件列表

技巧篇

git config 的簡單使用及設置

git config --global 設置全局 git 用戶配置 ~/.gitconfig
git config --local 設置本地 git 配置, .git/config
git config --global user.name 輸入用戶名
git config --global user.email 輸入郵箱

git remote 的使用及配置

git remote add origin url 添加遠程 origin 倉庫地址
git remote rename origin old-origin 修改遠程分支名稱
git remote remove origin 刪除遠程origin倉庫的地址
git remote get-url origin 獲取遠程origin倉庫的地址

git 雜七雜八使用

git rev-parse HEAD 查看當前分支的版本庫的 commit id
git rev-parse HEAD --short 查看當前分支的版本庫的短commit id
git rev-parse branch_name 查看某一個分支的commit id

相關文章
相關標籤/搜索