github網站介紹、並使用git命令管理github(詳細描述)

本章學習:html

  • 1)熟悉github網站
  • 2)經過git命令遠程管理github,
  • 3)git命令使用ssh key密鑰無需輸入帳號密碼 

 


 1.首先咱們來熟悉github網站linux

1.1 註冊githubgit

登陸http://github.com/,而後點擊sign up,來註冊帳戶:github

 

註冊好了,以及驗證郵箱後,而後進入github主頁:bash

 

1.2點擊start a project(啓動第一個項目)服務器

 

1.3建立好後,就會跳轉到剛剛建立好的test2倉庫(項目)主頁,以下兩張圖所示ssh

  • 圖1:

 

  • 圖2:

 

先來介紹下上圖經常使用的幾個單詞ide

  • repostory

  倉庫,也就是項目的意思,有多個項目就表明有多個倉庫post

  • star

  收藏項目,收藏的數目越多,說明項目越好學習

  • fork

  將源做者的項目克隆一份到本身的項目中

  • pull request

  拉請求,指如上圖的pull request.

  好比:別人經過fork你的項目後,並改進了項目,向你發送了new pull request請求,

  而後你點擊pull request按鈕,進去後,會出現以下圖所示:

       

  再點擊Merge pull request,則能夠將改進的內容合併到本身的項目裏,

  • watch

  關注項目,當你關注的某個倉庫更新時,便會通知在你的github主頁上

  • lssues

  問題,點擊進去就能夠看到全部人提出的問題,好比項目有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   

相關文章
相關標籤/搜索