取得項(xiàng)目的Git倉(cāng)庫(kù)
初始化
$ git init
添加文件
$ git add *.c
$ git add README
$ git commit -m “初次提交"
克隆
$ git clone
記錄每次更新到倉(cāng)庫(kù)
查看文件狀態(tài)
$ git status
跟蹤新文件
$ git add //如果此文件已經(jīng)add過(guò),再執(zhí)行此命令文件將被放到暫存區(qū),執(zhí)行后又修改文件然后提交厂抽,被提交的是add后的文件,修改的文件不會(huì)被提交暗甥,除非再次執(zhí)行add
忽略文件
# 此為注釋 – 將被 Git 忽略
# 忽略所有 .a 結(jié)尾的文件
*.a
# 但 lib.a 除外
!lib.a
# 僅僅忽略項(xiàng)目根目錄下的 TODO 文件框往,不包括 subdir/TODO
/TODO
# 忽略 build/ 目錄下的所有文件
build/
# 會(huì)忽略 doc/notes.txt 但不括 doc/server/arch.txt
doc/*.txt
# ignore all .txt files in the doc/ directory
doc/**/*.txt
查看已暫存和未暫存的文件
$ git diff 查看未暫存的文件和已暫存文件的差別
$ git diff --cached (--staged) 查看已暫存和上次提交文件的差別
提交
$ git commit -m
$ git commit -m -a 跳過(guò)暫存區(qū)梗醇,直接把修改過(guò)的文件提交
移除文件
$ git rm 從跟蹤清單移除文件連同工作目錄的文件也會(huì)被刪除
$ git rm -f 從暫存區(qū)和工作目錄移除文件
$ git rm \*~ 移除所有以~結(jié)尾的文件
$ git rm —-cached 從倉(cāng)庫(kù)知允、跟蹤列表、暫存區(qū)但是工作目錄的文件不會(huì)刪除
重命名文件
$ git mv file_from file_to
等同于
$ git mv README.txt README
$ git rm README.txt
$ git add README
查看提交歷史
$ git log 會(huì)列出所有更新記錄
$ git log -p -2 展開(kāi)2條詳細(xì)的更新記錄
$ git log -p —-word-diff -U1 對(duì)比單詞級(jí)別的差距,U1代表上下文的行為1行
$ git log —-stat 僅顯示簡(jiǎn)要的增刪行數(shù)
$ git log —-pretty=oneline|short|full|fuller 指定不同格式來(lái)展示提交記錄
$ git log --pretty=format:"%h - %an, %ar : %s” 格式化顯示文本
選項(xiàng) | 說(shuō)明 |
---|---|
-p | 按補(bǔ)丁格式顯示每個(gè)更新之間的差異叙谨。 |
--word-diff | 按 word diff 格式顯示差異温鸽。 |
--stat | 顯示每次更新的文件修改統(tǒng)計(jì)信息。 |
--shortstat | 只顯示 --stat 中最后的行數(shù)修改添加移除統(tǒng)計(jì)唉俗。 |
--name-only | 僅在提交信息后顯示已修改的文件清單嗤朴。 |
--name-status | 顯示新增配椭、修改虫溜、刪除的文件清單。 |
--abbrev-commit | 僅顯示 SHA-1 的前幾個(gè)字符股缸,而非所有的 40 個(gè)字符衡楞。 |
--relative-date | 使用較短的相對(duì)時(shí)間顯示(比如,“2 weeks ago”)敦姻。 |
--graph | 顯示 ASCII 圖形表示的分支合并歷史瘾境。 |
--pretty | 使用其他格式顯示歷史提交信息×耄可用的選項(xiàng)包括 oneline迷守,short,full旺入,fuller 和 format(后跟指定格式)兑凿。 |
--oneline | --pretty=oneline --abbrev-commit的簡(jiǎn)化用法。 |
撤銷操作
修改最后一次提交
$ git commit --amend
取消已暫存的文件
$ git reset HEAD <file>… 取消暫存文件
撤銷修改
$ git checkout --<file>… 取消某個(gè)文件的修改
遠(yuǎn)程倉(cāng)庫(kù)的使用
查看遠(yuǎn)程倉(cāng)庫(kù)
$ git remote 列出每個(gè)遠(yuǎn)程倉(cāng)庫(kù)遠(yuǎn)程名字
$ git remote -v 顯示每個(gè)遠(yuǎn)程倉(cāng)庫(kù)對(duì)應(yīng)的克隆地址
添加遠(yuǎn)程倉(cāng)庫(kù)
$ git remote add [shortname] [url]
從遠(yuǎn)程倉(cāng)庫(kù)抓取數(shù)據(jù)
$ git fetch [remote-name]
推送到遠(yuǎn)程倉(cāng)庫(kù)
$ git push [remote-name] [branch-name]
顯示遠(yuǎn)程倉(cāng)庫(kù)信息
$ git remote show [remote-name]
重命名遠(yuǎn)程名字
$ git remote rename [name] [ toname]
刪除遠(yuǎn)程倉(cāng)庫(kù)
$ git remote rm [remotename]
打標(biāo)簽
列出已有標(biāo)簽
$ git tag
$ git tag -l “v1.2.*” 列出V1.2系列的標(biāo)簽
新建標(biāo)簽
- 輕量級(jí) :它就是個(gè)指向特定提交對(duì)象的引用
- 含附注 :存儲(chǔ)在倉(cāng)庫(kù)中的一個(gè)獨(dú)立對(duì)象茵瘾,它有自身的校驗(yàn)和信息礼华,包含著標(biāo)簽的名字,電子郵件地址和日期拗秘,以及標(biāo)簽說(shuō)明圣絮,標(biāo)簽本身也允許使用 GNU Privacy Guard (GPG) 來(lái)簽署或驗(yàn)證。
$ git tag -a v1.4 -m 'my version 1.4' 含附注的標(biāo)簽 -m指定了對(duì)應(yīng)標(biāo)簽的說(shuō)明
$ git show v1.4 查看該標(biāo)簽的說(shuō)明
$ git tag -s v1.5 -m 'my signed 1.5 tag' 用GPG簽署標(biāo)簽
$ git tag v1.4 新建一個(gè)輕量級(jí)標(biāo)簽
驗(yàn)證標(biāo)簽
$ git tag -v [tag-name] 驗(yàn)證標(biāo)簽
后期添加標(biāo)簽
$ git tag -a v1.4 fedg2
分享標(biāo)簽
$ git push origin [tagname]
$ git push origin --tags 推送所有標(biāo)簽到遠(yuǎn)程倉(cāng)庫(kù)
技巧和竅門(mén)
Git 命令別名
$ git config --global alias.co checkout 用checkout的別名為co