什麼是 git
git 是一種版本控制系統,講簡單一點,例如我們以前在交作業的時候,
我們可能會有以下的檔案命名方式:
- 我的作業-1
- 我的作業-2
- 我的作業-2-修改版
- 我的作業-2-修改版-最終版
- 我的作業-2-修改版-最終版-final
之類的……有沒有感到很親切呢?
那如果…今天有一個專門幫我們命名這些檔案名稱的工具,
而且他能幫我們命名好好的,不會像上面那樣可能自己最後都搞不清楚哪個才是最後一版,
是不是就很棒呢! git 就是專門幫助我們管理這東西的工具。
安裝 git
sudo apt-get install git-all
基本使用概念
git 的使用是以一個資料夾底下的全部內容為單位的,
在開始進行 git 前,第一步就是要在該目錄底下進行 git 的初始化 「git init」。
git 基本指令總整理
| 指令 | 功能 | 備註 |
|---|---|---|
| git init | 初始化要進行 git 的資料夾 | |
| git add [指定檔案] | 增加更新 (新增) 內容 | 可以使用「.」代表目錄底下全部的更新檔案 |
| git reset [指定檔案] | 取消增加的內容 | 與 git add 相反的功能 |
| git commit | 確認增加的內容,並發佈一個新版本 | |
| git status | 確認現在 git 的情況 (會告訴你有沒有新增內容) | |
| git push --set-upstream [branch名字] | 第一次上傳時設定串流 | 想要備份到遠端,才需要參考此步驟 |
| git push | 上傳至遠端上備份 | |
| git pull | 從遠端上備份下載 | 不同裝置、不同位置都適用 |
git branch 相關總整理
| 指令 | 功能 | 備註 |
|---|---|---|
| git fetch | 從遠端拉指定版本下來 | 與 git pull 不同在於不會自動 merge,而 git pull 只能拉到最新版 |
| git checkout [a] | branch切換至a | |
| git checkout -b [a] | 開一個新的branch,命名為a,並切換至a (如果沒有存在,就是全新的,容易造成) | |
| git checkout -b [a] [b] | 從遠端拉b的branch,命名為a,並切換至a (如果找不到b,會有error) | |
| git log | git log | |
| git log -1 | 最後一個 git log | |
| git branch | show出目前所在的branch | |
| git branch -a | show出目前所有的branch | |
| git branch -D [a] | kill branch a | |
| cat .git/config | 直接show出來 | |
| more .git/config | 看更多目前branch的資訊 | |
| git remote show origin | show出目前遠端所有的branch | |
| git push -u origin [branch name] | 第一次需要幫遠端(remote)建立branch | |
| git push --set-upstream origin [branch name] | 等價於上面 | |
| git push | 第二次以後就能直接push | |
| git --version | git version | |
| git status | 查看目前tracked/untracked files | |
| git commit -m "msg" | commit 'msg' | |
| git merge --no-ff [branch] | merge branch | |
| git config --list | config infomation | |
| git config --global user.name [username] | ||
| git config --global user.email [email] | ||
| git reset HEAD | 退回最後一個commit | |
| git reset [] | 退回指定的commit | |
| git diff ../../.gitignore | 比較 diff | |
| git checkout -- ../../.gitignore | 取消tracked | |
| git checkout -- ../../core/ftModule/IMPFTTracker.cpp | 取消tracked |
Reference
https://www.itread01.com/content/1545176737.html
https://stackoverflow.com/questions/348170/how-do-i-undo-git-add-before-commit