1. 程式人生 > >Git基礎入門(四)Git基本操作2

Git基礎入門(四)Git基本操作2

git 操作 基礎

忽略文件:

在實際開發過程中總有些文件無需納入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