2022年Git基本指令 .pdf
Git 初學筆記-指令操作教學Git 是分散式的版本控制系統,從架設、簡易操作、設定,此篇主要是整理基本操作、遠端操作等.註:Git 的範圍太廣了,把這篇當作是初學入門就好了.:)注意事項由project/.git/config 可知:(若有更多,亦可由此得知)origin(remote)是 Repository 的版本master(branch)是local 端,正在修改的版本平常沒事不要去動到origin,如果動到,可用git reset-hard 回覆到沒修改的狀態.Git 新增檔案git add.#將資料先暫存到staging area,add 之後再新增的資料,於此次commit 不會含在裡面.git add filename git add modify-file#修改過的檔案,也要add.(不然commit 要加上-a 的參數)git add-u#只加修改過的檔案,新增的檔案不加入.git add-i#進入互動模式Git 刪除檔案git rm filename Git 修改檔名、搬移目錄名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 9 页 -git mv filename new-filename Git status 看目前的狀態git status#看目前檔案的狀態Git Commit git commit git commit-m commit message git commit-a-m commit-message#將所有修改過得檔案都commit,但是新增的檔案還是得要先add.git commit-a-v#-v 可以看到檔案哪些內容有被更改,-a 把所有修改的檔案都commit Git 產生新的branch git branch#列出目前有多少branch git branch new-branch#產生新的branch(名稱:new-branch),若沒有特別指定,會由目前所在的branch/master 直接複製一份.git branch new-branch master#由master 產 生 新 的branch(new-branch)git branch new-branch v1#由tag(v1)產 生 新的branch(new-branch)git branch-d new-branch#刪除new-branch git branch-D new-branch#強制刪除new-branch git checkout-b new-branch test#產生新的branch,並同時切換過去new-branch#與 remote repository 有關名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 9 页 -git branch-r#列出所有Repository branch git branch-a#列出所有branch Git checkout 切換branch git checkout branch-name#切換到branch-name git checkout master#切換到master git checkout-b new-branch master#從master 建 立 新 的new-branch,並同時切換過去new-branch git checkout-b newbranch#由現 在的 環境 為基 礎,建 立 新 的branch git checkout-b newbranch origin#於origin 的基礎,建立新的branch git checkout filename#還原檔案到Repository 狀態git checkout HEAD.#將所有檔案都checkout 出來(最後一次commit 的版 本),注 意,若 有 修改 的 檔 案 都 會 被 還 原 到 上一 版.(git checkout-f 亦可)git checkout xxxx.#將 所 有 檔 案 都checkout 出 來(xxxx commit 的 版 本,xxxx 是commit 的 編號 前四 碼),注 意,若 有修改的檔案都會被還原到上一版.git checkout-*#恢復到上一次Commit 的狀態(*改成檔名,就可以只恢復那個檔案)Git diff git diff master#與 Master 有哪些資料不同git diff-cached#比較staging area 跟本來的Repository git diff tag1 tag2#tag1,與tag2 的diff 名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 9 页 -git diff tag1:file1 tag2:file2#tag1,與tag2 的file1,file2 的diff git diff#比較目前位置與 staging area git diff-cached#比較staging area 與Repository 差異git diff HEAD#比較目前位置與Repository 差別git diff new-branch#比較目前位置與branch(new-branch)的差別git diff-stat Git Tag git tag v1 ebff#log 是commit ebff810c461ad1924fc422fd1d01db23d858773b 的 內 容,設 定 簡短好記得Tag:v1 git tag 中文ebff#tag 也可以下中文,任何文字都可以git tag-d 中文#把tag=中文刪掉Git log git log#將所有log 秀出git log-all#秀出所有的log(含 branch)git log-p#將所有log 和修改過得檔案內容列出git log-stat-summary#查每個版本間的更動檔案和行數git log filename#這個檔案的所有log git log directory#這個目錄的所有log git log-Sfoo()#log 裡面有foo()這字串的.git log-no-merges#不要秀出merge 的log git log-since=2 weeks ago#最後這2 週的log git log-pretty=oneline#秀log 的方式名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 9 页 -git log-pretty=short#秀 log 的方式git log-pretty=format:%h was%an,%ar,message:%s git log-pretty=format:%h:%s-graph#會有簡單的文字圖形化,分支等.git log-pretty=format:%h:%s-topo-order-graph#依照主分支排序git log-pretty=format:%h:%s-date-order-graph#依照時間排序Git show git show ebff#查log 是commit ebff810c461ad1924fc422fd1d01db23d858773b 的內容git show v1#查tag:v1 的修改內容git show v1:test.txt#查 tag:v1 的test.txt 檔案修改內容git show HEAD#此版本修改的資料git show HEAD#前一版修改的資料git show HEAD#前前一版修改的資料git show HEAD4#前前前前一版修改的資料Git reset 還原-mixed|-soft|-hard-mixed 僅是重置索引的位置,而不改變你的工作樹中的任何東西(即,檔中的所有變化都會被保留,也不標記他們為待提交狀態),並且提示什麼內容還沒有被更新了。這個是預設的選項。-soft 既不觸動索引的位置,也不改變工作樹中的任何內容,我們只是要求這些內容成為一份好的內容(之後才成為真正的提交內容)。這個選項使你可以將已經提交的東西重新逆轉至“已更新但未提交(Updated but n名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 9 页 -ot Check in)”的狀態。就像已經執行過git-update-index命令,但是還沒有執行git-commit命令一樣。-hard 將工作樹中的內容和頭索引都切換至指定的版本位置中,也就是說自 之後的所有的跟蹤內容和工作樹中的內容都會全部丟失。因此,這個選項要慎用,除非你已經非常確定你的確不想再看到那些東西了。git reset-hard HEAD#還原到最前面git reset-hard HEAD3 git reset-soft HEAD3 git reset HEAD filename#從staging area 狀態回到unstaging 或untracked(檔案內容並不會改變)Git grep git grep te v1#查 v1 是否有te 的字串git grep te#查現在版本是否有te 的字串Git stash 暫存git stash#丟進暫存區git stash list#列出所有暫存區的資料git stash pop#取出最新的一筆,並移除.git stash apply#取出最新的一筆stash 暫存資料.但是stash 資料不移除git stash clear#把stash 都清掉Git merge 合併git merge git merge master 名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 9 页 -git merge new-branch 下述轉載自:ihower 的 Git 版本控制系統(2)開branch 分支和操作遠端repo.x Straight merge 預 設 的 合 併 模 式,會 有 全 部 的 被 合 併 的branch commits 記 錄 加上 一 個merge-commit,看 線 圖 會 有 兩 條Parents 線,並 保 留 所 有commit log。Squashed commit 壓 縮 成 只 有 一 個merge-commit,不 會 有 被 合 併 的log。SVN 的merge 即 是 如 此。cherry-pick 只 合 併 指 定 的commit rebase 變 更branch 的分 支 點:找 到 要 合 併 的 兩 個branch 的 共 同 的 祖 先,然 後先 只 用 要 被merge 的branch 來commit 一 遍,然 後 再 用 目 前branch 再commit 上 去。這 方 式 僅 適 合 還 沒 分 享 給 別 人 的local branch,因 為 等 於 砍 掉重 練commit log。指 令 操 作git merge#合 併 另 一 個branch,若 沒 有conflict 衝 突 會 直 接commit。若 需 要 解 決 衝 突 則 會 再 多 一 個commit。git merge-squash#將 另 一 個branch 的commit 合 併 為 一筆,特 別 適 合 需 要 做 實 驗 的fixes bug 或new feature,最 後 只 留 結 果。合 併完 不 會 幫 你 先commit。git cherry-pick 321d76f#只 合 併 特 定 其 中 一 個commit。如 果 要 合 併 多 個,可 以加 上-n 指 令 就 不 會 先 幫 你commit,這 樣 可 以 多pick幾 個 要 合 併 的commit,最 後 再git commit 即 可。Git blame git blame filename#關於此檔案的所有commit 紀錄名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 9 页 -Git 還原已被刪除的檔案git ls-files-d#查看已刪除的檔案git ls-files-d|xargs git checkout-#將已刪除的檔案還原Git 維護git gc#整理前和整理後的差異,可由:git count-objects 看到.git fsck-full Git revert 資料還原git revert HEAD#回到前一次commit 的狀態git revert HEAD#回到前前一次commit 的狀態git reset HEAD filename#從staging area 狀態回到unstaging 或untracked(檔案內容並不會改變)git checkout filename#從unstaging 狀 態 回 到 最 初Repository 的檔案(檔案內容變回修改前)以下與遠端Repository 相關Git remote 維護遠端檔案git remote git remote add new-branch http:/.tw/project.git#增加遠端Repository 的branch(origin-project)git remote show#秀出現在有多少Repository git remote rm new-branch#刪掉git remote update#更新所有Repository branch git branch-r#列出所有Repository branch 名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 9 页 -抓取/切換Repository 的branch git fetch origin git checkout-track-b reps-branch origin/reps-branch#抓取reps-branch,並將此branch 建立於local 的reps-branch 刪除Repository 的 branch git push origin:heads/reps-branch 名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 9 页 -