---
# System prepended metadata

title: Git筆記
tags: [Git，協作]

---

---
tags: Git，協作
---
# Git筆記
### Git基本操作
* `git init`：初始化。
* .gitignore:將不要加入版控的檔案放入。
* `git add "file" or git add .`：加入要版控檔案。
* `git commit –m "<填寫版本資訊>`：建立版本及版本名
* `git commit –am"<填寫版本資訊>"`：建立版本及版本名,等於`git add`+`git commit –m`
* `git branch –v`：確認主幹及分支及版本。
* `git log`:該分支的檢視提交的歷史記錄。
* `git status`：確認狀態。
### Git分支切換
* `git checkout "分支名"`:切換分支。
* `git branch    "分支名稱"`：新增分支並命名。
* `git branch –d "分支名稱"`：刪除分支。
### Git 合併
* `git merge "分支名稱"`：git merge "分支名稱"，將 "分支名稱" 合併進目前所在的分支。
#### 在 Merge 之前想試試看有沒有衝突？
```git
git merge cat --no-commit --no-ff  #Fast Forward
```
> 這個參數會假裝這次的合併失敗，並且不會產生新的 commit，讓使用者有機會可以在 commit 前再做一些事。
而後面再加上 --no-ff 參數則是不希望 Git 使用 Fast Forward 方式合併

### Git reset and  revert
* `git reset e12d8ef^`:每一個 ^ 符號表示「前一次」的意思，所以 e12d8ef^ 是指在 e12d8ef 這個 Commit 的「前一次」，若很多次可以用~n。git reset e12d8ef~n。e12d8ef為版本代號
> 指向提交時用`~`(Tilde)和`^`(caret)，指向某個提交的相對位置。最常用的就是在HEAD後面加上`~`(Tilde）可以指向第幾代的父代；`^`(caret) 可以指向幾世代以前的父代。

* `--hard`:此種模式完全不保留原始 commit 的任何資訊，會連同資料夾中實體檔案內容都進行重置，也就是直接將工作區、暫緩區及 git 目錄都重置成目標Reset結點的資料內容。
* `git revert`:新增一個 Commit 來反轉（或説取消）另一個 Commit 的內容，新增一個 Commit 來反轉（或説取消）另一個 Commit 的內容。