Git 學習筆記《遠端倉庫與標籤管理》 (四)

2022-07-17 05:51:10 字數 4539 閱讀 4173

什麼是遠端倉庫?

就像第一章介紹的那樣,遠端倉庫可以儲存你編寫的所有原始碼和資源檔案.

甚至也可以當網盤使,不過當然有很多契合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

$ gitlog--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

newfile 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 isfreesoftware.

\ 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可...