github和gitlab等等一系列的分布式代碼托管服務器方便我們開發人員在小組內開發項目,說起分布式代碼托管就給大家提一下另外一代碼托管SVN,當然他不是分布式的,而是集中式的代碼托管,有興趣的可以查閱資料了解一下,在這里我將着重給大家介紹github這種代碼托管如何使用及常用命令
git安裝
我用的電腦是windons系統,請根據你們自己的電腦紫銅安裝對應的git版本,去Git官網上下載安裝即可,在這里將不給大家做詳細的說明,安裝步驟請自行百度。
ssh -key配置
在這一步我已經默認你安裝好了Git,打開Git,在Git命令行輸入cd ~/.ssh檢查電腦本機是否有ssh key設置,注意: .ssh是隱藏文件,一般在電腦C/用戶/Administrator下面就能夠找到。
一般情況下 ,之前沒有用過git的同學電腦本機一般不會 有ssh key 的,下面我講給大家介紹如何配置ssh key
1、進入~路徑下,必須保證當前路徑在~路徑下
在git命令行敲擊 ssh-keygen -t rsa -C "xxx.@yyy.zzz" //建議寫自己真實有效的郵箱地址。注意:在敲代碼是不要將雙引號也敲擊進去。
然后命令行會出現如下代碼:
Enter file in which to save the key (/c/Users/xxxx_000/.ssh/id_rsa): //此時我們什么都不需要操作,直接回車就好
Enter passphrase (empty for no passphrase): //此時要你輸入碼(可以為空,直接回車就好,也可以輸入你的密碼,這個密碼在你最后把本地資源推送到github上面的時候回會讓你填寫密碼,此時密碼隱藏,你輸入進去是看不到的)
Enter same passphrase again: //再次確認密碼(如果你第一次有輸入密碼,這次就再輸一次,如果沒有直接回車就行了)
Your identification has been saved in /c/Users/xxxx_000/.ssh/id_rsa. //生成的密鑰
Your public key has been saved in /c/Users/xxxx_000/.ssh/id_rsa.pub. //生成的公鑰
The key fingerprint is:
e3:51:33:xx:xx:xx:xx:xxx:61:28:83:e2:81 xxxxxx@yy.com
*本機已完成ssh key設置,其存放路徑為:c:/Users/xxxx_000/.ssh/下。其中xxxx_000為你的用戶名。
2、添加ssh key 到Github上
首先登陸Github,點擊右上角的“▼”→Settings→SSH kyes→Add SSH key。
然后在打開c:/Users/xxxx_000/.ssh里面的id_rsa.pub文件,全選復制公鑰內容
也可以在git bush中的命令行輸入cat ~/.ssh/id_rsa.pub,將得到公鑰
Title自定義,將公鑰粘貼到GitHub中Add an SSH key的key輸入框,最后“Add Key“
3、配置賬戶
$ git config --global user.name “your_username” #設置用戶名
$ git config --global user.email “your_registered_github_Email” #設置郵箱地址(建議用注冊giuhub的郵箱)
4、測試ssh keys是否設置成功。
ssh -T git@github.com
The authenticity of host 'github.com (192.30.252.129)' can't be established.
RSA key fingerprint is 16:27:xx:xx:xx:xx:xx:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? yes #確認你是否繼續聯系,輸入yes
Warning: Permanently added 'github.com,192.30.252.129' (RSA) to the list of known hosts.
Enter passphrase for key '/c/Users/xxxx_000/.ssh/id_rsa': #生成ssh kye是密碼為空則無此項,若設置有密碼則有此項且,輸入生成ssh key時設置的密碼即可。
Hi xxx! You've successfully authenticated, but GitHub does not provide shell access. #出現此句話,說明設置成功。
到這里,git相關的所有配置已經完成,下面我將給大家介紹最常使用的命令
常用命令
1、創建倉庫(公開)
點擊github右上角的+里面的new repository
在repository name欄中輸入倉庫的名稱
description 欄中可以設置倉庫的說明
public(公開)通用 private(非公開)收費
勾選Initialize this repository with a README ,如果想向GitHub添加手中已有的Git倉庫,建議不要勾選
Add.gitignore 下拉框中選擇要使用的框架
Add a license選擇添加許可協議文件
點擊create repository按鈕,完成倉庫的創建
2、克隆之前首先要選擇克隆文件的位置(cd)
clone已有倉庫
git clone git@github.com:XXX/yyyy.git //XXX為github的用戶名,yyy為倉庫名
3、在對應的文件夾中添加新有項
git status
4、提交
git add mmm.sss //mmm為文件名稱,sss為文件拓展名(常用git add .)
git commit -m "hhh" //hhh為git commit 提交信息,是對這個提交的概述
git log//用於查看提交日志
git push //更新GitHub上的倉庫
5、用git創建倉庫
mkdir nnn //倉庫名
cd hhh
git init //初始化倉庫
git status //查看倉庫狀態
touch README.md //創建READEME.md文件
git add ERADME.md //添加ERADME.md至暫存區
git commit -m "hhh" //如果想要提交信息記錄的更詳細,請不要加 -m
git log --pretty=short //加--pretty=short 只顯示提交信息的第一行
git log ggg //ggg是指指定的文件或目錄,用於查看指定的目錄、文件的日志
git log -p //查看提交所帶來的改動
git log -p ggg //查看指定文件的改動
git diff //可以查看工作樹,暫存區,最新提交之間的差別
git diff HEAD //查看工作樹與最新提交的差別
6、分支操作
git branch //顯示分支一覽表,同時確認當前所在的分支
git checkout -b aaa //創建名為aaa的分支,並且切換到aaa分支
(git branch aaa //創建名為aaa的分支
git checkout aaa // 切換到aaa分支
)能和git branch -b aaa 得到同樣的效果
git checkout - //切換到上一分支
7、合並分支
git checkout master //切換到master分支
git merge --no--ff aaa // 加--no--ff 參數可以在歷史記錄中明確地記錄本次分支的合並
git log --graph //以圖表形式查看分支
8、更改提交的操作
git reset //回溯歷史版本
git reset --hard //回溯到指定狀態,只要提供目標時間點的哈希值
9、推進歷史
git reflog //查看倉庫的操作日志,找到要推歷史的哈希值
git checkout master
git reset --hrad ddd //ddd為要推進歷史的哈希值
10、修改提交信息 git commit --amend
壓縮歷史 git rebase -i 錯字漏字等失誤稱作typo
根據以前的步驟在GitHub上創建倉庫,應於本地的倉庫名相同 GitHub上面創建的倉庫的路徑為git@github.com: 用戶名/倉庫名.git
git remote add eee git@github.com: 用戶名/倉庫名.git //添加遠程倉庫,並將git@github.com: 用戶名/倉庫名.git遠程倉庫的名稱改為eee
git push -u eee master //推送至遠程倉庫 master分支下 -u 參數可以在推送的同時,將eee倉庫的master分支設置為本地倉庫的當前分
支的的upstream(上游)。添加這個參數,將來運行git pull命令從遠程倉庫獲取內容時,本地倉庫的這個分支就可以直接從eee的master
分支中獲取內容
git checkout -b feature d eee/feature d //獲取遠程的feature d分支到本地倉庫,-b參數后面是本地倉庫中新建的倉庫的名稱
git pull eee feature d //將本地的feature d分支更新為最新狀態
在GitHub上面查看兩個分支之間的差別,只需要在地址欄中輸入http://github.com/用戶名/倉庫名/分支1...分支2
11、查看master分支在最近七天內的差別
http://github.com/用戶名/倉庫名/master@{7.day.ago}...master (同樣,day,week,month,year都是可以噠)
12、查看與指定日期之間的差別
http://github.com/用戶名/倉庫名/master@{xxxx-xx-xx}...master (xxxx-xx-xx代表年月日)
到這里,git相關的命令已經全部介紹完成,剩下的就靠大家自己學習了。