一 概述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官網地址:https://git-scm.com/
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 設置簽名
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 首頁就是註冊頁面:https://github.com/
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 https://github.com/liuXinJianGithub/gitDev.git
ls -la 查看
能夠發現從github上把信息給克隆下來了.
如今zhangsan修改了信息想要提交到github上面的話,能夠看到新加了一條內容:my name is zhangsan
git push origin master 會彈出登陸信息,我用另一個新帳號登錄
能夠看到如今是拒絕讓zhangsan這個帳號push,由於zhangsan尚未被邀請到團隊進行協同開發
登錄遠程庫建立者的github帳號,以下
切換zhangsan的github帳號,輸入邀請地址https://github.com/liuXinJianGithub/gitDev/invitations
點擊接受邀請便可。這個時候push到github上
能夠看到已經成功上傳
做者:劉信堅
連接:http://www.imooc.com/article/35753
來源:慕課網
本文原創發佈於慕課網 ,轉載請註明出處,謝謝合做
推薦閱讀:
【官方】手記欄目認證做者招募,長期有效,隨時報名!_慕課手記