本章學習:html
1.首先咱們來熟悉github網站linux
1.1 註冊githubgit
登陸http://github.com/,而後點擊sign up,來註冊帳戶:github
註冊好了,以及驗證郵箱後,而後進入github主頁:bash
1.2點擊start a project(啓動第一個項目)服務器
1.3建立好後,就會跳轉到剛剛建立好的test2倉庫(項目)主頁,以下兩張圖所示ssh
先來介紹下上圖經常使用的幾個單詞ide
倉庫,也就是項目的意思,有多個項目就表明有多個倉庫post
收藏項目,收藏的數目越多,說明項目越好學習
將源做者的項目克隆一份到本身的項目中
拉請求,指如上圖的pull request.
好比:別人經過fork你的項目後,並改進了項目,向你發送了new pull request請求,
而後你點擊pull request按鈕,進去後,會出現以下圖所示:
再點擊Merge pull request,則能夠將改進的內容合併到本身的項目裏,
關注項目,當你關注的某個倉庫更新時,便會通知在你的github主頁上
問題,點擊進去就能夠看到全部人提出的問題,好比項目有bug等.
當本身想發表問題時,則點擊lssues->new lssues,以下圖所示:
1.4接下來,咱們點擊倉庫主頁的create new file,來建立一個文件:
提交後,便會返回咱們test2倉庫主頁裏:
而後點擊commits提交按鈕,即可以看到剛剛建立main.c的詳細信息:
PS:當咱們錯誤刪除了一個文件,也能夠經過commits按鈕,來找到之前刪除的文件
1.5 學習如何來更改倉庫名稱和刪除倉庫
在倉庫主頁裏點擊settings(倉庫設置),以下圖所示(以test3爲例):
而後便會跳轉到下個界面,就能夠更改倉庫名稱了:
繼續往下翻,就能夠找到刪除倉庫了:
2.使用git管理github
2.1安裝git
下載地址:https://www.git-scm.com/download/win
(若慢的話,則進入http://www.wmzhe.com/soft-38801.html下載)
下載好後,直接默認安裝便可,若只喜歡命令行模式,則在組件界面取消git gui here便可,以下圖所示:
安裝好後,以下圖所示,便可經過linux命令來操做git命令:
若在linux上安裝git,直接輸入:
apt-get install git
(linux下載時,若出現error:403,能夠試試vi /etc/resolv.conf,將nameserver地址改成: 114.114.114.114)
2.2 配置git
git config --global user.name "lifeyx" //我的帳號 git config --global user.email 123456@qq.com //我的郵箱地址
上面的--global選項,表示之後管理git庫時,默認使用上面的用戶信息,也能夠經過git config -l 來查看配置信息
2.3 git命令介紹
1)介紹以前,首先來說解下git的3個區域以下圖所示
上圖的git倉庫,是指本地倉庫,不會更新到遠程倉庫(github網頁上的倉庫),須要使用git push -u origin master命令才行
2)而後來說解下git經常使用命令
git init
對當前目錄進行git管理,該目錄便會成爲工做區,並在當前目錄下會出現個.git隱藏目錄.
該.git裏會保存git所須要的數據和資源,也就是git倉庫和暫存區都會保存在.git裏
git clone https://github.com/lifeyx/test2.git
克隆複製遠程倉庫到當前目錄,生成test2文件夾,裏面會自動建立.git目錄,並保存遠程倉庫信息
該遠程倉庫地址經過下圖的紅框裏獲取:
git status
查看工做目錄下文件的狀態,是否add添加到了暫存區,如下圖爲例:
git add file
將工做區修改的文件添加到暫存區,也可使用git add . 將全部修改的文件進行添加
git rm file
將暫存區的文件刪除掉,若工做區文件存在,則須要使用git rm -f file來強制刪除掉
git commit -m 「提交描述」
將暫存區裏的文件提交到本地倉庫,若暫存區某個文件被刪除掉,則會刪除倉庫裏的文件
git commit -am 「提交描述」
-a:跳過暫存區,git自動將工做區裏記錄的全部文件添加到暫存區並一塊兒提交,從而跳過git add步驟
git reset HEAD^1
撤銷commit,若是想修改commit時的文件,則使用上面命令撤銷
git remote add origin https://github.com/lifeyx/test3.git
添加遠程倉庫(origin),也就是關聯本地倉庫和github倉庫,該遠程倉庫地址經過下圖的紅框裏獲取:
git push origin master
推送(同步)數據到遠程倉庫,如果本地上傳,必須先使用上個命令來指定遠程倉庫地址(origin),
如果從遠程倉庫克隆複製的,則不須要,由於.git裏會自動保存遠程倉庫地址.
2.4 git管理遠程倉庫-實例1
實例1步驟,經過建立新的遠程倉庫,而後將本地的數據推送(同步)到遠程倉庫裏
1)首先建立新的遠程倉庫,以test3爲例
而後找到遠程倉庫地址爲: https://github.com/lifeyx/test3.git
2)進入github命令行,輸入
mkdir test3 cd test3 echo "項目描述test3" >> README.md git init //初始化git vi 1.txt //建立1.txt git add README.md //添加README.md git add 1.txt //添加1.txt git commit -m "第一次提交文件" //提交到本地倉庫 git remote add origin https://github.com/lifeyx/test3.git //鏈接遠程倉庫地址 git push origin master //上傳到遠程倉庫地址,並輸入帳號密碼
3)查看結果
2.5 git管理遠程倉庫-實例2
實例2步驟,就是經過克隆來將遠程倉庫下載到本地,而後本地修改數據後,並推送(同步)數據到遠程倉庫
1)經過之前的遠程倉庫test2爲例
以下圖所示,能夠看到test2倉庫更新時間都是處於1天前的:
而後經過上圖的綠色按鈕,找到test2地址爲: https://github.com/lifeyx/test2.git
2)進入github命令行,輸入
git clone https://github.com/lifeyx/test2.git //下載test2倉庫 cd test2 //進入倉庫 vi 1.txt //建立1.txt git add 1.txt //添加1.txt git commit -m "次日提交文件" //提交到本地倉庫 git push origin master //上傳到遠程倉庫地址,並輸入帳號密碼
PS:
因爲git clone會自動生成.git隱藏目錄,因此上面無需git init命令初始化。
並且.git目錄裏保存了遠程倉庫地址,因此上面無需git remote命令鏈接遠端。
3)查看結果
3.每次上傳到遠程倉庫地址時,都要輸入帳號密碼,是否是很麻煩?
接下來便經過ssh key密鑰,使主機與服務器鏈接鏈接, 這樣就不用每次輸入帳號密碼
3.1生成ssh key
首先經過ls ~/.ssh命令,查看是否已有ssh key,如有的話,先備份,而後經過rm -rf ~/.ssh來刪除
1)輸入,建立密鑰
ssh-keygen -t rsa -C "123456@qq.com" // "..."裏輸入郵箱號
2)而後會提示設置密碼,直接連按3個回車,表示密碼爲空
3)將新生成的key添加到ssh-agent中
eval "ssh-agent -s" ssh-add ~/.ssh/id_rsa
4)若顯示Could not open a connection to your authentication agent.,則繼續輸入
ssh-agent bash
ssh-add ~/.ssh/id_rsa
以下圖所示,出現Identity added字段,則表示寫入成功,ssh key公鑰便保存在id_rsa.pub文件中了:
5)而後經過cat ~/.ssh/id_rsa.pub 將ssh key公鑰打印出來,並複製
3.2將複製的ssh key公鑰添加到github中
跳轉頁面後,title標題隨意寫,將ssh key複製到key框裏便可
3.3測試ssh key
輸入ssh git@github.com,以下圖所示,顯示Hi youname! ,則表示成功了
3.4成功後,就可使用git協議來下載倉庫. 仍是以test2倉庫爲例
1)首先查看test2倉庫的ssh協議的地址(以前是http協議地址)
如上圖所示,點擊紅框後, 前綴https://變爲了git@
2)而後進入github命令行,來測試
git clone git@github.com:lifeyx/test2.git //下載test2倉庫 cd test2 //進入倉庫 vi 2.txt //建立2.txt git add 2.txt //添加2.txt git commit -m "次日提交文件" //提交到本地倉庫 git push origin master //無需輸入密碼來上傳
4.git管理倉庫
打補丁:
git diff > new.patch
若是是當前倉庫有了新文件,想把新文件也打進補丁(新文件必須須要git add以後才行),則輸入:
git diff --cached > new.patch
查看狀態:
Git status
查看本地修改的哪些東西
git diff Makefile //以查看上圖的Makefile爲例
添加暫存區
git add kernel/arch/mips/xburst/soc-x1000/chip-x1000/ap60pro/ap60pro/board.h //添加到暫存區 git add . //添加全部修改過的文件
撤回修改過的文件
git checkout Makefile //撤回Makefile的修改,若是是以前不存在的文件,則會撤銷失敗
將暫存區裏的文件撤回到 修改文件中
git reset HEAD u-boot/drivers/video/jz_lcd/jz_lcd_v13.c //將jz_lcd_v13.c從暫存區撤銷掉
提交到本地倉庫
git commit -m "ap60pro update: compatible with old and new screens" //添加到本地倉庫(但未上傳) -m 後面跟提交的信息描述
撤銷commit提交
git reset HEAD^1
同步遠程倉庫(當別人在遠程倉庫進行修改後,本地沒有更新時)
git pull --rebase origin master
上傳遠程倉庫
git push origin master //上傳遠程倉庫,因爲是使用git clone,因此不須要使用git remote鏈接遠程倉庫 //若是git push失敗,打印: error: failed to push some refs to 'git@192.168.1.8:X1000.git',則使用git pull 同步一次
查看提交遠程倉庫的歷史記錄
tig //以下圖所示:
其中」 [master] {origin/master} {origin/HEAD} Merge branch 'master' of 192.168.1.8:X1000」,是使用git pull解決分支不一樣(Merge branch)時候提交的
若是想查看提交的某一次具體信息,也可使用」git show [hash值]「來查看
git show示例:
1)經過tig,找到近期提交一次的記錄hash值:
2)使用git show 17c7a097834439d0e9bf659e5e71ce313832c032,即可以查看具體提交的內容了
git pull若是打印error: You have not concluded your merge (MERGE_HEAD exists).時
1. 直接commit,再提交一次,以後再pull或merge就能夠順利進行。
2.放棄本地其它修改,直接覆蓋,輸入:
git reset --hard
git pull
查看每一行是哪次提交最後修改的
git blame filename
列出文件的全部修改記錄
git log -p filename