上一篇文章介紹了Git遠端倉庫的一些使用,但是還是有些東西需要補充一下,所以有了這個續篇。
.gitignore
前一篇中,我們介紹了Git的patch功能,當我們生成patch之後,”git status”就會顯示patch檔案是”Untracked files”。當然,我們也沒有必要去跟蹤這個patch檔案。
同樣,專案中可能會經常生成一些Git系統不需要追蹤(track)的檔案,在編譯生成過程中 產生的檔案或是程式設計器生成的臨時備份檔案。我們可以在使用”git add”是避免新增這些檔案到暫存區中,但是每次都這麼做會比較麻煩。
所以,為了滿足上面的需求,Git系統中有一個忽略特定檔案的功能。我們可以在工作目錄中新增一個叫”.gitignore”的檔案,來告訴Git系統要忽略哪些檔案。
可以看到,當我們使用新增過”.gitignore”檔案後,檔案中的過濾規則就生效了。
注意:
- 在windows環境中不支援檔名為”.gitignore”,所以可以把檔案命名為”.gitignore.”
- “.gitignore”檔案只會對當前目錄以及所有當前目錄的子目錄生效;也就是說如果我們把”.gitignore”檔案移到”advance”資料夾中,那麼過濾規則就是會對”advance”及其子目錄生效了
- 建議把”.gitignore”檔案提交到倉庫裡,這樣其他的開發人員也可以共享這套過濾規則
過濾語法
下面介紹一下常用的過濾語法:
- 斜槓”/”開頭表示目錄
- 星號”*”通配多個字元
- 問號”?”通配單個字元
- 方括號”[]”包含單個字元的匹配列表
- 歎號”!”表示不忽略匹配到的檔案或目錄
下面舉一些簡單的例子:
- foo/*:忽略目錄 foo下的全部內容
- *.[oa]:忽略所有.o和.a檔案
- !calc.o:不能忽略calc.o檔案
exclude檔案
在Git倉庫中有一個”.git/info/exclude”檔案,當我們指向對特定的倉庫使用特定的過濾規則時,我們可以把過濾語句寫在exclude檔案中。
細看遠端倉庫命令
前面一篇文章簡單的介紹了push、pull命令的使用,這裡將進一步展開介紹。
首先,我們看看”git branch”和”git remote”命令,它們可以給我們提供很多有用的資訊。
-
git branch
-
git remote
git push
push命令用來將本地分支的更新推送的遠端倉庫,該命令的格式如下:
1 |
git push <遠端主機名> <本地分支名>:<遠端分支名> |
-
通過”git push”更新、建立遠端分支
-
通過”git push”刪除遠端分支
-
省略分支資訊的”git push origin”
通過這種方式push的時候,報出了一個警告,提示”push.default”沒有設定。
在Git中push有兩種設定:
- simple方式:只是推送當前分支的更新到對應的遠端分支;在Git 2.0以後就預設使用這種方式
- matching方式:會推送所有有對應的遠端分支的本地分支
根據Git的提示,我們可以通過”git config –global push.default”來設定push方式。
git pull
pull命令的作用是取回遠端某個分支的更新,然後合併到指定的本地分支,pull命令格式如下:
1 |
git pull <遠端主機名> <遠端分支名>:<本地分支名> |
-
git pull origin release-1.0:release1.0
取回origin主機release-1.0分支的更新,與本地的release-1.0分支合併。
一般來說,pull命令都是在關聯的本地分支和遠端分支之間進行;當然,你可以使用不關聯的本地分支和遠端分支進行pull操作,但是不建議這麼做。
如果真的需要別的遠端分支上的更新,建議使用”cherry-pick”把這個更新拿到關聯的遠端分支上,然後在關聯分支上進行pull操作。
-
省略本地分支名:git pull origin release-1.0
表示取回origin/next遠端分支的更新,然後合併到當前分支
-
如果當前分支存在上游(關聯)分支,可以直接使用git pull origin
表示本地的當前分支自動與關聯的origin主機分支進行合併
“git pull”操作實際上等價於,先執行”git fetch”獲得遠端更新,然後”git merge”與本地分支進行合併。
當然,pull命令也支援使用rebase模式進行合併:
1 |
git pull --rebase <遠端主機名> <遠端分支名>:<本地分支名> |
在這種情況下,”git pull”就等價於”git fetch”加上”git rebase”。
建議使用”git fetch”加上”git rebase”的方式來取代”git pull”獲取遠端更新,具體原因後面再介紹。
git fetch
fetch命令比較簡單,作用就是將遠端的更新取回到本地。
-
git fetch origin
該命令表示將遠端origin主機的所有分支上的更新取回本地
-
git fetch origin master
該命令只取回遠端origin主機上master分支上的更新
總結
通過這些介紹,相信大家一定會更加熟悉遠端倉庫操作命令,使得在Git環境中工作的更加順利。