---
# System prepended metadata

title: Git 操作指令
tags: [Git, Shannon]

---

# Git 操作指令
###### tags: `Shannon`,`Git`

# 基本指令
- 查看狀態: `git status`
- 新增內容: `echo "hello, git" > welcome.html`
- 新增到站存區
    - `git add .` : 只會新增目前檔案根子檔案
    - `git add --all`: 不管在檔案的哪一層目錄執行效果都一樣，所有異動都會被加至暫存區。
- Commit
    - 基本: `git commit -m "what did you do"`
    - 沒有add也可以commit: `git commit -a -m "update content"`
    - 何時應該用commit?
        - 完成一個「任務」的時候：不管是大到完成一整個電子商務的金流系統，還是小至只加了一個頁面甚至只是改幾個字，都算是「任務」。
        - 下班的時候：雖然可能還沒完全搞定任務，但至少先 Commit 今天的進度，除了備份之外，也讓公司知道你今天有在努力工作。（然後帶回家繼續苦命的做？）
        - 你想要 Commit 的時候就可以 Commit。

- 查看commit過的紀錄
    - `git log`: 可以所有Commit過的紀錄，顯示 SHA-1 / author / time / 做了甚麼內容
- 找特定Commit的資訊
    - 找姓名`git log --oneline --author="ShannonHung"`
    - 找commit訊息內容`git log --oneline --grep="WTF"`
    - 找特定時間`git log --oneline --since="9am" --until="12am" --after="2017-01"`
    - 找Commit檔案內容`git log -S "Ruby"`

目前讀到範圍:https://gitbook.tw/chapters/using-git/rename-and-delete-file.html

# 檔案 
## 查看檔案列表 `ls -al`
- ls 列出目前目錄所有檔案
- al a是指小數點開頭檔案顯示 l是完整檔案權限 建立 修改時間
## 建立檔案目錄
- `touch index.html`
	- touch 如果檔案不在會建立一個空白檔 如果已經存在，會改變該檔案的最後修改時間不會改變內容
- `mkdir demo`
	- 在目前所在目錄建立一個demo目錄

## 檔案操作
- `cp index.html about.html` 複製檔案
- `mv index.html about.html` 改檔名
- `rm index.html` 刪除


# 追加檔案到最近一次commit
- 先add到站存區
- `git commit --amend --no-edit` 這樣就可以把檔案併到最後一次的commit，`--no-edit`指的是不要編輯commit訊息