Git 學習筆記

位於索引中的檔案 : Tracked files(追蹤的檔案) 不再索引內的檔案 : Untracked files(未被追蹤的檔案)
- working tree 是工作目錄
- 只要 被索引中的檔案內容 跟 工作目錄中的檔案內容一致 就會被稱為一個 “Stage“狀態
- 只要 被索引中的檔案內容 跟 工作目錄中的檔案內容不一致 就會被稱為一個 “Unstage“狀態
Git 指令

Command: git
-m= messageinit= 建立add= 加入 GIT 索引rm= 刪除status= 看目前狀態
git diff
顯示差異
-
HEAD= 比對變更與目前最新版的變更差異 -
-cached= 索引裡的變更與本地儲存庫最新的變更差異 -
--binary= 比對二進位檔案差異 -
--name-only= 比對工作目錄檔案,列出檔案名稱 -
--name-status= 列出工作目錄及索引之間有多少檔案是被異動的git diff 'src-commit' 'tgt-commit'commit 與 commit 比較差異git diff 'commit'與目標 commit 差異
git reset
重置索引
-p= 選取索引中的那些變更有哪些內容要從索引中移除HEAD= 重置索引及分支(加 ~1 是恢復前一版本,以此類推)--mixed= 重置 HEAD 及索引(預設值)--hard= 重置 HEAD,索引及工作目錄--hard ORIG_HEAD= 回復前版本(永遠回復 reset 之前的版本)
git revert
還原歷史上的版本,做相反的 commit
-h= help 列出功能--abort= 取消--continue= 繼續--quit= 停止
git clone
下載遠端儲存庫
git clone --no-checkout 'URL' 'Filename'會以 filename 為主並且不做 checkoutgit clone --bare 'url'把儲存庫的本身下載下來
git log
看紀錄
-
--oneline= 短的 log 版本 -
--oneline --graph= log 版本+線圖可加 “-數字” 以顯示筆數git log --oneline --graph --all -10全部的歷史資料取 10 筆
git reflog
會記錄工作目錄底下做過的每一次的版控紀錄
git checkout
取出/取回
-
-- 'name'= 從索引裡面把 name 檔案的內容整個複製回工作目錄 -
--orphan= 建立全新分支且沒有 parentscheckout -b "Filename"可以新增分支後切換
git switch
切換分支
git clean
清除工作目錄
-f= 強制刪除-d= 刪除整個工作目錄-x= 執行清除任務,並忽略.gitignore 設定-n= 看那些檔案會被清除
git stash
暫存工作目錄的變更
save 'message'= 暫存pop= 取回暫存
git branch
查看分支/新增分支
-
-d= 刪除分支(只能刪除已經合併的分支) -
-D= 強制刪除分支 -
-r= 列出所有遠端追蹤分支 -
-a= 列出所有遠端+本地分支git branch --merged列出所有已合併過的分支git branch --no-merged列出所有未合併過的分支git branch --merged | egrep -v "(^\*|master|develop)" | xargs git branch -d刪除所有已合併過的分支(CMD/Powershell 不可用)
git merge
合併分支
-
--ff= 快轉合併(預設) -
--no-ff= 非快轉合併 -
--ff-only= 僅有快轉合併 -
--no-commit= 不提交的合併 -
--abort= 放棄合併 -
--squash= 壓縮後合併(不可以與關閉快轉機制一起使用,且不會有合併線圖出現)git merge --no-ff --no-commit 'branchName'合併可以不 commit
git rebase 'commit_id'
重訂基底合併
-i--continue= 繼續--skip= 跳過--abort= 取消
git cherry-pick
正向挑選合併
--continue= 繼續--quit= 停止--abort= 取消
git push
推送至遠端
-
--all= 全部分支推送git push -u origin master將本地分支(master)與遠端分支(origin)建立連結git push origin --delete‘branchName’ 刪除遠端分支(要先把本地刪除)
git fetch
將遠端儲存庫的變更下載回來
--prune將遠端已刪除的分支剪除
git pull
將遠端儲存庫拉下來
pull=git fetch+git mergegit pull --rebase=git fetch+git rebase
git remote
遠端
-
-v= 列出網址 -
-h= remote 的 help -
set-url= 更改網址git remote set-url origin 'new url'將舊網址改成新網址
git commit
建立版本
git apply
套用版本(進版)
--check= 確認檔案--reverse= 退版(簡寫-R)
git config
GIT 的設定
加上
--global可以設定
-
core.quotepath= 改 false 可顯示中文 -
core.editor= 查看目前編輯器git 只能顯示 ASCII 的字元
-
git bash 以外的環境要改中文
set LC_ALL=C.UTF-8- 更改環境變數 (永久儲存)
setx LC_ALL C.UTF-8 - MAC/Linux
export LC_ALL=C.UTF-8
- 更改環境變數 (永久儲存)
衝突問題
顯示訊息:
-
content = 內容衝突
建議用手動合併