什麼是遠端倉庫?
就像第一章介紹的那樣,遠端倉庫可以儲存你編寫的所有原始碼和資源檔案.
甚至也可以當網盤使,不過當然有很多契合git管理文字的特性.
下面就要以 github 為示例遠端倉庫進行介紹. (也可以自己弄一台伺服器作遠端倉庫).
建立倉庫
在主頁找到 +new repository 或者右上角的加號裡有。輸入名字 描述 然後沒錢只能public就能確定了。然後呢,點名字開啟你的倉庫。(主頁右下角可以找到)
關於與遠端倉庫的連線
首先你開啟你的保險箱得先證明身份吧,不然我怎麼知道你是客戶可以放東西?
那麼如何進行身份的確認呢? 當然是用密碼啦,不過這可意味著你每次要輸入密碼,而是通過一種ssh key的東西。使用?
1$ ssh-keygen -t rsa
直接回車就行了,不用設定密碼。
這樣乙個命令會在~/.ssh 裡建立乙個私鑰和乙個公鑰(通常分別叫id_rsa和id_rsa.pub ,rsa 是加密方式,還有一種dsa方式)。
就像你可以自己做一把鑰匙(私鑰)和鎖(公鑰)。把鎖掛在你的箱子上,然後用自己的私鑰就可以開啟了。
不同於現實的是,你可以掛很多把鎖,一把開啟就可以放東西了~而且只是放東西有限制,不是拿東西。想讓拿東西有限制,花錢買vip吧~
現在先在github註冊乙個使用者。然後點右上角的 account settings。再點ssh keys。點add ssh keys。標題取個看得懂的。然後開啟你~/.ssh 下的id_rsa.pub(用gedit ~/.ssh/id_rsa.pub就行了 cat 也可以)
把裡面的內容複製進去,確定就可以了。這樣你的箱子就掛上了你自己做的鎖。如果想讓別人也能往你箱子裡放東西,讓他把鎖(公鑰)發給你就好了。
現在進入你的本地倉庫。輸入
?$git remote add origin [email protected]:csdbianhua/learninggithub.git
這樣就把本地庫和遠端倉庫關聯起來了。 orgin是你給遠端庫取的名字 ,後面的位址應該是你複製的sshclone url 。
關聯別人的是可以,但是你推送的話沒有在我這裡掛鎖你也是放不了東西的。
然後是推送你的版本庫。?1
$ git push -u origin master
加上了-u引數,git不但會把本地的master分支內容推送的遠端新的master分支,還會把本地的master分支和遠端的master分支關聯起來
以後提交的話就可以不用加u了(第一次推送這個分支時用就行了)。
下面是轉殖遠端庫的方法。?1
$ git clone [email protected]:csdbianhua/learninggithub.git
這條命令就會在當前目錄下建立乙個learninggithub資料夾,裡面就是庫里的檔案。
另外,可以使用其他形式鏈結,使用https鏈結速度較慢。
多人合作
$ git remote -v 顯示詳細(帶-v)的遠端倉庫資訊,包括抓取和推送資訊的位址。沒有許可權就看不到push的位址。
現在你的小夥伴可以在別的電腦上clone遠端庫到本地。
已經有的話,可以用?1
$git pull
來讓遠端庫與本地合併。
clone 預設的話 就只有master分支了。
想要別的分支 需要用這個命令本地建立並轉殖dev?1
$ git checkout -b dev origin/dev
並用?
1$ git push origin dev
來推送dev分支。
萬一有推送上去有衝突怎麼辦?你只能pull回來到本地然後手動解決衝突即可。就像上章講的分支合併的衝突處理一樣的。
有時候$git pull可能會失敗了,這時候你看提示如果是這樣there is no tracking information for the current branch.
那是你沒有繫結本地的分支到遠端倉庫上。用?1
$ git branch --set-upstream dev origin/dev
來繫結分支。
好了 pull回來了 衝突解決了 add 然後commit -m "some message" 然後 git push origin dev 吧。
改了別人的沒有給你許可權的開源專案又想推送上去的話,可以發起乙個pull request。專案的管理者可以同意也可以不同意。
標籤是什麼?
標籤就是指你給某一刻某個分支的commit打的標籤。
管理標籤
比如現在你切換到master分支。 鍵入?1
$git tag v1.1
這樣就打了乙個標籤 v1.1 給master最後乙個commit?1
$ git tag
檢視所有標籤,按字母順序排序的。
想給某次commit打標籤的話 ,用?1
$ git
log
--pretty=oneline --abbrev-commit
可以一行一行列出commit的列表。下面是我這裡的情況
54a09c4 just test
90c7aee commit test
b26199e add licence.txt
7ce407c wrote a readme file
這樣想給add licence.txt 打個標籤的話。鍵入?
1$ git tag v1.0 b26199e
就可以了,想要看標籤所在commit的資訊,輸入?1
2$ git show v1.0
commit b26199e24c11a9be640c26f5399eb3e240c77553
author: 大大大大大沐魘
date: tue aug 5 15:35:32 2014 +0800
add licence.txt
diff --git a/license.txt b/license.txt
new
file mode 100644
index 0000000..bda4d91
--- /dev/null
+++ b/license.txt
@@ -0,0 +1 @@
+my name is hanson
\ no newline at end of file
diff --git a/readme.txt b/readme.txt
index d8036c1..0740acc 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,3 @@
-git is a version controlsystem
.
-git isfree
software.
\ no newline at end of file
還可以 ?1
$ git tag -a v1.0 -m
"some text"
b26199e
這樣來在打標籤的同時寫一些備註(-a 指定標籤 -m 指定備註 )?1
$ git tag -s v1.0 -m
"some text"
b26199e
-a 換成 -s 的話就會用私鑰簽名這個標籤。必須要安裝 gpg。此簽名不可偽造。
刪除標籤用?1
$ git tag -d v1.0
把特定標籤推送到遠端?1
$ git push origin v1.0
把所有標籤推送到遠端?1
$ git push origin --tags
刪除遠端標籤的話
先刪除本地的。?1
$ git tag -d v0.9
然後再刪除遠端的,格式像下面這樣。?1
$ git push origin :refs/tags/v0.9
Git學習筆記 遠端倉庫
接下來就是git牛逼的地方,分布式控制。實際情況往往是這樣,找一台電腦充當伺服器的角色,每天24小時開機,其他每個人都從這個 伺服器 倉庫轉殖乙份到自己的電腦上,並且各自把各自的提交推送到伺服器倉庫裡,也從伺服器倉庫中拉取別人的提交。這樣你能及時取得新版本,伺服器掛掉也沒事,因為其他機器上也有存檔。...
git 學習筆記 遠端倉庫
git是分布式版本控制系統,同乙個git倉庫,可以分布到不同的機器上。怎麼分布呢?最早,肯定只有一台機器有乙個原始版本庫,此後,別的機器可以 轉殖 這個原始版本庫,而且每台機器的版本庫其實都是一樣的,並沒有主次之分。你肯定會想,至少需要兩台機器才能玩遠端庫不是?但是我只有一台電腦,怎麼玩?其實一台電...
Git與遠端倉庫。。。
ssh keygen t rsa c 2524236389 qq.com 然後一路回車,使用預設值即可。如果順利的話,可以在使用者主目錄裡找到.ssh目錄,裡面有id rsa和id rsa.pub,這兩個檔案就是ssh key 的金鑰對,id rsa是私鑰,id rsa.pub是公鑰。注意 key可...