把本地倉庫關聯(lián)到GitHub倉庫
通過第一篇Git+GitHub,構建自己的開源倉庫之初識Git的操作,我們已經有了一個本地倉庫git-test了,現(xiàn)在把它發(fā)布到我的GitHub倉庫里,怎么操作呢?
-
配置SSH加密信息
由于本地Git倉庫和GitHub倉庫之間的傳輸是通過SSH加密的,所以,首先要做的就是配置SSH加密信息。-
生成SSH Key:因為安裝完git后,SSH也會默認安裝上,所以,在Git Bash輸入命令ssh,會出現(xiàn)下面的內容:
ssh信息
證明ssh已經安裝在電腦里了。現(xiàn)在可以輸入生成ssh key的命令了:
ssh-keygen -t rsa
-
后面執(zhí)行三個回車(不包括上面這條命令的回車),然后在你的用戶目錄下會生成.ssh文件夾,是隱藏文件,里面有以下內容(known_hosts文件暫時可以忽略):

-
添加公鑰到GitHub賬戶
id_rsa是私鑰,id_rsa.pub是公鑰(文件類型是Microsoft Publish的那個),用編輯器打開公鑰,拷貝里面的內容;然后登陸你的GitHub賬戶,打開“settings”,點擊左側“SSH and GPG keys”頁面,然后,點“New SSH Key”,填上任意Title(也可不填),在Key文本框里粘貼剛才拷貝的公鑰:
拷貝公鑰點“Add SSH Key”,你就應該看到上面的列表中已經添加的Key。
添加公鑰成功
-
配置用戶名和郵箱
用戶名是你GitHub賬戶的用戶名,郵箱是你GitHub賬戶注冊用的郵箱git config --global user.name "your-github-account-name" git config --global user.email "your-github-email@163.com"
-
關聯(lián)本地倉庫
-
登陸GitHub,然后,在右上角找到“Create a new repo”按鈕,創(chuàng)建一個新的倉庫:
創(chuàng)建GitHub Repo -
關聯(lián)倉庫,cd到本地倉庫根目錄,執(zhí)行:
git remote add origin git@github.com:chengshengyang/git-test.git
-
origin是倉庫的名字,這里使用的是約定俗成的名稱origin,chengshengyang一定要換成你自己的GitHub賬戶名字,也就是你配置的用戶名。
好了,這樣就關聯(lián)成功,可以試試在本地git-test倉庫里新建一個文本文檔test.txt,然后push到GitHub上。
Git常用命令操練
在Git Bash輸入git命令:

如果忘記了某個命令可以先到這里面來找找看,這里還對git的命令做了一個分類,每個命令后面對應一個簡短的說明。
-
狀態(tài)查詢
git status
這條命令的使用頻率是相當?shù)母撸卸喔吣兀?br>

這條命令簡直就像是我們在git中的眼睛一樣,時刻告訴我們當前的倉庫是什么情況,上次離開時的最后保存狀態(tài)是怎樣,接下來有哪些事需要做等等。
注意:如果家里的這臺電腦還沒有Git相關環(huán)境,請參考第一篇文章,準備好Git環(huán)境
-
查看改動內容
git diff
我們用git status查看到本地文件有改動,但是不知道具體有哪些變化,可以用這條命令來查看,比如我改動了本地的b.txt文件,輸入git status:
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)modified: b.txt no changes added to commit (use "git add" and/or "git commit -a")
現(xiàn)在知道b.txt的狀態(tài)是modified,那看看編輯了什么內容:
$ git diff b.txt diff --git a/b.txt b/b.txt index 6608a0d..2323b58 100644 --- a/b.txt +++ b/b.txt @@ -1,4 +1,3 @@ 00000000000000000000000000 111111111111111111111111111 -2222222222222222323333333333 -44444444444444 \\ No newline at end of file +2222222222222222323333333333 \\ No newline at end of file
減號是刪除,加號是新增,上面的內容是說最后一行從原來的“444444444444...”變成了現(xiàn)在的“2222222222222222323333333333”,也就是刪除了最后一行內容。
-
拉取服務器最新內容
git pull origin master
一般再開始新的工作之前,都要先保證自己的本地倉庫與遠程倉庫保持一致,也就是把自己的代碼更新到最新狀態(tài),這樣做的好處是減少沖突的可能性。git的大多數(shù)命令都是可以脫機工作的(push和pull必須聯(lián)網),因為,你的操作都是對本地倉庫的內容進行操作的,可以在不聯(lián)網的情況下,正常的提交代碼,這種便捷性是一些傳統(tǒng)的CVCS系統(tǒng)所不具備的,比如Perforce在不連接到服務器的情況下幾乎什么都做不了,包括編輯;Subversion和CVS雖然可以編輯內容,但無法提交代碼。
-
添加到暫存區(qū)
git add對本地代碼進行了增刪改操作之后,需要提交到遠程倉庫時,git add命令是第一步,把需要提交的內容添加到暫存區(qū),關于暫存區(qū)這個概念是git特有的,其他的傳統(tǒng)的版本控制系統(tǒng)并沒有這個概念,暫存區(qū)的作用是暫存本地將要提交的內容,然后提交時一次性將暫存區(qū)的內容全部提交到遠程倉庫。
問題來了,要添加的內容太多怎么辦?
git add -A
那萬一這里面又有一個文件a.java是我不小心修改的,或者暫時不想提交,執(zhí)行git add -A后怎么把a.java移除暫存區(qū)呢?
git rm --cached a.java
這樣就把文件a.java從暫存區(qū)中移除來了,但不會物理刪除,也不會被提交到遠程倉庫了。 -
內容提交
git commit -m "description for commit"把暫存區(qū)的內容提交到本地倉庫,這個時候,我們的內容在GitHub或者其他的遠程倉庫中還是沒有的,因為commit操作還是在本地進行的,也正因為如此,Git才可以脫機工作。那如果想要提交到GitHub遠程倉庫怎么辦呢?看下面
-
推送到遠程倉庫
git push origin master這條指令才是真正的把本地內容推送到遠程倉庫,別人才能更新到你的推送。
以上,基本上是使用Git進行版本控制的一個常用的最簡單的流程會用到的命令了,也是使用頻率比較高的命令,包括:拉取遠程倉庫最新內容-編輯本地倉庫內容-將編輯的內容添加到暫存區(qū)-修改暫存區(qū)內容-提交到本地倉庫-推送到遠程倉庫。
當然,我們在實際使用時絕不會這么簡單。git的命令也不少,這里不可能一次說完,關鍵在于經常使用、經常練習,沒事的時候多敲敲命令,領會每個命令的含義。
