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

2021-09-20 14:43:22 字數 4034 閱讀 3214

忽略檔案:

在實際開發過程中總有些檔案無需納入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檔案列表

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 #從git倉庫中刪除檔案或目錄

例:git rm --cached test.py 

rm 'test.py'

git status

on branch master

changes to be committed:

(use "git reset head ..." to unstage)

deleted:    test.py

untracked files:

(use "git add ..." to include in what will be committed)

test.py                     #從git

lstest.py

移動檔案或改名

git mv

git mv相當於下面三條命令的結合:

mv readme.md readme

git rm readme.md

git add readme

git基本操作入門

git config global user.name your name git config global user.email your email email.com 從已有倉庫轉殖 git clone url新建乙個倉庫 mkdir project cd project git init3...

git基礎入門操作

git add,commit,reset,status,log等6個基礎操作 git add html 新增文件到本地倉庫的緩衝區 git commit m 提交備註 把快取區的檔案提交檔案到本地倉庫並備註 git push u origin master 把本地庫的內容推送到遠端倉庫 git lo...

Git入門命令 基本操作

建立git倉庫 mkdir gitcd gitgit init2.轉殖版本庫並新增注釋 git clone http 將檔案新增到版本庫中 git add 檢視版本庫狀態 git status發布修改 提交 git commit m 理由 推送到伺服器 git push git pull檢視歷史版本...