git是一個分佈式版本控制系統,本地git倉庫和遠程倉庫之間的傳輸支持ssh、https等協議。使用https協議缺點:速度慢,每次推送都必須輸入⼝令。若使用 ssh 協議,須要在你的github帳戶添加你的本機上的ssh公鑰,以後才能夠經過本機推送內容到你的github。javascript
配置用戶名和密碼java
$ git config --global user.name "John Doe" $ git config --global user.email johndoe@example.com能夠根據狀況使用不一樣的參數配置詳見git -- config 。不配置用戶名和密碼,提交時默認使用本機username和hostname。git配置的郵箱與github一致時,顯示github用戶名和頭像。github的contributions統計是按郵箱統計的。git
創建本地計算機與遠程github或者gitlab倉庫之間的鏈接github
建立SSH Keysegmentfault
$ ssh-keygen -t rsa -C "youremail@example.com" //參數-C: comment,提供一個新註釋,這裏的郵箱並木有實際意義github帳戶添加SSH Key服務器
把用戶主目錄下,.ssh文件夾中 id_rsa.pub 內容複製到github中,setting/SSH and GPG keys/new SSH key
github或者gitlab上create一個遠程庫。能夠獲得一個遠程庫的地址 :ssh
git@github.com:(github用戶名)/(creage的時候起的倉庫名).git。
而後,本地倉庫與遠程倉庫之間的首次互動,有幾種作法:分佈式
$ git clone git@github.com:name/xxx.git 若是但願在克隆的時候,本身定義要新建的項目目錄名稱,能夠在命令末尾指定新的名字: $ git clone git://github.com/schacon/grit.git mygrit此以後,咱們就能夠順利地使用git pull 和git push了。
github上刪除遠程倉庫後,報錯:Please make sure you have the correct access rights and the repository exists.gitlab
首先,
fetch//初始化本地文件夾爲git倉庫,文件夾名字和遠程的不必定一致 $ git init //添加origin爲遠程git@github.com:name/xxx.git倉庫的別名,體如今.git/config中 $ git remote add origin git@github.com:name/xxx.git
而後,幾種方法任選其一:
1.$ git push --set-upstream origin master 2.$ git push -u origin master 3.$ git push [remote-name] [branch-name] 把本地分支推送到遠程對應分支一、2能夠順利地使用git pull 和git push了,體如今.git/config中。經各類驗證, 一、2這兩個命令做用一致。推送內容而且,Branch 'master' set up to track remote branch 'master' from 'origin'。有些地方講,若是當前分支與多個主機存在追蹤關係,則可使用 -u 參數指定一個默認主機,這樣後面就能夠不加任何參數使用git push。實驗一個分支追蹤多個主機沒有成功。3只推送內容,而不與遠程分支創建關聯關係。
拓展內容
clone命令會作什麼:
會下載倉庫文件夾(包含外層夾),到當前目錄,提示你克隆了一個空倉庫,包含.git 文件。
會在.git/config中自動添加origin爲遠程倉庫的別名,以便未來引用。
會自動建立了本地的 master 分支並關聯遠程倉庫中的 master 分支,體如今.git/config中。
SSH警告
當你第一次使用Git的clone或者push命令鏈接GitHub時,會獲得一個警告,這是由於Git使用SSH鏈接,而SSH鏈接在第一次驗證GitHub服務器的Key時,須要你確認GitHub的Key的指紋信息是否真的來自GitHub的服務器,輸入yes回車便可。而後,Git會輸出一個警告,告訴你已經把GitHub的Key添加到本機的known_hosts信任列表裏了。這個警告只會出現一次,後面的操做就不會有任何警告了。若是你實在擔憂有人冒充GitHub服務器,輸入yes前能夠對照GitHub的RSA Key的指紋信息是否與SSH鏈接給出的一致。
git pull <遠程主機> <遠程分支>:<本地分支>
git push <遠程主機> <本地分支>:<遠程分支> <src>:<dst>
git push origin 推送當前分支到遠程對應分支,如當前分支只有一個追蹤分支,主機名能夠省略(實驗爲一個本地分支添加多個追蹤分支,沒有成功)
遠程倉庫的相關操做
手動添加一個新的遠程倉庫,並指定一個別名:
$ git remote add [shortname] [url]:查看遠程庫的信息
$ git remote 列出遠程庫的別名 $ git remote –v (譯註:此爲 --verbose 的簡寫)列出遠程庫的別名以及fetch 和 push 的url地址 $ git remote show origin 查看某個遠程倉庫的詳細信息,好比要看所克隆的 origin 倉庫 查看.git/config能夠看到origin的含義遠程倉庫重命名, 在新版 Git 中修改某個遠程倉庫在本地的簡稱:
$ git remote rename old new遠程倉庫的刪除
碰到遠端倉庫服務器遷移,或者原來的克隆鏡像再也不使用,又或者某個參與者再也不貢獻代碼,那麼須要移除對應的遠端倉庫,能夠運行 git remote rm 命令,刪除origin這個遠端的倉庫在本地的映射(移除了config中,logs/refs/remotes, 以及 refs/remotes中相關,不會對遠程倉庫產生做用。)$ git remote rm origin