Git常用基礎命令

2022-08-11 15:30:29 字數 4265 閱讀 2502

要參與任何乙個 git 專案的協作,必須要了解該如何管理遠端倉庫。遠端倉庫是指託管在網路上的專案倉庫,可能會有好多個,其中有些你只能讀,另外有些可以寫。同他人協作開發某 個專案時,需要管理這些遠端倉庫,以便推送或拉取資料,分享各自的工作進展。管理遠端倉庫的工作,包括新增遠端庫,移除廢棄的遠端庫,管理各式遠端庫分 支,定義是否跟蹤這些分支,等等。本節我們將詳細討論遠端庫的管理和使用。

檢視當前的遠端庫

要新增乙個新的遠端倉庫,可以指定乙個簡單的名字,以便將來引用,執行 git remote add [shortname] [url]:

$ git remote

origin

$ git remote add pb git:

$ git remote -v

origin  git:

pb  git:

現在可以用字串 pb 指代對應的倉庫位址了。比如說,要抓取所有 paul 有的,但本地倉庫沒有的資訊,可以執行 git fetch pb:

$ git fetch pb

remote: counting objects: 58, done.

remote: compressing objects: 100% (41/41), done.

remote: total 44 (delta 24), reused 1 (delta 0)

unpacking objects: 100% (44/44), done.

from git:

* [new branch]      master     -> pb/master

* [new branch]      ticgit     -> pb/ticgit

現在,paul 的主幹分支(master)已經完全可以在本地訪問了,對應的名字是 pb/master,你可以將它合併到自己的某個分支,或者切換到這個分支,看看有些什麼有趣的更新。

從遠端倉庫抓取資料

正如之前所看到的,可以用下面的命令從遠端倉庫抓取資料到本地:

$ git fetch [remote-name]

此命令會到遠端倉庫中拉取所有你本地倉庫中還沒有的資料。執行完成後,你就可以在本地訪問該遠端倉庫中的所有分支,將其中某個分支合併到本地,或者只是取出某個分支,一**竟。(我們會在第三章詳細討論關於分支的概念和操作。)

如果是轉殖了乙個倉庫,此命令會自動將遠端倉庫歸於 origin 名下。所以,git fetch origin

會抓取從你上次轉殖以來別人上傳到此遠端倉庫中的所有更新(或是上次 fetch 以來別人提交的更新)。有一點很重要,需要記住,fetch

命令只是將遠端的資料拉到本地倉庫,並不自動合併到當前工作分支,只有當你確實準備好了,才能手工合併。(說

明:事先需要建立好遠端的倉庫,然後執行:git remote add [倉庫名] [倉庫url],git fetch

[遠端倉庫名],即可抓取到遠端倉庫資料到本地,再用git merge

remotes/[倉庫名]/master就可以將遠端倉庫merge到本地當前branch。這種分支方式比較適合獨立-整合開發,即各自開發測試好後

再整合在一起。比如,android的framework和ap開發。

可以使用--bare 選項執行git init 來設定乙個空倉庫,這會初始化乙個不包含工作目錄的倉庫。

$ cd /opt/git

$ mkdir project.git

$ cd project.git

$ git --bare init

這時,join,josie 或者jessica 就可以把它加為遠端倉庫,推送乙個分支,從而把第乙個版本的工程上傳到倉庫裡了。)

如果設定了某個分支用於跟蹤某個遠端倉庫的分支(參見下節及第三章的內容),可以使用 git pull

命令自動抓取資料下來,然後將遠端分支自動合併到本地倉庫中當前分支。在日常工作中我們經常這麼用,既快且好。實際上,預設情況下 git clone

命令本質上就是自動建立了本地的 master 分支用於跟蹤遠端倉庫中的 master 分支(假設遠端倉庫確實有 master

分支)。所以一般我們執行 git pull,目的都是要從原始轉殖的遠端倉庫中抓取資料後,合併到工作目錄中當前分支。

推送資料到遠端倉庫

專案進行到乙個階段,要同別人分享目前的成果,可以將本地倉庫中的資料推送到遠端倉庫。實現這個任務的命令很簡單: git push

[remote-name] [branch-name]。如果要把本地的 master 分支推送到 origin

伺服器上(再次說明下,轉殖操作會自動使用預設的 master 和 origin 名字),可以執行下面的命令:

$ git push origin master

只有在所轉殖的伺服器上有寫許可權,或者同一時刻沒有其他人在推資料,這條命令才會如期完成任務。如果在你推資料前,已經有其他人推送了若干更新,那

你的推送操作就會被駁回。你必須先把他們的更新抓取到本地,並到自己的專案中,然後才可以再次推送。有關推送資料到遠端倉庫的詳細內容見第三章。

檢視遠端倉庫資訊

我們可以通過命令 git remote show [remote-name] 檢視某個遠端倉庫的詳細資訊,比如要看所轉殖的origin 倉庫,可以執行:

$ git remote show origin

* remote origin

url: git:

remote branch merged with 'git pull' while on branch master

master

tracked remote branches

master

ticgit

除了對應的轉殖位址外,它還給出了許多額外的資訊。它友善地告訴你如果是在 master 分支,就可以用git pull 命令抓取資料合併到本地。另外還列出了所有處於跟蹤狀態中的遠端分支。

實際使用過程中,git remote show 給出的資訊可能會像這樣:

$ git remote show origin

* remote origin

url: [email protected]:defunkt/github.git

remote branch merged with 'git pull' while on branch issues

issues

remote branch merged with 'git pull' while on branch master

master

new remote branches (next fetch will store in remotes/origin)

caching

stale tracking branches (use 'git remote prune')

libwalker

walker2

tracked remote branches

aclapiv2

dashboard2

issues

master

postgres

local branch pushed with 'git push'

master:master

它告訴我們,執行 git push 時預設推送的分支是什麼(譯註:最後兩行)。它還顯示了有哪些遠端分支還沒有同步 到本地(譯註:第六行的

caching 分支),哪些已同步到本地的遠端分支在遠端伺服器上已被刪除(譯註:stale tracking branches

下面的兩個分支),以及執行 git pull 時將自動合併哪些分支(譯註:前四行中列出的 issues 和 master

分支)。(此命令也可以檢視到本地分支和遠端倉庫分支的對應關係。)

遠端倉庫的刪除和重新命名

在新版 git 中可以用 git remote rename 命令修改某個遠端倉庫的簡短名稱,比如想把 pb 改成 paul,可以這麼執行:

$ git remote rename pb paul

$ git remote

origin

paul

注意,對遠端倉庫的重新命名,也會使對應的分支名稱發生變化,原來的 pb/master 分支現在成了paul/master。

碰到遠端倉庫伺服器遷移,或者原來的轉殖映象不再使用,又或者某個參與者不再貢獻**,那麼需要移除對應的遠端倉庫,可以執行 git remote rm 命令:

$ git remote rm paul

$ git remote

origin

Git常用基礎命令總結

三個月沒有用git了,好多東西太模糊,把常用的稍微總結一下 git add temp.tex 新增檔案到本地版本庫 git rm temp.tex 移除檔案 git commit 提交操作 git merge origin mater 從遠端伺服器上的master分支拿檔案下了與本地的檔案匹配 gi...

Git常用基礎命令總結

這是我人生第一篇部落格,就記錄一些工作中經常使用用到的git命令吧,這些東西以前都是儲存到筆記本上的,挪到這裡來,希望能給新手們帶來方便。大家不能寄希望於看了筆記就能夠領會,忘看一些內容的時候,能夠上手聯絡。我就不長篇大論的介紹什麼是git了,總之就是乙個管理 的工具。一 簡單配置git 1.設定名...

Git基礎 Git常用命令

檢視 新增 提交 刪除 找回,重置修改檔案 git help 顯示command的help git show 顯示某次提交的內容 git show id git co 拋棄工作區修改 git co 拋棄工作區修改 git add 將工作檔案修改提交到本地暫存區 git add 將所有修改過的工作檔案...