git remote
git remote -v
git init
git add xxx
git commit -m 'xxx'
git remote add origin ssh://software@172.16.0.30/~/yafeng/.git
git push origin master
git remote show origin
git clone ssh://software@172.16.0.30/~/yafeng/.git
要 參與任何一個 Git 項目的協作,必須要了解該如何管理遠程倉庫.遠程倉庫是指托管在網絡上的項目倉庫,可能會有好多個,其中有些你只能讀,另外有些可以寫.同他人協作開發某 個項目時,需要管理這些遠程倉庫,以便推送或拉取數據,分享各自的工作進展.管理遠程倉庫的工作,包括添加遠程庫,移除廢棄的遠程庫,管理各式遠程庫分 支,定義是否跟蹤這些分支,等等.本節我們將詳細討論遠程庫的管理和使用.
查看當前的遠程庫
要查看當前配置有哪些遠程倉庫,可以用 git remote 命令,它會列出每個遠程庫的簡短名字.在克隆完某個項目后,至少可以看到一個名為 origin 的遠程庫,Git 默認使用這個名字來標識你所克隆的原始倉庫:
$ git clone git://github.com/schacon/ticgit.git
Initialized empty Git repository in /private/tmp/ticgit/.git/
remote: Counting objects: 595, done.
remote: Compressing objects: 100% (269/269), done.
remote: Total 595 (delta 255), reused 589 (delta 253)
Receiving objects: 100% (595/595), 73.31 KiB | 1 KiB/s, done.
Resolving deltas: 100% (255/255), done.
$ cd ticgit
(1)git remote 不帶參數,列出已經存在的遠程分支
$ git remote
origin
(2)git remote -v | --verbose 列出詳細信息,在每一個名字后面列出其遠程url
此時, -v 選項(譯注:此為 –verbose 的簡寫,取首字母),顯示對應的克隆地址:
$ git remote -v
origin git://github.com/schacon/ticgit.git如果有多個遠程倉庫,此命令將全部列出.比如在我的 Grit 項目中,可以看到:
$ cd grit
$ git remote -v
bakkdoor git://github.com/bakkdoor/grit.git
cho45 git://github.com/cho45/grit.git
defunkt git://github.com/defunkt/grit.git
koke git://github.com/koke/grit.git
origin 這樣一來,我就可以非常輕松地從這些用戶的倉庫中,拉取他們的提交到本地.請注意,上面列出的地址只有 origin 用的是 SSH URL 鏈接,所以也只有這個倉庫我能推送數據上去(我們會在第四章解釋原因).
添加遠程倉庫
要添加一個新的遠程倉庫,可以指定一個簡單的名字,以便將來引用,運行 git remote add [shortname] [url]:
$ git remote
origin
$ git remote add pb git://github.com/paulboone/ticgit.git
$ git remote -v
origin git://github.com/schacon/ticgit.git
pb git://github.com/paulboone/ticgit.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://github.com/paulboone/ticgit
* [new branch] master -> pb/master
* [new branch] ticgit -> pb/ticgit
現在,Paul 的主干分支(master)已經完全可以在本地訪問了,對應的名字是 pb/master,你可以將它合並到自己的某個分支,或者切換到這個分支,看看有些什么有趣的更
二。通過git remote 建立遠程倉庫
建立遠程倉庫
最近一直在學習使用git來管理自己的程序,總是今天東學一點,明天西湊一點,到用的時候,總是有些茫然不知所措。
在博客園里看見一篇老好的文章,教我們做筆記啦,但是做完筆記還是要記得總結哦!
來吧,讓我們一起來總結吧,今天先來看看git遠程的倉庫是怎么建立的。
當然,使用git嘛,第一步肯定是得新建一個git倉庫,總得有個操作的空間吧,巧婦難為無米之炊嘛。
1.初始化一個空的git倉庫
1 software@debian:~$ mkdir yafeng 2 software@debian:~$ cd yafeng/ 3 software@debian:~/yafeng$ ls 4 software@debian:~/yafeng$ git init 5 Initialized empty Git repository in /home/software/yafeng/.git/ 6 software@debian:~/yafeng$
命令注釋:
在上面的命令中,真正去初始化的是第四行的那句---git init
當然,還有很多同學會看見加了參數--bare的命令,這個命令會在我們以后慢慢給大家解釋,對於不是作為共享倉庫,而是作為一個自己操作的倉庫,上面這樣就足夠了。
好了,現在yafeng目錄就是我們的據點---git倉庫了哦。
下面我們總要做點什么的吧,入寶山總不能光看着哦:
2.向倉庫提交我們寫的文件
1 software@debian:~/yafeng$ echo "our first git repository" >> file 2 software@debian:~/yafeng$ ls 3 file 4 software@debian:~/yafeng$ git add file 5 software@debian:~/yafeng$ git commit -m "the first file to commit" file 6 [master (root-commit) 0c72641] the first file to commit 7 1 files changed, 1 insertions(+), 0 deletions(-) 8 create mode 100644 file 9 software@debian:~/yafeng$
命令解釋:
我們在倉庫中新建了一個文件file,作為我們的示例文件。
第4行:將file文件的信息添加到git倉庫的索引庫中,並沒有真正添加到庫。當然上例中的file文件只是我們的示例,它是一個路徑,因此,可以是文件,更可以是目錄。
第5行:將索引庫中的內容向git倉庫進行提交。這步之后文件file才算真正提交到拉git倉庫中。雙引號中的內容是根據每次修改的不同內容,由我們自己去填寫的,
很多人會看見
git commit -a -m “ ”
這條的命令是在你已經add了一個或多個文件過之后,然后修改了這些文件,就可以使用該命令進行提交。
好了,不管怎么樣,終於是將文件提交到庫了。可是現在的倉庫只是一個本地的倉庫,我們的目標是變成遠程倉庫哦,繼續吧。
3.在本地倉庫添加一個遠程倉庫,並將本地的master分支跟蹤到遠程分支
1 software@debian:~/yafeng$ git remote add origin ssh://software@172.16.0.30/~/yafeng/.git 2 software@debian:~/yafeng$ git push origin master 3 software@172.16.0.30's password: 4 Everything up-to-date 5 software@debian:~/yafeng$
命令注釋:
第1行:在本地倉庫添加一個遠程倉庫,當然ssh后面的地址是我們本地倉庫的地址.
第2行:將本地master分支跟蹤到遠程分支,在git倉庫建立之初就會有一個默認的master分支,當然你如果建立了其他分支,也可以用同樣的方法去跟蹤.
對於分支的事情,我們會在以后細細的講述.
做到拉這一步了嗎?我告訴你,你已經完成目的了哦,現在的git倉庫已經是一個遠程倉庫了,
不相信嗎?我們來測試一次阿:
4.測試
現在本機上看看:
1 software@debian:~/yafeng$ git remote show origin 2 software@172.16.0.30's password: 3 * remote origin 4 Fetch URL: ssh://software@172.16.0.30/~/yafeng/.git 5 Push URL: ssh://software@172.16.0.30/~/yafeng/.git 6 HEAD branch: master 7 Remote branch: 8 master tracked 9 Local ref configured for 'git push': 10 master pushes to master (up to date) 11 software@debian:~/yafeng$
代碼注釋:
第1行:顯示遠程信息
很多看見這還是會不以為然的,這又能說明什么呢?好,那就來點實際的:
在另一個機子上,遠程clone
1 root@yafeng-VirtualBox:~# ls 2 bin gittest read_temp 3 root@yafeng-VirtualBox:~# git clone ssh://software@172.16.0.30/~/yafeng/.git 4 Cloning into yafeng... 5 software@172.16.0.30's password: 6 remote: Counting objects: 9, done. 7 remote: Compressing objects: 100% (3/3), done. 8 remote: Total 9 (delta 0), reused 0 (delta 0) 9 Receiving objects: 100% (9/9), done. 10 root@yafeng-VirtualBox:~# ls 11 bin gittest read_temp yafeng 12 root@yafeng-VirtualBox:~# cd yafeng/ 13 root@yafeng-VirtualBox:~/yafeng# ls 14 file 15 root@yafeng-VirtualBox:~/yafeng#
代碼注釋:
第3行:就是遠程clone倉庫.很明顯的對比可以知道多了yafeng目錄,而這個yafeng目錄里的內容和我們另外一台機子上的內容一樣
至此,一個簡單的git遠程倉庫就建好了,簡單不,試試吧!!