---
# System prepended metadata

title: Git指令
tags: [CheetSheet]

---

###### tags: `CheetSheet`
Git指令
===

![](https://i.imgur.com/0I5EWpG.png)


+ 初始化版本庫 `git init`
+ 查看當前狀態 `git status`
+ 將檔案加到整備區 `git add <檔案>`
+ 將檔案提交本地版本庫 `git commit -m "<修改內容>"`
    + 略過整備區 `git commit -a -m "<修改內容>"`
+ 查看commit紀錄 `git log`[^log]
    + 以鐵軌圖,版本簡寫和標題顯示 `git log --pretty=format:"%h %s" --graph`[^prettyformat]

+ 下載遠端版本庫 `git clone <版本庫網址>`
+ 新增遠端版本庫 `git remote add <遠端簡稱> <url>`
    + 檢視遠端`git remote show <遠端名稱>`
    + 重新命名遠端 `git remote rename <原本名稱> <後來名稱>`
    + 移除遠端 `git remote rm <遠端名稱>`
+ 下載遠端版本庫上本地沒有的檔案 `git fetch <遠端名稱>`
+ 推送到遠端 `git push <遠端名稱> <分支名稱>`
    + 推送時傳送標籤 `git push origin <標籤名>`

+ 新增檔案時 還沒加追蹤 清空工作目錄
    + 查看此次刪除內容 `git clin -n`
    + 強制清除檔案 `git clean -f`
+ 回顧觀看版本內容 `git checkout <版本編號>`
    + 返回最新的版本 `git checkout <master/最新版本名稱>`
+ 加入到整備區的檔案還原到工作目錄 `git reset <檔案名>`
    + 還原版本 `git reset HEAD^(幾個^還原幾個版本)`
        + `git reset HEAD~<個數>`還原n個版本
    + 還原版本更新檔案都放棄 `git reset Head^ --hard`
    + 還原到特定commit `git reset <版本編號> --hard`
+ 觀看詳細歷史紀錄 `git reflog`

+ 從遠端獲取檔案 `git fetch <遠端名稱>`

+ 新增分支 `git branch <分支名稱>`
+ 查看分支 `git branch`
+ 刪除分支 `git branch -d <分支名稱>(-D是強制刪除)`

+ 重新命名檔案 `git mv <原本名稱> <後來名稱>`[^method]
+ 移除檔案 `git rm`

[^log]: log指令參數 
    ```
    git log <參數>
    -------------------------------------------------
    選項                輸出說明
    -------------------------------------------------
    -p                  顯示每筆提交的補綴。
    
    --stat              顯示每筆提交中更動檔案的統計及摘要資訊。
    
    --shortstat         只顯示 --stat 提供的的訊息中關於更動、插入、刪除的文字。
    
    --name-only         在提交訊息後方顯示更動的檔案列表。
    
    --name-status       在檔案列表顯示「新增」、「更動」、「刪除」等資訊。
    
    --abbrev-commit     只顯示 SHA-1 校驗碼的前幾位數，而不是顯示全部 40 位數。
    
    --relative-date     以相對時間格式顯示日期（例如：「2 weeks ago」），
                        而不是使用完整的日期格式。
                            
    --graph             在輸出的日誌旁邊顯示分支及合併歷史的 ASCII 圖形。
    
    --pretty            以其它格式顯示提交。
                        選項包括 oneline、short、full、fuller
                        及可自訂格式的 format。
                        
    -(n)                只顯示最後 n 筆提交。

    --since, --after    列出特定日期後的提交。

    --until, --before   列出特定日期前的提交。

    --author            列出作者名字符合指定字串的提交。

    --committer         列出提交者名字符合指定字串的提交。

    --grep              列出提交訊息中符合指定字串的提交。

    -S                  列出修改檔案中有加入或移除指定字串的提交。
    -------------------------------------------------
    ```
[^prettyformat]: \-\-pretty指令參數 
    ```
    git log --pretty=format:"<參數>"
    -------------------------------------------------
    選項        輸出說明
    -------------------------------------------------
    %H        該提交 SHA-1 雜湊值
    
    %h        該提交簡短的 SHA-1 雜湊值
    
    %T        「樹（tree）」物件的 SHA-1 雜湊值
    
    %t        「樹」物件簡短的 SHA-1 雜湊值
    
    %P        （parent）提交的 SHA-1 雜湊值
    
    %p        親代提交簡短的 SHA-1 雜湊值
    
    %an        作者名字
    
    %ae        作者電子郵件
    
    %ad        作者日期（依據 --date 選項值而有不同的格式）
    
    %ar        作者日期，相對時間格式。
    
    %cn        提交者名字
    
    %ce        提交者電子郵件
    
    %cd        提交者日期
    
    %cr        提交者日期，相對時間格式。
    
    %s        標題
    -------------------------------------------------
    ```
[^method]: 正確用法
    ```
    $ mv README.md README
    $ git rm README.md
    $ git add README
    ```