1. 程式人生 > >git和github新手快速操作流程

git和github新手快速操作流程

users 機器 osc success mach 托管 rsa 方案 文檔

git和github新手快速操作流程

本文主要介紹利用git版本控制將項目托管到遠程倉庫github上的一般性操作流程,為了給正在學習git的同學們一個小小的參考,以便更輕松的去深入學習git,本文所有操作均在Windows環境下進行。技術分享圖片

安裝配置部分

第一步:安裝git

Windows平臺可直接到官網http://www.git-scm.com/下載安裝。或者下載Cmder這款工具代替git工具也是很不錯的,具體參考:逆天神器cmder 和 Cmder簡單使用小結 。

Linux平臺安裝: sudo apt-get install git-core

第二步:配置全局用戶

打開Git Bash 工具敲入命令

1 2 git config --global user.name "codesboy" git config --global user.email "[email protected]"

此時在用戶目錄下會出現一個隱藏的配置文件 .gitconfig技術分享圖片

第三步:生成密鑰 SSH key

ssh-keygen -t rsa -C "[email protected]" 三次回車默認即可,此時在用戶目錄下會出現一個隱藏的文件夾 .ssh/ ,在這個文件夾裏會生成id_rsa和id_rsa.pub兩個文件。技術分享圖片

如果出現 ssh-keygen不是內部或外部命令 這樣的錯誤提示,則需要將ssh-keygen.exe所在路徑添

加到系統環境變量中的path裏去。

第四步:添加密鑰 SSH key 到github

到github官網註冊一個賬號,然後到個人設置面板裏選擇SSH and GPG keys選項,點擊右側的New SSH key,title隨意寫,把id_rsa.pub文件裏面的內容復制添加到key值裏面,,然後點擊Add SSH Key.技術分享圖片

第五步:驗證密鑰

1 ssh -T git@github.com

需要輸入yes確認,然後如果出現這樣的信息表示密鑰創建成功:

1 Hi codesboy! You‘ve successfully authenticated, but GitHub does not provide shell access.

技術分享圖片

創建項目部分

第一步:在遠程github上創建一個項目

點擊 New repository選項創建一個新的倉庫,填好倉庫名稱Repository name、此倉庫的說明Description(optional)、其他選項默認或根據自己需求選擇即可。最後點擊 Create repository 完成倉庫創建。

第二步:克隆遠程倉庫到本地

git clone https://github.com/codesboy/myproject.git

https://github.com/codesboy/myproject.git是上面新建好的遠程倉庫地址

註意這裏有HTTPS和SSH兩種clone方式

第三步:為克隆到本地的倉庫修改或添加自己的項目文件

第四步:把添加或修改或刪除的所有內容添加到索引中(本地暫存區)

git add . 或 git add --all

為commit做好準備,可以 git diff --cached 查看那些改動將被提交

第五步:提交修改 git commit 到本地倉庫

git commit -m "my first commit"

註:my first commit是對本次提交的說明,如果不加-m參數 ,git將調到一個文本編譯器(通常是vim)來讓你輸入提交的描述信息,

可能一天下來,你對工作樹中的許多文檔都進行了更新(文檔添加、修改、刪除),但是我忘記了它們的名字,此時若將所做的全部更新添加到索引中,比較輕省的做法就是: git commit -a -m "提交的描述信息" git commit 命令的-a 選項只將所有被修改或者已刪除的且已經被git管理的文檔提交倒倉庫中,不能添加用戶新增的文件到索引中,如果沒有新增的內容就可以使用git commit -a -m ""或者git commit -am""命令 git commit --amend命令可以修改最近一次的提交說明(註釋)

第六步:推送到遠程github倉庫

1 git push -u origin master //輸入用戶名和密碼

註:首次push 要加參數 -u

github免輸帳號密碼的配置:(Windows)

1、添加名為HOME的環境變量,值為%USERPROFILE%

2、在計算機用戶文件夾下創建名為_netrc的文件,內容為:

machine github.com

login username

password password

1 ##上面的username和password改成你自己的github用戶名和密碼

推薦另外一種在push的時候不需要輸入密碼的方式:

用ssh協議,而非https協議,用git remote -v可以查看使用的哪種方式

直接修改配置文件.git/config,把url項設置成如下格式

url = [email protected]:codesboy/xxx.git

經過上面這些步驟,這時到遠程github倉庫去查看就會看到有本地提交上來的文件


除了上面所列出的以外,git還有其他很多常用的命令,這裏也總結一下:

git init 初始化倉庫,在本地新建倉庫會用到

git log 查看git日誌

git status 查看當前狀態

git remote add origin https://github.com/username/project.git 關聯一個遠程倉庫

或者git remote add origin [email protected]:username/project.git(推薦)需要配置ssh

git remote -v 查看遠程版本倉庫連接

查看所有的分支和當前處於哪個分支:git branch

創建本地倉庫分支:git branch 分支名稱

刪除本地倉庫分支:git branch -d 分支名稱

刪除某個文件夾或路徑:git rm -r --cached 文件夾或文件路徑

切換到本地某分支:git checkout 分支名稱

合並本地某分支到當前分支:git merge –no-ff -m “remark” 分支名稱

創建並切換到本地該分支:git checkout -b dev

拉取版本庫最新數據到本地倉庫:git pull

2017-07-21新增:配置本地多個git用戶

1.刪除之前配置的全局用戶名和郵箱文件C:\Users\admin\.gitconfig

2.配置第二個用戶的ssh key

ssh-keygen -t rsa -C "[email protected]"

執行該命令後,出現第一個選項不要直接回車,如果直接回車會覆蓋掉第一個用戶默認的ssh key文件id_rsa和id_rsa.pub,這裏需要設置一個新的名稱,比如id_rsa_user2。剩下的兩項可以直接回車。然後會生成id_rsa_user2和id_rsa_user2.pub兩個文件,將這兩個文件移動到C:\Users\admin\.ssh下面去。

3.將id_rsa_user2.pub文件裏面的內容復制到github裏去。

4.在C:\Users\admin\.ssh下面新建一個config文件,寫入以下內容

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Host codesboy HostName github.com User git PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa Host cnnet HostName github.com User git PreferredAuthentications publickey IdentityFile ~/.ssh/cnnet Host chinaweb HostName github.com User git PreferredAuthentications publickey IdentityFile ~/.ssh/chinaweb

對此config配置文件解釋一下:

Host
它涵蓋了下面一個段的配置,我們可以通過他來替代將要連接的服務器地址。
這裏可以使用任意字段或通配符。
當ssh的時候如果服務器地址能匹配上這裏Host指定的值,則Host下面指定的HostName將被作為最終的服務器地址使用,並且將使用該Host字段下面配置的所有自定義配置來覆蓋默認的/etc/ssh/ssh_config配置信息。
[email protected]:用戶名/項目名.git

其中的git表示用戶名,github.com表示服務器別名
Port
自定義的端口
User
賬號,要與git config的email對應
HostName
真正連接的服務器地址一般為github.com或者git.oschina.net等其他git服務器
PreferredAuthentications
指定優先使用哪種方式驗證,支持密碼和秘鑰驗證方式
IdentityFile
指定本次連接使用的私鑰文件,即用 ssh-keygen -t rsa -C "[email protected]" 生成的文件名

Ps

通過config文件可以管理多個ssh會話。通過Host別名也可以直接【ssh 別名】登錄到其他機器上

配置了User,git push時就一定要配置相同的email 如果不設置User,隨意一個user.email都可以提交git push 如果設置了User,user.email必須匹配到config中的User才能提交【git config [email protected]

5.驗證ssh key

ssh -T git@cnnet cnnet是在config裏自定義的Host別名

6.git remote也要使用別名

git remote add origin git@cnnet:cnnet/test.git

說明

id_rsa:私鑰 id_rsa.pub:公鑰 known_hosts:訪問過的機器的公鑰,第一次ssh 其他機器時如果有權限訪問,會提示是否保存信息,下次會校驗訪問該機器的公鑰與known_hosts中的是否一致,如果不一致則不能登錄過去。解決方案是刪除known_hosts中該條機器的記錄 git push時需要配置user的email和name,除了上面說的配置了~/.ssh/config的User的情況。 email和name可以隨便填寫,不存在的github賬號也可以提交成功,只要你把ssh的公鑰加到github裏即可。 只是如果email不存在,則github上提交記錄上用戶頭像不能點擊;如果真實存在的github賬號,點擊進入該用戶的個人主頁

git和github新手快速操作流程