遠程倉庫(GitHub)的使用
1、注冊登錄
在 GitHub 上注冊登錄
暫時忽略不講
2、創建新的遠程倉庫
在GitHub網站上創建新的倉庫。不管你是先在本地創建倉庫還是先在遠程創建倉庫,要想把代碼提交到遠程倉庫都是要先手動創建一個遠程倉庫,然后再讓兩個倉庫關聯起來。
3、克隆遠程倉庫的兩種方式及此時的關聯
3.1、克隆的兩種方式
3.1.1、使用SSH克隆及此時的關聯
當我們先在GitHub上創建了新倉庫,然后想把這個遠程倉庫克隆到本地的時候,可以使用 "git clone 倉庫地址" 命令。
如果希望在克隆的時候,自己定義要新建的項目目錄名稱,可以在上面的命令末尾指定新的名字:
$ git clone git://github.com/schacon/grit.git mygrit
使用克隆方式來將遠程倉庫克隆到本地時,Git 會自動將克隆的遠程倉庫命名為 origin ,而且將創建一個名為 master 的本地分支來跟蹤遠程分支 origin/master,你就能開始正常工作了。當然,你可以隨心所欲地設定為其它跟蹤分支,比如 origin 上除了 master 之外的其它分支。(剛克隆下來時可能找不到分支,這是因為你在GitHub和本地上什么提交都還沒有,當你在GitHub或者本地上提交了一次之后就自動會生成了master分支,且這時本地的master與遠程的master已經關聯)
倉庫地址可以在GitHub倉庫上找到

可以看到,既有使用SSH的方式,又有使用HTTPS的方式。
3.1.2、使用HTTPS方式克隆
使用HTTPS 方式克隆命令:git clone HTTPURL HTTPURL可以在遠程倉庫中找到,使用該方式可以只要知道URL就能直接克隆。但是每次往遠程倉庫 push 代碼都需要輸入賬號和密碼,這也是https方式的麻煩之處。
使用 http 方式克隆倉庫時,要想 push 代碼你必須是該倉庫的擁有者或者擁有者把你添加為協作者(Collaborators)后你才能用通過輸入你的郵箱和密碼方式實現 push 。
3.2、SSH克隆方式的使用
使用 SSH 方式克隆后,不必在每次 push 代碼是時輸入密碼,不過先要配置和添加 SSH Key 。
使用SSH 方式克隆命令:git clone sshURL sshURL可以在遠程倉庫中找到,使用該方式可以只要知道URL就能直接克隆。
SSH 方式在每次fetch和push代碼都不需要輸入賬號和密碼,但是必須在本地配置 SSH Key ,然后再在擁有需要開發的項目的 GitHub 賬號上添加 SSH Key。
3.2.1、生成 SSH Key(公鑰和私鑰)
$ ssh-keygen -t rsa -C "demo@qq.com"
如果之前已經生成過你可以回車直接覆蓋掉,生成過程會讓你輸入密碼,可以不輸入。直接回車直到生成成功。
注意:上面的郵箱地址可以隨便寫。
經查閱資料,上面的郵箱其實只是一個注釋而已。當你創建ssh的時候:-t(The type of the key to generate 密鑰的類型)、-C(comment to identify the key 用于識別這個密鑰的注釋) 。所以其實你可以輸入任何字符串而不僅僅是郵箱(不知道是誰天天要輸入郵箱,讓我糾結了很久),SSH Key 只是作為遠程倉庫認可你這臺主機的密碼而已,遠程倉庫并不能通過該密鑰識別出你的信息。
新理解:在本地配置不同的 user.email 時,所生成的 SSH Key 應該是不同的。而 GitHub 上能通過 SSH Key 得到提交者配置的 user.email ,因此也能得知提交者在 GitHub 上的賬號名。
每次往遠程倉庫上提交時顯示的提交者是在你配置 git 時的郵箱對應的賬號名,即 git config --global user.email aaa.@qq.com,GitHub上會自動識別使用 aaa.@qq.com郵箱注冊的賬號的名字,然后以該名字作為每次提交的提交者名。如何沒有以該郵箱注冊的賬號時,在GitHub上顯示的提交者將會是在本地配置的 user.name。
(在下載Git 的時候有配置過選項 git config --global uer.name ,在Git上通過 git log 命令顯示本地項目的提交版本時,可以看到 author 字段后面是配置的 uer.name ,但這個跟GitHub上顯示的提交者應該是不同的概念,一個是作者,一個是提交者。提交者可以理解為你希望以這個GitHub 賬號名來提交你的代碼,而作者應該就是你配置的修改代碼的作者名,可以理解為你本地的昵稱)
3.2.2、查看生成的SSH Key(公鑰)
$ cat ~/.ssh/id_rsa.pub
以上指令可以查看生成的公鑰,公鑰默認是放在 C:\Users\administrator\.ssh 目錄下
3.2.3、在GitHub上添加 SSH Key
通過目錄文件或者輸入git命令查看公鑰也就是 SSH Key,在GitHub上找到 Settings 選項,然后在 SSH and GPG keys 上添加 SSH Keys,也可以為添加的 key 命名。
使用 SSH Key 方式只有往GitHub上添加了 SSH Key 才能 push 代碼。所以除非你是遠程倉庫的擁有者,或者別人把你的ssh key添加了進去,然后你才能 push 代碼。總之,要想通過 SSH 方式提交代碼,就必須添加 SSH Key。
注意:一個SSH Key只能被添加進一個GitHub賬號上。
3.2.4、怎么理解 SSH Key
ssh是一種安全的傳輸模式,github要求推送代碼的用戶是合法的,所以每次推送時候都要輸入賬號密碼(在GitHub上注冊的賬號和密碼),用以驗證你是否為合法用戶。為了省去每次都要輸入密碼的步驟,采用shh來驗證你是否為合法用戶,在電腦生成一個唯一的ssh公鑰和私鑰(公鑰在id_rsa.pub 文件中,私鑰在id_rsa 文件中),然后把公鑰放到github上面,當你推送的時候,git就會匹配你的私鑰是否跟github上面的公鑰是配對的,正確就認為你是合法的,允許推送。sshkey可以理解為是你的身份標識,添加在github上面表明你是這個項目的一個開發人員。
SSH Key生成時需要輸入郵箱,這個郵箱你也可以輸入別人的,但是倉庫擁有者不一定會同意把你生成的這個公鑰放進GitHub上,而且要冒充別人也沒什么意義。
簡單來說,ssh key是識別一臺電腦的標識,通過 ssh 形式克隆時,只要你將這個標識放在 github 賬號上,就能通過這臺電腦拉取推送該賬號上的代碼。當管理員將你拉為成員時,你就能在自己的 github 賬號上看到這個項目,就能對這個項目進行開發,往 github 賬號上添加自己的 ssh key,就能識別你自己的電腦,就能通過該電腦拉取推送。
3.3、GitHub上壓縮包下載、ssh和HTTP克隆的區別
(1)通過下載壓縮包得到的 git 項目并沒有 .git 文件,所以并不能進行查看git版本、拉取推送等操作。
(2)只有通過 ssh 或者 http 形式克隆才能通過 git 操作拉取推送代碼,使用 http 形式第一次要輸入密碼,之后便不用了。
(3)通過HTTP形式克隆,需要輸入賬號密碼,這個賬號密碼應該就是對應著你的 github 上的賬號密碼,當然,你也可以在自己的電腦上輸入別人的 github 賬號密碼,這樣的話你就是以別人的身份在進行操作,在 github 上顯示的操作者也是你輸入的賬號實際擁有者。密碼如果改了就會提示重新輸入
3.4、GitHub 上的協作者
一個項目的擁有者可以在 GitHub 上添加自己的協作者,協作者在自己的 GitHub 賬號上可以看到該項目(不知道是否是自動生成還是需要協作者手動 fork),然后協作者可以在自己的 GitHub 上對該項目進行操作修改。在修改完成后可以發起合并請求,當項目的擁有者同意合并時,原項目將發生修改。
4、先創建本地倉庫再關聯
(1)先在本地初始化一個本地倉庫,在你想要創建倉庫的文件夾下執行命令:
$ git init
(2)添加遠程倉庫
先創建一個遠程倉庫,比如在GitHub上創建一個遠程倉庫。
為本地新建的倉庫添加一個遠程倉庫:
$ git remote add origin git://github.com/paulboone/ticgit.git //origin 是你指定的遠程倉庫的名字,當然你也可以更改為其他的名字,但是一般來說默認的或者第一個遠程倉庫的名字就用 origin
(一個本地倉庫可以添加多個遠程倉庫,但是不建議。如果有多個遠程倉庫時,往每個遠程倉庫提交代碼都要指定遠程倉庫名,或者git會使用默認的遠程倉庫名)
(3)將本地倉庫與遠程倉庫的master分支關聯
添加完遠程倉庫后你就可以在本地倉庫進行工作了,但是此時推送上遠程倉庫并不能成功,因為你還未將本地的任何分支與遠程倉庫的分支關聯。
將本地倉庫的master分支與遠程倉庫的master分支關聯:
$ git push -u origin master //origin 是遠程倉庫名,如果你遠程倉庫不是這個名字就改寫成你添加遠程倉庫時指定的名字。該命名是省略了遠程分支名
上面的命令將把本地的master分支推送到遠程的master分支,并且使兩個分支關聯,此后再次在master分支上推送,只需執行: git push
(有可能出現以下情況:)

這是因為此時本地倉庫還沒有提交過,是空的,所以在本地倉庫先提交一次版本即可
5、查看本地倉庫添加的遠程倉庫(git remote)
要查看當前配置有哪些遠程倉庫,可以用 git remote 命令,它會列出每個遠程庫的簡短名字。在克隆完某個項目后,至少可以看到一個名為 origin 的遠程庫,Git 默認使用這個名字來標識你所克隆的原始倉庫:

5.1、查看遠程倉庫對應的克隆地址(git remote -v)

5.2、查看某個遠程倉庫的詳細信息(git remote show 倉庫名)

除了對應的克隆地址外,它還給出了許多額外的信息。比如遠程分支等
5.3、遠程倉庫的刪除及重命名
(1)在新版 Git 中可以用 git remote rename 命令修改某個遠程倉庫在本地的簡稱,比如想把 yc02 改成 yyc,可以這么運行:

注意,對遠程倉庫的重命名,也會使對應的分支名稱發生變化,原來的 yc02/master 分支現在成了yyc/master。
(2)git remote rm 命令刪除對應的遠端倉庫


浙公網安備 33010602011771號