Git和Github詳細教程

一 概述linux

說到Git和Github,前幾天咱們知道微軟以75億美圓收購全球最大的代碼託管和寫做平臺GitHub,而GitHub是全球最大的代碼倉庫,不少開發人員都將代碼存放在Github,許多開發者由於擔憂微軟沒法讓 GitHub 在運營上保持開放和獨立,將無數項目遷移到了 GitLab上,博主也擔憂微軟是否會讓GitHub按照之前同樣運營,無論那麼多,下面正式開始講解Git:git

說到Git,不少人會想到svn,svn是集中式的版本控制工具,相比Git,博主認爲Git更強大,Git出自linux之父林納斯之手,而Git又全面兼容linux,這對編程開發人員來講是很是爽的,下面咱們看看版本控制工具應該具有的功能 :github

 

1 協同修改,多人並行不悖的修改服務器端的同一個文件,數據備份。
2 不只保存目錄和文件的當前狀態, 還可以保存每個提交過的歷史狀態。
3 版本管理
4 在保存每個版本的文件信息的時候要作到不保存重複數據, 以節約存儲空間, 提升運行效率。 這方面 SVN 採用 的是增量式管理的方式, 而 Git 採起了文件系統快照的方式。
5 權限控制
6 對團隊中參與開發的人員進行權限控制。
7 對團隊外開發者貢獻的代碼進行審覈——Git 獨有。
8 歷史記錄
9 查看修改人、 修改時間、 修改內容、 日誌信息。
10 將本地文件恢復到某一個歷史狀態。
11 分支管理
12 容許開發團隊在工做過程當中多條生產線同時推動任務, 進一步提升效率。 編程

二 版本控制介紹緩存

 

2.1 版本控制簡介服務器

工程設計領域中使用版本控制管理工程藍圖的設計過程。 在 IT 開發過程當中也可使用版本控制思想管理代碼的版本迭代.分佈式

 

2.2 版本控制工具svn

1.集中式版本控制工具:CVS、 SVN、 VSS and so on集中式版本控制工具的模式主要是將代碼專門放在一個服務器,以下:工具

 

 

2. 分佈式版本控制工具:Git、 Mercurial、 Bazaar、 Darcs and so on分佈式版本控制工具像Git支持分支管理,以下:性能

 

三 Git歷史

 

3.1 Git發展史

 

3.2 Git官網

Git官網地址:

 

3.3 Git優點

1 大部分操做在本地完成,不須要聯網

2 完整性保證

3 儘量添加數據而不是刪除或修改數據

4 分支操做很是快捷流暢

5 與 Linux 命令全面兼容

 

3.4 Git的安裝

這是個人百度網盤連接,裏面有32位和64位安裝包

連接:https://pan.baidu.com/s/16LHA-qajOw5h_EfP25LD7g 密碼:jsfb

安裝很簡單,跟着提示點擊過來就行了,有問題能夠聯繫博主。

 

3.5 Git的結構

 

3.6 Git和代碼託管中心

局域網環境 GitLab服務器

外網環境下 GitHub 碼雲

 

3.7 本地庫和遠程庫

 

 

本地庫是存在在我的本地的,而Github中建立的是遠程庫,本地庫push/pull從遠程庫中上傳代碼或者拉取代碼,而其餘開發者能夠直接clone到本地庫,固然還有誇團隊協做,其實差很少,fork一下就行了。

 

四 Git操做

4.1 本地庫初始化

首先我在本身的工做區建立一個目錄gitDev,專門用來存放gitDev這個項目,將gitDev比做我將要開發的項目。

mkdir gitDev,進入建立好的目錄,pwd看下個人位置

 

 

ls -la 能夠看到我如今只有2個隱藏的目錄

 

 

下面我開始初始化: (git init)

 

 

ls -la查看,多了.git的隱藏文件,說明已經初始化成功了

 

 

4.2 設置簽名

1 項目級別/倉庫級別:僅在當前本地庫範圍內有效

 

 

 

git config user.name xxxx
git config user.email xxxx

這是設置當前庫範圍有效的

 

2 系統用戶級別:登陸當前操做系統的用戶範圍

 

git config --global user.name xxxx
git config --global user.email xxxx

 

3 級別優先級

 

就近原則:項目級別優先於系統用戶級別,兩者都有時採用項目級別的簽名

若是隻有系統用戶級別的簽名,就以系統用戶級別的簽名爲準

兩者都沒有不容許

 

4.3 查看狀態


查看工做區、暫存區狀態

4.4 添加至緩存區

 

首先我創建一個文件,寫入test內容

 

 


查看內容

 

這個時候git status查看下狀態

 

 

這個時候提示咱們使用git add命令添加到暫存區

 


再git status一下

 

 

提示咱們 git rm 用來刪除,咱們git commit提交一下

 

 

再看看git status,發現沒有須要提交的內容了

 

 

4.5 查看歷史記錄

剛剛咱們提交了信息,加入想看到我提交的內容的話

1.git log: 很清楚的看到我剛剛提交的信息,master代碼主分區

 

 

2.git log --pretty=oneline能夠更清楚的看到個人提交記錄

 

3.git reflog 也能查看日誌記錄

 

4.6 前進和後退(git reset --hard [局部索引值] )

我先多提交幾回,讓記錄更加多

 

 

如今能夠看到個人日誌記錄,我提交了4次,每次新加的內容就是後面的消息,如今這個版本的內容以下:

 

 

 

如今我要回到cc37538這個版本的記錄的話:

 

 

能夠看到,給咱們的提示是Head已經在cc37538了,cat test.txt一下

 


能夠看到回到了之前的狀態。

 

 

如今能夠看到HEAD指向cc37538了

固然還有其餘方法進行回退,博主推薦你們使用這種方式。

只要提交到本地庫的文件,均可以在歷史版本中找回原來的信息

 

4.7 分支管理

1.分支能夠理解多個功能同時推動,最後再合併

 

2.好處

同時並行推動多個功能開發,提升開發效率
各個分支在開發過程當中,若是某一個分支開發失敗,不會對其餘分支有任何影響。失敗的分支刪除從新開始便可。

 

3.建立分支(git branch [分支名])

 

首先我建立修復bug的分支hot_fix,git branch -v 查看下分支

 

 

git checkout hot_fix來切換分支

 

 

git branch -v 查看下分支,如今就切換到hot_fix分支了

 

在hot_fix分支,輸入ll,在查看下以前的內容

 

 

 

其實hot_fix複製了一份master分支的內容

4.合併分支(git merge [ 有新內容分支名 ])

第一步:切換到接受修改的分支(被合併,增長新內容)上 gitcheckout [被合併分支名]
第二步:執行 merge 命令 git merge [有新內容分支名]

首先,我在hot_fix上修改test.txt文件,添加了new content內容

 

 

git commit到本地庫

 

git checkout 到master分支

 

 

git merge hot_fix : 合併hot_fix 分支的內容

 

 

再查看下test.txt中的內容,已經將new content中的內容合併到mster中

 

 

5.解決衝突

團隊開發的時候頗有可能會發生衝突,如何解決衝突,以下:

首先查看下我在master分支

 

我修改了第4行的內容: edit by master

 

將內容保存到本地庫中

 

 

切換到hot_fix分支

 

 

查看

 

 

一樣修改test.txt中的第4行內容

 

 

提交到本地庫中

 

 

如今我想把hot_fix分支的內容合併到master分支中

切換分支:

 

 

合併got_fix分支修改的內容

 

 

查看狀態

 

 

打開test.txt文件後

 

 

修改內容後,以下,保存退出

 

 

添加到暫存區

 

 

查看狀態

 

 

提交

 

 

查看合併後的內容

 

 

衝突的解決:

 

第一步:編輯文件,刪除特殊符號
第二步:把文件修改到滿意的程度,保存退出
第三步:git add [文件名]
第四步:git commit -m "日誌信息"
注意:此時 commit 必定不能帶具體文件名

 

五 Github

1.github

GitHub 首頁就是註冊頁面:

 

 

2.在github中建立遠程庫

 

 

 

3.爲遠程庫地址建立別名

 

git remote -v 查看當前全部遠程地址別名

git remoteadd [別名] [遠程地址]

 

 

 

4.將本地庫內容推送到github中(git push origin master)

 

這個時候會彈出登錄框,輸入帳號密碼

 

成功以後,會有以下提示信息:

 

 

5. 刷新github,能夠看到提交上去的信息

 

進入test.txt文件,這個時候信息成功被push到github上了

 

 

6. 團隊協同開發 

我從新建立了一個目錄zhangsan,假如團隊中的zhangsan協同開發的話,我就去github上面把信息clone下來

 

 

這個時候對於zhangsan的話,建立目錄不用進行任何的操做,直接

git clone 

 

 

ls -la 查看

 

 

 

 

能夠發現從github上把信息給克隆下來了.

如今zhangsan修改了信息想要提交到github上面的話,能夠看到新加了一條內容:my name is zhangsan

 

 

git push origin master 會彈出登陸信息,我用另一個新帳號登錄

 

 


能夠看到如今是拒絕讓zhangsan這個帳號push,由於zhangsan尚未被邀請到團隊進行協同開發

 

 

登錄遠程庫建立者的github帳號,以下

 

 

 

 

切換zhangsan的github帳號,輸入邀請地址

 

 

點擊接受邀請便可。這個時候push到github上

 

 

能夠看到已經成功上傳

 

 

做者:劉信堅

連接:

來源:慕課網

本文原創發佈於慕課網 ,轉載請註明出處,謝謝合做


推薦閱讀:

【官方】手記欄目認證做者招募,長期有效,隨時報名!_慕課手記

想開發Angular項目,可是沒有開發環境?使用Docker So Easy!

快速上手 Elasticsearch 的幾個建議

編寫高性能Javascript代碼的若干建議

使用 Gitbook 打造你的電子書

相關文章
相關標籤/搜索