Git基礎入門(四)Git基本操作2
忽略文件:
在實際開發過程中總有些文件無需納入Git的管理,比如日誌文件、臨時文件等
在這種情況下,我們可以在工作目錄中創建一個名為.gitignore的文件,列出要忽略的文件名或者表達式
例:cat .gitignore
*.[oa]
*~
*.log
第一行告訴Git忽略所有以.o或.a結尾的文件
第二行告訴Git忽略所有以 ~ 結尾的文件
第三行告訴Git忽略所有以.log結尾的文件
要養成一開始就設置好.gitignore文件的習慣,以免將來誤提交這類無用的文件
.gitignore的格式規範:
所有空行或者以#開頭的行都會被Git忽略
可以使用標準的glob模式匹配
匹配模式可以以(/)開頭防止遞歸
匹配模式可以以(/)結尾指定目錄
要忽略指定模式以外的文件或目錄,可以在模式前加上驚嘆號(!)取反
glob模式指shell命令行所使用的統配符
*:匹配零個或多個任意字符
?:匹配任意一個字符
**:表示匹配任意中間目錄,比如‘a/**/z‘,可以匹配 a/z,a/b/z 或‘a/b/c/z‘等
[abc]:匹配任何一個列在方括號中的字符;
[0-9]:匹配0到9的數字
[a-z]:匹配a到z的字母
[A-Z]:匹配A到Z的字母
.gitignore例子:
# no .a files
*.a
# but do track lib.a, even though you‘re ignoring .a files above
!lib.a
# only ignore the TODO file in the current directory, not subdir/TODO
/TODO
# ignore all files in the build/ directory
build/
# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt
# ignore all .pdf files in the doc/ directory
doc/**/*.pdf
GitHub上有一個十分詳細的針對數十種項目及語言的.gitignore文件列表
地址:https://github.com/github/gitignore
git diff查看具體修改的內容
echo "/usr/bin/python" > test.py #修改文件
git diff #比較當前文件和快照中文件的差異
diff --git a/test.py b/test.py #產生差異的文件
index df2203b..d5aba22 100644
--- a/test.py
+++ b/test.py
@@ -1 +1 @@
-coding:utf-8 #"-"表示刪除的行
+/usr/bin/python #"+"表示新增的行
git diff --cached(或--staged)查看已暫存的下次提交裏的內容:
git add test.py #將文件添加到暫存區
git diff #這時使用git diff將什麽也不會輸出,應為文件已經放入暫存區
git diff --cached #查看暫存區的文件差異
diff --git a/test.py b/test.py
index df2203b..d5aba22 100644
--- a/test.py
+++ b/test.py
@@ -1 +1 @@
-coding:utf-8
+/usr/bin/python
git difftool #打開一個文本編輯器顯示文件差異(適合文件少時使用,較為直觀)
提交更新
在提交之前,請一定要確認還有什麽修改過的或新建的文件還沒有git add過,否則提交的時候不會記錄這些還沒暫存起來的變化
每次準備提交前,先用git status看下,是不是都已暫存起來了,然後再運行git commit提交
git commit會啟動一個默認文本編輯器以便輸入本次提交的說明(使用git config --global core.editor=‘vim‘設定默認的編輯器)
編輯器會顯示類似下面的信息:
# Please enter the commit message for your changes. Lines starting
# with ‘#‘ will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
# modified: test.py
#開頭的為註釋信息不會提交到git倉庫中
如果想要更詳細信息,可以用-v選項,這會將你所做的改變的diff輸出放到編輯器
退出編輯器時,Git會丟掉註釋行,用你輸入提交附帶信息生成一次提交
git commit -m "version-6" #直接在命令行輸入說明信息
[master 3687f51] version-6 #提交後輸出的信息(master分支名稱,3687f51校驗和,version-6 註釋信息)
1 file changed, 1 insertion(+), 1 deletion(-)
提交時記錄的是放在暫存區域的快照,任何還未暫存的仍然保持已修改狀態
每一次運行提交操作,都是對項目作一次快照,以後可以回到這個狀態,或者進行比較
跳過使用暫存區域
使用git commit -a時Git會自動把所有已經跟蹤過的文件暫存起來一並提交,從而跳過git add步驟,但不會把未跟蹤的文件暫存
移除文件
git rm #從已跟蹤的文件清單中刪除,並連帶從工作目錄中刪除指定的文件
git rm命令後面可以列出文件或者目錄的名字,也可以使用glob模式
如果使用shell命令rm刪除文件,需要再運行git rm記錄此次移除文件的操作
如果刪除之前修改過並且已添加到暫存區域,則必須-f強制刪除,這是一種安全特性,用於防止誤刪還沒有添加到快照的數據,這樣的數據不能被Git恢復
如果想把文件從Git倉庫中刪除,但仍然希望保留在當前工作目錄中。(想讓文件保留在磁盤,但是並不想讓 Git 繼續跟蹤)
git rm --cached <file> #從git倉庫中刪除文件或目錄
例:
git rm --cached test.py
rm ‘test.py‘
git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
deleted: test.py
Untracked files:
(use "git add <file>..." to include in what will be committed)
test.py #從git
ls
test.py
移動文件或改名
git mv <file-from> <file-to>
git mv相當於下面三條命令的結合:
mv README.md README
git rm README.md
git add README
本文出自 “自動化運維” 博客,請務必保留此出處http://hongchen99.blog.51cto.com/12534281/1975991
Git基礎入門(四)Git基本操作2