獲取git倉庫
在現(xiàn)有目錄中初始化倉庫(如果你打算使用Git對現(xiàn)有項(xiàng)目進(jìn)行管理)
$ git init
執(zhí)行完會在當(dāng)前目錄下創(chuàng)建一個(gè).git的子目錄盏道,這個(gè)子目錄含有你初始化的Git倉庫中所有的必須文件
克隆現(xiàn)有的倉庫(Git 倉庫中的每一個(gè)文件的每一個(gè)版本都將被拉取下來)
$ git clone https://github.com/libgit2/libgit2
//自定義本地倉庫的名字
$ git clone https://github.com/libgit2/libgit2 mylibgit
添加提交文件
git add
檢查當(dāng)前文件狀態(tài)
$ git status
//工作目錄相當(dāng)干凈越锈,所有已跟蹤的文件在上次提交之后都未被更改過
On branch master
nothing to commit, working directory clean
//創(chuàng)建新的README文件
$ echo 'My Project' > README
//檢查當(dāng)前文件狀態(tài)
$ git status
//有一個(gè)新的未跟蹤文件:Git之前的快照中沒有這些文件
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
README
nothing added to commit but untracked files present (use "git add" to track)
//跟蹤README文件
$ git add README
//查看當(dāng)前文件狀態(tài)
$ git status
//當(dāng)前文件狀態(tài)已被跟蹤并且處于暫存狀態(tài)
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: README
//暫存已修改文件嫡纠,查看狀態(tài)
$ git status
//結(jié)果 Changes not staged for commit: 已跟蹤文件的內(nèi)容發(fā)生了變化伊佃,但還沒有放到暫存區(qū)碳褒。 README同時(shí)出現(xiàn)了暫存區(qū)和非暫存區(qū) 如果提交 會提交最后一次運(yùn)行g(shù)it add的版本 不是當(dāng)前的最新
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: README
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: README
//將已經(jīng)修改的文件加入到暫存區(qū)
$ git add README
//查看當(dāng)前文件的狀態(tài)
$ git status
//結(jié)果 狀態(tài)為 被提交
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: README
忽略文件
一般我們總會有些文件無需納入Git的管理犀变,也不需要出現(xiàn)在未跟蹤文件列表
比如日志文件茸歧,或者編譯過程中創(chuàng)建的臨時(shí)文件等
我們可以創(chuàng)建一個(gè)名為 .gitignore 的文件,列出要忽略的文件模式
$ cat .gitignore
//所有以 .o 或 .a 結(jié)尾的文件
*.[oa]
//忽略所有以波浪符(~)結(jié)尾的文件
*~
查看修改內(nèi)容
查看未暫存的文件修改了哪一部分 只顯示尚未暫存的改動(dòng)丈挟,而不是自上次提交以來所做的所有改動(dòng)
$ git diff
//結(jié)果
diff --git a/README b/README
index 17589d7..4732b90 100644
--- a/README
+++ b/README
@@ -1,2 +1,2 @@
o My Project
-封建帝國海軍返還甲方刁卜,給
\ No newline at end of file
+封建帝國海軍返還甲方,給反倒是三國殺
\ No newline at end of file
查看已暫存的將要添加到下次提交的內(nèi)容
git diff --cached
git diff --staged 更高級版本
//結(jié)果
diff --git a/README b/README
new file mode 100644
index 0000000..17589d7
--- /dev/null
+++ b/README
@@ -0,0 +1,2 @@
+o My Project
+封建帝國海軍返還甲方曙咽,給
\ No newline at end of file
提交更新 git commit
提交之前先查看項(xiàng)目狀態(tài) 是不是都暫存起來 才會運(yùn)行提交命令
git commit -m //添加注釋
//結(jié)果
$ git commit -m '一個(gè)文件'
[master (root-commit) f8db1c9] 一個(gè)文件
1 file changed, 2 insertions(+)
create mode 100644 README
//跳過使用暫存區(qū)域 Git 就會自動(dòng)把所有已經(jīng)跟蹤過的文件暫存起來一并提交
$ git commit -a -m '一個(gè)文件'
//簡單從工作目錄中手工刪除文件
$ rm README
//結(jié)果
$ git status
On branch master
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: README
no changes added to commit (use "git add" and/or "git commit -a")
//記錄此次移除文件的操作
git rm README
移動(dòng)文件
$ git mv README.md README
查看提交歷史
//會按提交時(shí)間列出所有的更新蛔趴,最近的更新排在最上面
git log
//-p 顯示每次提交的內(nèi)容差異
git log -p
//-2 表示最近2次提交
git log -p -2
//--stat 每次提交的簡略的統(tǒng)計(jì)信息
git log --stat
撤銷操作
//提交完才發(fā)現(xiàn)漏掉了幾個(gè)文件沒有添加,或者是提交的信息寫錯(cuò)了
$ git commit --amend
//例如例朱,你提交后發(fā)現(xiàn)忘記了暫存某些需要的修改孝情,可以像下面這樣操作:
$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend
取消暫存文件
你已經(jīng)修改了兩個(gè)文件并且想要將它們作為兩次獨(dú)立的修改提交,但是卻意外地輸入了 git add * 暫存了它們兩個(gè)茉继。 如何只取消暫存兩個(gè)中的一個(gè)呢?
$ git reset HEAD CONTRIBUTING.md
撤銷對文件的修改
//如果你并不想保留對 CONTRIBUTING.md 文件的修改怎么辦蚀乔? 你該如何方便地撤消修改——將它還原成上次提交時(shí)的樣子(或者剛克隆完的樣子烁竭,或者剛把它放入工作目錄時(shí)的樣子)?
$ git checkout -- CONTRIBUTING.md
遠(yuǎn)程倉庫的使用
查看遠(yuǎn)程倉庫
git remote
//-v吉挣,會顯示需要讀寫遠(yuǎn)程倉庫使用的 Git 保存的簡寫與其對應(yīng)的 URL派撕。
$ git remote -v
//結(jié)果
origin https://github.com/schacon/ticgit (fetch)
添加遠(yuǎn)程倉庫
git remote add <shortname> <url>
$ git remote add pb https://github.com/paulboone/ticgit
如果你想拉取某個(gè)倉庫中有但你沒有的信息
$ git fetch pb
查看某個(gè)遠(yuǎn)程倉庫
$ git remote show origin
Git標(biāo)簽
列出標(biāo)簽
git tag
創(chuàng)建附注標(biāo)簽
$ git tag -a v1.4 -m "my version 1.4"
-a 創(chuàng)建一個(gè)附注標(biāo)簽
-m 選項(xiàng)指定了一條將會存儲在標(biāo)簽中的信息
創(chuàng)建輕量標(biāo)簽 只需要提供標(biāo)簽名字
$ git tag v1.4-lw
刪除輕量級標(biāo)簽
$ git tag -d v1.4-lw
Git別名 git config
$ git config --global alias.co checkout