便宜網(wǎng)站建設(shè)模板網(wǎng)站谷歌排名查詢
目錄
1. git簡介
1.1 git是什么
1.2 git與svn的區(qū)別
2. github
2.1 創(chuàng)建倉庫
2.2 刪除倉庫
2.3 新建文件及文件夾
3. git的基本操作
3.1 配置賬戶及郵箱
3.2 git文件狀態(tài)與工作區(qū)域
3.3 常用命令
3.4 克隆(clone)
3.5 查看git倉庫的狀態(tài)
3.6 新創(chuàng)建的文件并添加到“暫存區(qū)”
?3.8“暫存區(qū)”的內(nèi)容提交到“本地倉庫”
3.9“本地倉庫”的內(nèi)容提交到“遠(yuǎn)程倉庫”
3.10 將本地項(xiàng)目推入遠(yuǎn)程倉庫。
3.11 沖突的問題?
1. git簡介
1.1 git是什么
是一個(gè)開源的分布式版本控制系統(tǒng),可以有效、高速地處理從很小到非常大的項(xiàng)目版本管理。
git的安裝非常簡單:
- 到
1.2 git與svn的區(qū)別
1) git是分布式的
GIT是分布式的,SVN不是:這是GIT和其它非分布式的版本控制系統(tǒng),例如SVN,CVS等,最核心的區(qū)別
2)git倉庫的任何一個(gè)拷貝都可以獨(dú)立作為一個(gè)服務(wù)器來使用,因?yàn)間it是分布式的,在遠(yuǎn)程倉庫和本地倉庫中都有完整拷貝。
3)在Git中文件有四種狀態(tài):
未跟蹤(untrack):表示文件為新增加的
已修改(modified):表示修改了文件,但還沒保存到git倉庫中。
已暫存(staged):表示對一個(gè)已修改文件的當(dāng)前版本做了標(biāo)記,使之包含在下次提交的快照中
已提交(committed):表示文件已保存在git倉庫中。
4) 其它
GIT沒有一個(gè)全局的版本號,而SVN有:目前為止這是跟SVN相比GIT缺少的最大的一個(gè)特征。
GIT的內(nèi)容完整性要優(yōu)于SVN:GIT的內(nèi)容存儲使用的是SHA-1哈希算法。這能確保代碼內(nèi)容的完整性,確保在遇到磁盤故障和網(wǎng)絡(luò)問題時(shí)降低對版本庫的破壞
5) 直接記錄快照,而非差異
GIT把內(nèi)容按元數(shù)據(jù)方式存儲,而SVN是按文件:所有的資源控制系統(tǒng)都是把文件的元信息隱藏在一個(gè)類似.svn,.cvs等的文件夾里。
6) 直接記錄快照,而非差異
GIT分支和SVN的分支不同,分支在SVN中一點(diǎn)不特別,就是版本庫中的另外的一個(gè)目錄。
前三個(gè)不同點(diǎn)重點(diǎn)理解,后面幾個(gè)一般性了解
2. github
GitHub是一個(gè)面向開源及私有軟件項(xiàng)目的托管平臺,因?yàn)橹恢С謌it 作為唯一的版本庫格式進(jìn)行托管,故名GitHub。
github上repository分為public和private,public可以被其他人看到并clone;而private是不能被別人看到的。這里把repository創(chuàng)建為private的場景為:自己創(chuàng)建一個(gè)私人項(xiàng)目,但是又需要和其他developer一起開發(fā),所以,需要developer都能克隆這個(gè)private repository,并且都能提交到這個(gè)private repository。
目前GitHub為微軟所有,可以免費(fèi)的創(chuàng)建私有倉庫,但免費(fèi)的情況下,協(xié)助的成員最多為3個(gè)。
2.1 創(chuàng)建倉庫
首先登陸到github
勘誤:生成readme.md(markdown類型的文件)文件而不是readme.txt文件
https和ssh的區(qū)別,就是前者會需要提供賬號密碼,后者就是通過數(shù)字證書的形式,免密(因?yàn)楸镜赜袛?shù)字證書)
創(chuàng)建完成后
2.2 刪除倉庫
2.3 新建文件及文件夾(一般情況通過命令的方式創(chuàng)建)
3. git的基本操作
3.1 配置賬戶及郵箱
一般剛安裝Git都要配置用戶名和郵箱,因?yàn)槟闾峤淮a到本地倉庫(上傳代碼到遠(yuǎn)程倉庫)時(shí)會用到。如果沒有沒有配置,在你提交時(shí)它會提醒,如果僅僅是下載公有倉庫則不需要,甚至不需要注冊。
成功安裝git后,在任何目錄點(diǎn)擊右鍵,選擇“git bash here”即可進(jìn)入git的命令窗口:
?1)查看git的配置信息
git config --list
2)設(shè)置用戶名及郵箱
git config --global user.name "username"
git config --global user.email "email"
# 為安全,一般不在配置信息中設(shè)置密碼
git config --global user.password "password"
注:
全局配置:
--global 表示全局的,即當(dāng)前用戶都有效,該配置會出現(xiàn)在 ~/.gitconfig 文件中,~表示當(dāng)前用戶的目錄,
比如:C:\Users\Administrator.gitconfig,打開該文件你會發(fā)現(xiàn)如下圖所示的內(nèi)容:
[user]
name = xxx
email = xxx@qq.com
局部配置
git config user.name "username"
git config user.email "email"
局部是只對當(dāng)前倉庫起效的,它的配置信息會在當(dāng)前倉庫根目錄/.git/config文件下。注意:局部變量覆蓋全局變量
3)刪除某個(gè)全局配置項(xiàng)
git config --global --unset user.name
3.2 git文件狀態(tài)與工作區(qū)域
git的文件狀態(tài)是其git核心內(nèi)容,了解后對后續(xù)的操作有莫大的幫助,不同的文件狀態(tài)又存儲在不同的工作區(qū)域中.
- git中的文件有以下幾種狀態(tài)
- 未跟蹤(untrack):表示文件為新增加的
- 已暫存(staged):表示對一個(gè)已修改文件的當(dāng)前版本做了標(biāo)記,使之包含在下次提交的快照中
- 已提交(committed):表示文件已保存在git倉庫中。
- 已修改(modified):表示修改了文件,但還沒保存到git倉庫中。
- 工作區(qū)域
按照本地計(jì)算機(jī)與遠(yuǎn)程計(jì)算機(jī)劃分,工作區(qū)域有以下幾種
- 本地計(jì)算機(jī)
Working Directory(工作目錄):即正在編輯的文件狀態(tài)。文件狀態(tài)為未跟蹤(untrack)和已修改(modified)在此區(qū)域內(nèi)。
Staging Area(暫存區(qū)):保存了下次將提交的文件列表信息。文件狀態(tài)為已暫存(staged)在此區(qū)域內(nèi)??梢允褂?git ls-files 查看暫存區(qū)的內(nèi)容。
Repository(本地倉庫):提交到本地倉庫的文件。 - 遠(yuǎn)程計(jì)算機(jī)
Repository(遠(yuǎn)程倉庫):已提交到遠(yuǎn)程計(jì)算機(jī)內(nèi)的文件。
理解下圖的示意圖:
3.3 常用命令
?
?pwd 查看當(dāng)前文件路徑
?
注:紅色表示沒被跟蹤?
?
注:查看暫存放區(qū)文件
?
注: -u意思就是下次登陸的時(shí)候直接git push? 不用加-u
?
注:查看遠(yuǎn)程倉庫?
?
?注:上傳到git的流程,克隆就是git clone + 復(fù)制的網(wǎng)站
?
注:獲取遠(yuǎn)程倉庫?
?
注:查看日志?
?
注:git add . 之后從暫存區(qū)移除?
使用下面代碼可以在家回去
?
?
注:刪掉了,發(fā)現(xiàn)還需要,那么就可以?這樣恢復(fù)
?恢復(fù)后:
?
?
3.4 克隆(clone)
?2)到本地目錄(你所要放置項(xiàng)目的目錄),右擊鼠標(biāo),選擇“git bash here”進(jìn)入git命令行。
git clone https://github.com/lisensir/hello-world.git
如圖:
注:本例演示了通過https協(xié)議克隆,除了https協(xié)議git還支持如下協(xié)議:
git clone git@github.com:fsliurujie/test.git --SSH協(xié)議
git clone git://github.com/fsliurujie/test.git --GIT協(xié)議與其他版本控制軟件,如svn相比,這里使用的克隆(clone),而不是檢出(checkout),git 收取的是項(xiàng)目歷史的所有數(shù)據(jù)(每一個(gè)文件的每一個(gè)版本),服務(wù)器上有的數(shù)據(jù)克隆之后本地也都有了。實(shí)際上,即便服務(wù)器的磁盤發(fā)生故障,用任何一個(gè)克隆出來的客戶端都可以重建服務(wù)器上的倉庫,回到當(dāng)初克隆時(shí)的狀態(tài)
3.5 查看git倉庫的狀態(tài)
要先來到對應(yīng)項(xiàng)目的目錄。
git status
3.6 新創(chuàng)建的文件并添加到“暫存區(qū)”
在git管理的目錄(如上例中的hello-word目錄),新建一個(gè)文件
可以使用如下命令查看狀態(tài):
git status
注:紅色表示沒有加入暫存區(qū)。
將文件放入“暫存區(qū)”
$ git add .
注: 后面的那個(gè)“.” 所示將所有新增的文件都放入暫存區(qū)。
查看git狀態(tài)
?3.8“暫存區(qū)”的內(nèi)容提交到“本地倉庫”
git commit -m '注釋'
3.9“本地倉庫”的內(nèi)容提交到“遠(yuǎn)程倉庫”
語法:
git push <遠(yuǎn)程主機(jī)名> <本地分支名> ?<遠(yuǎn)程分支名>
示例:
git push origin master
?注:
如果省略遠(yuǎn)程分支名,則推入與本地分支同名的遠(yuǎn)程分支
遠(yuǎn)程分支一般默認(rèn)的名稱為 origin,但不是必須的。
git push -u origin master
注:如果帶有-u參數(shù),則指定了默認(rèn)的遠(yuǎn)程主機(jī), 這樣以后再推入時(shí),可以簡寫為:git push。不帶任何參數(shù)的git push,默認(rèn)只推送當(dāng)前分支,這叫做simple方式。
3.10 將本地項(xiàng)目推入遠(yuǎn)程倉庫。
1)在本地創(chuàng)建一個(gè)目錄:
2)進(jìn)入gitdemo目錄,右擊鼠標(biāo)打開git命令行(Git Base Here)
3)使用git init 初始化git倉庫
4)在gitdemo目錄中添加一個(gè)測試文件,如abc.txt
5)將新增的abc.txt文件加入的本地倉庫(分兩步,見下圖)?
?6) 在github中創(chuàng)建倉庫
?
7)本地倉庫與遠(yuǎn)程倉庫關(guān)聯(lián)?
添加后,遠(yuǎn)程庫的名字就是origin,這是Git默認(rèn)的叫法,也可以改成別的,但是origin這個(gè)名字一看就知道是遠(yuǎn)程庫。
8)把本地庫的所有內(nèi)容推送到遠(yuǎn)程庫上
?
3.11 沖突的問題?
1)粗暴方式?
git push -f
會忽略版本不一致等問題,強(qiáng)制將本地庫上傳的遠(yuǎn)程庫,會覆蓋遠(yuǎn)程倉庫的內(nèi)容。要謹(jǐn)慎使用
注:可以理解為強(qiáng)制提交,強(qiáng)行用自己將自己的提交覆蓋上去????????
2)溫柔方式
使用 git pull 或 git fetch,先更新遠(yuǎn)程倉庫內(nèi)容。處理完合并后再推入遠(yuǎn)程倉庫
?
?注:決定好使用誰的提交代碼,之后刪掉就行了,
注:意思就是說合并之后的提示?
?