git和github新手快速操作流程
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新手快速操作流程