一,Github簡介
二,創建SSH (每次提交可以不用輸用戶名密碼)
HTTP方式需要每次用戶名密碼認證
在Github中 新增SSH
打開一個終端並生成一個SSH的Key文件
生成好的文件:
將公鑰添加至Github:
配置多用戶:
三,Git的基本應用
1) 使用SSH來獲得代碼:
執行
git clone [email protected]:xxx
在配置好本地SSH以後,該命令會直接從遠程倉庫將代碼下載至本機當前目錄
2)更改本地文件:
創建一個新的文件,比如a.txt
命令,查看當前工作目錄的更改:
git status
能夠顯示出當前工作目錄下的更改點。
3)追加當前的修改:
git add a.txt
將修改的文件追加至當前工作目錄,也可以使用git add *來添加多個文件的修改
4) 提交併註釋
將當前的更改提交(注意提交並不會馬上上傳文件更改到遠程倉庫,但是要提交到遠程倉庫之前必須先本地提交)
git commit -m "add a.txt"
這裏由於沒有將當前工作路徑與用戶信息關聯,所以需要配置用戶
使用以下,命令來配置git的用戶名和密碼
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
當然你可以只給當前目錄配置,去掉 --global 選項
git config user.email "[email protected]"
git config user.name "Your Name"
配置完成以後,接着嘗試提交:
5)將更改提交到遠端服務器
git push
查看遠端中已經新增了文件:
如果在另外一臺就機器上進行了其他更改,直接提交會失敗。這時候需要先進行pull操作
6)Pull操作
git pull
因爲筆者寫blog的時候用的同一臺電腦,這裏用了另外一個project做演示
四,git進階應用
1)如果git commit -m "XXX"寫錯了,可以在push之前進行修復
git commit --amend -m "xxx"
1)merge修改,如果兩臺工作站同時修改了一個文件。假設A提交了修改,而B在修改以後會被要求進行Pull
A終端修改a.txt如下
B終端同時修改a.txt如下
接着,A終端對文件A進行提交 。
同時B終端在不知道A已經提交的情況下進行提交:
會提示push失敗,因爲別的終端已經對遠端進行了修改,而當前終端的版本不是最新。
需要先執行git pull
但是會提示發生了衝突,需要進行手動fix conflict
查看衝突:
vim打開修改以後再保存。執行add, commit 和push可以解決衝突
注意<<<<<<<< 和>>>>>>>>直接是發生衝突的地方,
=========以後是遠端的內容=======以前是當前文檔的內容。
保留想要的內容並刪除<<<<<<<<和>>>>>>>還有====== 就可以解決衝突
2)查看git日誌
可以查看當前本地倉庫的各種日誌:
git log
可以看到每次commit的ID和commit的內容
3) reflog
git reflog
查看精簡版的log信息
4)帶提交ID的精簡版日誌信息:
git log --pretty=oneline
5) tag的應用:
# 創建一個叫v1的tag
git tag -a v1 -m "create tag revision v1"
# 查看當前的tag
git tag
# 查看v1 tag的詳細信息
git show v1
tag 不能使用add, commit, push不能將tag上傳。需要執行以下命令
git push origin v1
將tag v1推送到遠端
# 將多個添加的tags依次推送到遠端
git push origin --tags
6)版本回退
# 回退一個版本
git reset --hard HEAD^
# 回退兩個版本
git reset --hard HEAD^^
# 回退三個版本
git reset --hard HEAD^^^
# 回退到特定commit id 版本
git reset --hard 6e28a32c5a13672e3d094b6078d09afb7b4ff967
# 回退前N個版本這裏是100個
git reset --hard HEAD~100
7)分支操作
查看分支:
git branch -a
# 創建名爲branch1的分支
git branch branch1
# 切換到branch1
git checkout branch1
# 在當前分支下提交
git add.
git commit -m "branch test"
git push --set-upstream origin branch1
合併分支
# 切換到master分支上
git checkout master
# 將branch1合併到master
git merge branch1
# 刪除branch1
git branch -d branch1
# 將branch1的合併,刪除的修改提交到遠端
git push origin :branch1