配置
由於我們的本地 Git 倉庫和 GitHub 倉庫之間的傳輸是通過 SSH 加密的,所以我們需要配置驗證信息
- 使用以下命令生成 SSH Key
// 後面的 **your\[email protected]** 改爲你在 github 上註冊的郵箱
ssh-keygen -t rsa -C "[email protected]"
- 然後會出現下面的提示要求確認路徑
Enter file in which to save the key (~/.ssh/id_rsa):
建議將路徑改成
~/.ssh/github
,也就是最後會保存爲github
而不是id_rsa
,這樣可以避免主要的 SSH 被覆蓋
- 按回車之後,會出現下面的提示要求輸入密碼,我們這使用默認的一路回車就行
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
爲什麼不設置呢? 因爲有些 Git 客戶端軟件沒有設置密碼的地方,省的以後每次輸入密碼麻煩
- 成功的話會在 ~/.ssh 創建文件 github 和 github.pub
- 打開 ~/.ssh/github.pub 文件,複製裏面的內容
- 回到 github 上,進入 Account => Settings(賬戶配置)
- 左邊選擇 SSH and GPG keys ,然後點擊 New SSH key 按鈕
- 進入 SSH 添加界面,title 設置標題,可以隨便填,粘貼在你電腦上生成的 key
雖然 title 可以隨便填寫,但我建議填入郵箱
-
點擊 Add SSH Key 按鈕,添加成功後界面如下所示
-
爲了驗證是否成功,輸入以下命令
ssh -T [email protected]
//如果出現下面的內容,則表示成功
Warning: Permanently added the RSA host key for IP address '52.74.223.119' to the list of known hosts.
Hi ijoywan! You've successfully authenticated, but GitHub does not provide shell access.
Github 官方上添加倉庫
- 登錄到 Github.com 官方後,點擊右上角的 + 號
- 然後點擊 New repository 會彈出如下所示
在 Repository name 輸入你想創建的倉庫的英文名,比如
ycbbs-git-tutorial
其它保持默認即可,不過你也可以做一些更改
- 填寫完成後點擊 “Create repository” 按鈕,就成功地創建了一個新的 Git 倉庫
上面這段信息告訴我們:既可以從這個倉庫克隆出新的倉庫,也可以把本地倉庫的內容推送到 GitHub 倉庫
創建本地相對應的倉庫
剛剛我們在 Github.com 上新建了一個倉庫 ycbbs-git-tutorial
那麼我們要如何在本地創建對應的倉庫呢?
有三種方式:從遠程倉庫 clone 、本地新建 和 本地已經存在
- 從遠程倉庫 clone
我們可以使用下面的命令將遠程的 `ycbbs-git-tutorial` 倉庫 clone 到本地
git clone [email protected]:ijoywan/ycbbs-git-tutorial.git
輸出如下信息
Cloning into 'ycbbs-git-tutorial'...
Warning: Permanently added the RSA host key for IP address '13.229.188.59' to the list of known hosts.
warning: You appear to have cloned an empty repository.
然後使用 cd ycbbs-git-tutorial
進入 ycbbs-git-tutorial
目錄
最後做一些配置
git config user.name ijoywan
git config user.email [email protected]
可以使用命令
git config --list
檢查下配置是否正確
- 本地新建倉庫
這個很簡單,Github.com 那裏有提示
$ mkdir ycbbs-git-tutorial # 創建目錄
$ cd ycbbs-git-tutorial # 進入目錄
$ echo "# 研發軍團 Github 嚮導" > README.md # 創建 README.md 文件並寫入內容
$ ls # 查看目錄下的文件
README.md
$ git init # 初始化
Initialized empty Git repository in /Users/penglei/github/ycbbs-git-tutorial/.git/
$ git add README.md # 添加文件
$ git commit -m "添加 README.md 文件" # 提交併備註信息
[master (root-commit) 9c81d29] 添加 README.md 文件
1 file changed, 1 insertion(+)
create mode 100644 README.md
然後做一些配置
git config user.name ijoywan
git config user.email [email protected]
可以使用命令
git config --list
檢查下配置是否正確,最後提交到 Github
$ git remote add origin [email protected]:ijoywan/ycbbs-git-tutorial.git
$ git push -u origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 265 bytes | 265.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To github.com:ijoywan/ycbbs-git-tutorial.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
- 如果之前本地倉庫已經存在,那麼就更好辦了,直接使用下面的命令添加 Github 倉庫
$ git remote add origin [email protected]:ijoywan/ycbbs-git-tutorial.git
$ git push -u origin master
然後我們回到 Github 上創建的倉庫,就可以看到我們剛剛添加的文件 README.md
查看當前的遠程庫
要查看當前配置有哪些遠程倉庫,可以用命令
git remote
範例:
$ git remote
origin
如果要查看每個別名的實際鏈接地址,可以添加參數 -v
$ git remote -v
origin [email protected]:ijoywan/ycbbs-git-tutorial.git (fetch)
origin [email protected]:ijoywan/ycbbs-git-tutorial.git (push)
拉取遠程倉庫
如果遠程倉庫他人做了更改,那麼就需要從遠程倉庫拉取更改,合併到本地倉庫
Git 有兩個命令用來拉取遠程倉庫的更新
- 從遠程倉庫下載新分支與數據
git fetch
該命令執行完後需要執行git merge
遠程分支到本地所在的分支
- 將遠程倉庫拉取的更新嘗試合併到當前分支
git merge
該命令就是在執行 git fetch 之後緊接着執行 git merge 遠程分支到你所在的任意分支
假設配置好了一個遠程倉庫,並且你想要提取更新的數據
你可以首先執行 git fetch [alias] 告訴 Git 去獲取它有你沒有的數據
然後你可以執行 git merge [alias]/[branch] 以將服務器上的任何更新(假設有人這時候推送到服務器了)合併到你的當前分支
範例
我們先在 Github 上點擊 “README.md” 並在線修改它
修改爲:
然後我們就可以使用下面的命令拉取遠程的修改更新
$ git fetch origin
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From github.com:ijoywan/ycbbs-git-tutorial
9c81d29..84a307e master -> origin/master
信息 9c81d29…84a307e master -> origin/master 說明(個人理解) : 將遠程的更新拉取下來後,在本地建立一個臨時的origin/master分支
我們可以使用以下命令將更新同步到本地
$ git merge origin/master
Updating 9c81d29..84a307e
Fast-forward
README.md | 2 ++
1 file changed, 2 insertions(+)
查看 README.md 文件內容
$ cat README.md
# 研發軍團 Github 嚮導
詳情可以訪問 [https://www.ycbbs.vip/l/penglei/git/git-basic-index.html](https://www.ycbbs.vip/l/penglei/git/git-basic-index.html)
推送到遠程倉庫
本地修改的更新,經過自己測試成功後,就可以推送到遠端的倉庫裏
推送新分支與數據到某個遠端倉庫命令
git push [alias] [branch]
上面的命令會將 [branch] 分支推送成爲 [alias] 遠程倉庫上的 [branch]
範例
$ touch demo.md # 添加文件
$ git add demo.md # 提交暫存區
$ git commit -m "添加 demo.md 文件"
[master c0137c6] 添加 demo.md 文件
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 demo.md
$ git push origin master # 推送到 Github
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 287 bytes | 287.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To github.com:ijoywan/ycbbs-git-tutorial.git
84a307e..c0137c6 master -> master
點開我們在 Github 的倉庫,可以看到文件 demo.md 已經成功提交到遠程倉庫上了
刪除遠程倉庫
刪除遠程倉庫可以使用命令
git remote rm [別名]
範例
- 先查看有多少遠程倉庫
$ git remote -v
origin [email protected]:ijoywan/ycbbs-git-tutorial.git (fetch)
origin [email protected]:ijoywan/ycbbs-git-tutorial.git (push)
- 添加分支 origin2
$ git remote add origin2 [email protected]:ijoywan/ycbbs-git-tutorial.git
- 再次查看遠程倉庫有多少分支
$ git remote -v
origin [email protected]:ijoywan/ycbbs-git-tutorial.git (fetch)
origin [email protected]:ijoywan/ycbbs-git-tutorial.git (push)
origin2 [email protected]:ijoywan/ycbbs-git-tutorial.git (fetch)
origin2 [email protected]:ijoywan/ycbbs-git-tutorial.git (push)
- 刪除分支 origin2
$ git remote rm origin2
$ git remote -v
origin [email protected]:ijoywan/ycbbs-git-tutorial.git (fetch)
origin [email protected]:ijoywan/ycbbs-git-tutorial.git (push)