1.Git環(huán)境配置
設(shè)置用戶(hù)信息
- 注意:這個(gè)設(shè)置的用戶(hù)信息和郵箱和gitee沒(méi)有關(guān)系
git config --global user.email “郵箱”
git config --global user.name “名字”
查看配置信息
git config --list
git config user.name
2.獲取Git倉(cāng)庫(kù)
一.在本地初始化一個(gè)Git倉(cāng)庫(kù)
- 1.創(chuàng)建一個(gè)空目錄作為我們的本地倉(cāng)庫(kù)
- 2.進(jìn)入目錄中,點(diǎn)擊右鍵打開(kāi)Git bash 窗口
- 3.執(zhí)行命令 git init
二.從遠(yuǎn)程倉(cāng)庫(kù)克隆
-
git clone 倉(cāng)庫(kù)Https的路徑
3. 工作目錄晋南、暫存區(qū)以及版本庫(kù)的概念與關(guān)系
一.版本庫(kù)
- 在我們創(chuàng)建好的本地倉(cāng)庫(kù)里 .git隱藏文件夾就是版本庫(kù),版本庫(kù)存儲(chǔ)了很多配置信息,日志文件和文件版本信息等
二.工作目錄(工作區(qū))
- 包含.git文件夾的目錄就是工作區(qū)目錄,主要用于存放開(kāi)發(fā)的代碼
三.暫存區(qū)
-
.git文件夾中有很多文件,其中有一個(gè)index文件就是暫存區(qū),也可以叫做stage,暫存區(qū)是一個(gè)臨時(shí)保存修改文件的地方
四.關(guān)系
4.Git目錄下文件的二種狀態(tài)以及查看文件狀態(tài)命令
一.untracked 未跟蹤(未被納入版本控制)
二.tracked 已跟蹤(被納入版本控制)
- Unmodified 未被修改狀態(tài)
- Modified 已修改狀態(tài)
- Staged 已暫存狀態(tài)
這些文件狀態(tài)會(huì)隨著我們執(zhí)行Git命令發(fā)生變化
三.查看文件狀態(tài)
git status
- On branch master 表示當(dāng)前處于master分支
- Your branch is up to date with 'origin/master'. 表示當(dāng)前分支處于最新?tīng)顟B(tài)
- modified: README.md 表示當(dāng)前 README.md 這個(gè)文件處于已修改狀態(tài)
- Untracked files (use "git add <file>..." to include in what will be committed) heool.txt 表示當(dāng)前heool.txt文件處于為跟蹤狀態(tài)文件(新添加文件的狀態(tài))
git status -s 使輸出更加簡(jiǎn)介
- M 代表已修改狀態(tài)
- ??表示為跟蹤狀態(tài)
5.對(duì)本地倉(cāng)庫(kù)的操作
一. 添加文件
1.將未跟蹤的文件加入暫存區(qū)
git add 文件名稱(chēng)
2.將暫存區(qū)的文件提交到本地倉(cāng)庫(kù)
git commit -m "日志敘述"
git commit "不加-m,進(jìn)入文本編輯器中 i = 進(jìn)行編輯 esc = 退出編輯 :wq = 保存并退出
:q 不保存直接退出" 這里的文檔操作,與Linux的一樣
二. 將新創(chuàng)建的文件加入暫存區(qū)查看文件狀態(tài)
git add 文件名
git status -s
- A 表示文件加入暫存區(qū)
三.將已跟蹤的文件變?yōu)槲锤?/p>
git reset 文件名
四.刪除文件
- 1.通過(guò)命令來(lái)刪除
git rm 文件名
注意 : 這個(gè)命令只是刪除的工作區(qū)的文件,本地倉(cāng)庫(kù)還有對(duì)應(yīng)的文件
刪除本地倉(cāng)庫(kù)對(duì)應(yīng)的文件(只需要提交命令到本地倉(cāng)庫(kù))
git commit -m "敘述"
- 2.如果你直接刪除對(duì)應(yīng)的文件夾
直接去刪除文件夾(git默認(rèn)沒(méi)有將刪除操作加入到暫存區(qū))
這時(shí)候進(jìn)行commit提交無(wú)法操作
- deleted: txt.txt 文件代表刪除沒(méi)有加入緩存區(qū)
- D txt.txt 為簡(jiǎn)寫(xiě)
解決方法
-
1.使用git add 刪除文件夾名 加到暫存區(qū)
-
2.執(zhí)行g(shù)it commit -m "日志敘述"
五.將文件添加至忽略列表
應(yīng)用場(chǎng)景: 一般我們總會(huì)有文件無(wú)需納入Git管理,也不希望它們出現(xiàn)在未跟蹤文件列表,通常都是自動(dòng)生成的文件,java為例 : 編譯文件 , .idea , target ,在這種情況下我們可以在工作目錄創(chuàng)建一個(gè)名為 .gitignore的文件(文件名稱(chēng)固定) ,列出要忽略的文件模式
-
1.創(chuàng)建.gitignore文件
- 直接在windows是不能創(chuàng)建文件的
通過(guò)命令來(lái)創(chuàng)建忽略文件
touch .gitignore
- 2.編寫(xiě)忽略后綴
*.class
- 效果查看
git status
只有我們創(chuàng)建的忽略文件沒(méi)有加入暫存區(qū),class文件已經(jīng)忽略
六.查看日志記錄
git log
- 如果你操作比較多,日志一頁(yè)存放不下,使用Enter 繼續(xù)查看其他日志,q退出日志
6.對(duì)遠(yuǎn)程倉(cāng)庫(kù)的命令操作
一.查看遠(yuǎn)程倉(cāng)庫(kù)
- 1.簡(jiǎn)略查看
如果想查看已經(jīng)配置遠(yuǎn)程倉(cāng)庫(kù)服務(wù)器,可以運(yùn)行 git remote
如果已經(jīng)克隆了遠(yuǎn)程倉(cāng)庫(kù),那么至少應(yīng)該能看到origin,這是Git克隆的倉(cāng)庫(kù)服務(wù)器默認(rèn)名字
它會(huì)列出指定的每一個(gè)遠(yuǎn)程服務(wù)器的簡(jiǎn)寫(xiě)
- 2.列出詳細(xì)信息紫皇,在每一個(gè)名字后面列出其遠(yuǎn)程url
git remote -v
- origin https://gitee.com/wang-yu5/my-repo2.git (fetch) =>可以從這個(gè)地址進(jìn)行拉取
- origin https://gitee.com/wang-yu5/my-repo2.git (push)=>可以從這個(gè)地址進(jìn)行本地倉(cāng)庫(kù)推送到遠(yuǎn)程倉(cāng)庫(kù)
- 3.顯示遠(yuǎn)程倉(cāng)庫(kù)與本地倉(cāng)庫(kù)的關(guān)聯(lián)信息
git remote show origin
- remote origin => 遠(yuǎn)程倉(cāng)庫(kù)的名稱(chēng)
- HEAD branch :master=>當(dāng)前分支為master
- Remote branch: master tracked =>表示當(dāng)前master與遠(yuǎn)程分支master有追蹤關(guān)系
二.添加遠(yuǎn)程倉(cāng)庫(kù)
- 1.使用命令
git remote add origin "創(chuàng)建的遠(yuǎn)程倉(cāng)庫(kù)HTTPS地址"
三.從遠(yuǎn)程倉(cāng)庫(kù)克隆
- 1.克隆遠(yuǎn)程倉(cāng)庫(kù)命令
git clone [url]
- git克隆的是該倉(cāng)庫(kù)服務(wù)器上的幾乎所有的數(shù)據(jù)(包括日志信息蜜徽、歷史記錄等),而不僅僅是復(fù)制工作文件.當(dāng)你執(zhí)行g(shù)it clone 命令的時(shí)候,默認(rèn)配置下遠(yuǎn)程Git倉(cāng)庫(kù)中的每一個(gè)版本都將被拉取下來(lái)
四.移除無(wú)效的遠(yuǎn)程倉(cāng)庫(kù)
- 1.移除遠(yuǎn)程倉(cāng)庫(kù)
git remote rm 倉(cāng)庫(kù)名稱(chēng)
- 注意: 此命令只是從本地移除遠(yuǎn)程倉(cāng)庫(kù)的記錄,并不會(huì)真正影響遠(yuǎn)程倉(cāng)庫(kù)
五.從遠(yuǎn)程倉(cāng)庫(kù)中抓取與拉取
- 1.git fetch(抓取) 是從遠(yuǎn)程倉(cāng)庫(kù)獲取最新版本到本地倉(cāng)庫(kù),不會(huì)自動(dòng)merge(合并到本地工作區(qū))
git fetch origin master
- 將遠(yuǎn)程倉(cāng)庫(kù)的文件保存在本地倉(cāng)庫(kù),但是并不會(huì)顯示出來(lái),存儲(chǔ)在.git/object文件夾中,以二進(jìn)制的文件方式保存
- 合并命令(顯示到工作區(qū))
git merge origin/master
- 進(jìn)行合并,顯示到文件夾中
- 2.git pull (拉取) 是從遠(yuǎn)程倉(cāng)庫(kù)獲取最新版本并merge(合并)到本地倉(cāng)庫(kù)
git pull origin 分支名稱(chēng)
- 第一種應(yīng)用場(chǎng)景: 我們想要獲取遠(yuǎn)程倉(cāng)庫(kù)的代碼
- 初始化倉(cāng)庫(kù)
- 2.添加遠(yuǎn)程倉(cāng)庫(kù)地址
- 3.進(jìn)行pull
- 第二種應(yīng)用場(chǎng)景: 如果當(dāng)前本地倉(cāng)庫(kù)不是遠(yuǎn)程倉(cāng)庫(kù)克隆,而是本地創(chuàng)建的倉(cāng)庫(kù),并且倉(cāng)庫(kù)中存在文件
- 1.初始化倉(cāng)庫(kù)
- 2.查看倉(cāng)庫(kù)文件狀態(tài)
3.添加對(duì)應(yīng)的文件從工作區(qū)到暫存區(qū)
- 4.提交對(duì)應(yīng)的文件從暫存區(qū)到版本庫(kù)
-5.添加遠(yuǎn)程倉(cāng)庫(kù)
注意:報(bào)錯(cuò)為fatal: refusing to merge unrelated histories =>遠(yuǎn)程倉(cāng)庫(kù)和本地倉(cāng)庫(kù)的文件不同或版本不同- 6.強(qiáng)行進(jìn)行拉取(將本地倉(cāng)庫(kù)與遠(yuǎn)程倉(cāng)庫(kù)進(jìn)行合并)
git pull origin master --allow-unrelated-histories
六. 將本地倉(cāng)庫(kù)推送到遠(yuǎn)程倉(cāng)庫(kù)
- 1.首先讓修改文件加入版本庫(kù)
git commit -a -m "日志名稱(chēng)"
- -a:可只將所有被修改或者已刪除的且已經(jīng)被git管理的文檔提交倒倉(cāng)庫(kù)中。如果只是修改或者刪除了已被Git 管理的文檔咕娄,是沒(méi)必要使用git add 命令的。
- 2.推送到遠(yuǎn)程倉(cāng)庫(kù)
git push [remote-name] [branch-name]
七.git 分支
一.分支有什么好處
幾乎所有的版本控制系統(tǒng)都以某種形式支持分支
使用分支意味著你可以把你的工作從開(kāi)發(fā)主線(xiàn)上分離開(kāi)來(lái),以免影響開(kāi)發(fā)主線(xiàn)
Git的master分支并不是一個(gè)特殊的分支,它和其他分支沒(méi)有區(qū)別,之所以幾號(hào)每一個(gè)倉(cāng)庫(kù)都有一個(gè)
master,是因?yàn)間it init 命令默認(rèn)去創(chuàng)建它,并且大多數(shù)人都懶得去改動(dòng)它
二.查看分支
- 1.本地分支
git branch
- 2.遠(yuǎn)程分支
git branch -r
- 3.查看所有分支
git branch -a
- "*" 代表當(dāng)前處于什么分支
二.創(chuàng)建分支(創(chuàng)建的本地分支)
git branch 分支名稱(chēng)
- 這是在master分支下創(chuàng)建的b1分支 ==> b1分支的內(nèi)容和master的一樣
三.切換分支(切換本地分支)
git checkout 分支名稱(chēng)
四.將本地分支推送至遠(yuǎn)程倉(cāng)庫(kù)分支
git push origin 分支名稱(chēng)
(不管當(dāng)前處于那個(gè)分支,都可以提交其他分支)
例如 b1分支可以上傳b2分支
五.合并分支
-
將b2 分支內(nèi)容合并到master分支中(在master分支下面進(jìn)行操作)
-
將b2 分支內(nèi)容合并到master分支中(在master分支下面進(jìn)行操作)
git merge 合并分支名稱(chēng)
-
有時(shí)候合并操作不會(huì)如此順利,如果你在二個(gè)不同的分支中,對(duì)同一個(gè)文件的同一個(gè)部分
進(jìn)行了不同的修改,Git看沒(méi)有辦法合并它們,同時(shí)會(huì)提示文件沖突,
此時(shí)需要我們打開(kāi)沖突文件并修復(fù)沖突內(nèi)容,最后執(zhí)行g(shù)it add命令來(lái)標(biāo)識(shí)沖突已解決
-
- Automatic merge failed : fix conficts and then commit the result=> 自動(dòng)合并失敗:修復(fù)沖突珊擂,然后提交結(jié)果
- b2和master分支User.java都進(jìn)行了修改之后,出現(xiàn)了沖突,我們需要手動(dòng)進(jìn)行修改
- 使用git add 進(jìn)行標(biāo)識(shí)(表明我們已經(jīng)手動(dòng)處理好沖突)
- 3.將新添加的文件推送到遠(yuǎn)程倉(cāng)庫(kù)
git push origin 分支名稱(chēng)
六.刪除分支
- 1.刪除本地分支
git branch -d 分支名稱(chēng)
我在修改完b2分支User.java,并沒(méi)有推送到遠(yuǎn)程倉(cāng)庫(kù),
造成遠(yuǎn)程倉(cāng)庫(kù)分支與本地倉(cāng)庫(kù)分支有不同出現(xiàn)這個(gè)錯(cuò)誤,提醒你代碼不同
- 如果要?jiǎng)h除分支中進(jìn)行了一些開(kāi)發(fā)動(dòng)作,此時(shí)執(zhí)行上面的刪除命令并不會(huì),
刪除分支,如果堅(jiān)持要?jiǎng)h除分支 git branch -D 分支名稱(chēng)
注意:當(dāng)前在b2分支下刪除b2分支是不允許的,需要切換到不同分支
- 2.刪除遠(yuǎn)程倉(cāng)庫(kù)分支
git push origin -d 分支名稱(chēng)
八.標(biāo)簽
一.標(biāo)簽的作用
- 像其他版本控制系統(tǒng)(VCS)一樣,GIt可以給歷史的某一個(gè)提交打上標(biāo)簽,以示重要.
用這個(gè)功能來(lái)標(biāo)記發(fā)布節(jié)點(diǎn)(v1.0,v2.0).標(biāo)簽是值某一個(gè)分支特定時(shí)間點(diǎn)的狀態(tài)
通過(guò)標(biāo)簽,可以很方便的切換記錄時(shí)的狀態(tài)
二.列出已有標(biāo)簽
- 列出所有標(biāo)簽
git tag
- 2.查看tag信息
git show [tag]
三.創(chuàng)建新標(biāo)簽
- 1.新建標(biāo)簽
git tag [tagName]
四. 將標(biāo)簽推送至遠(yuǎn)程倉(cāng)庫(kù)
- 1.提交指定tag
git push origin [tag]
五. 檢出標(biāo)簽
- 1.新建一個(gè)分支,指向某個(gè)tag
git checkout -b [branch] [tag]
新建一個(gè)分支為b3,b3的內(nèi)容為v1.0版本
- 2.應(yīng)用場(chǎng)景
- 在不改變?cè)邪姹镜幕A(chǔ)上,進(jìn)行升級(jí)
- 新建分支為b3,版本內(nèi)容為v1.0
-
進(jìn)行下步開(kāi)發(fā)時(shí),修改b3內(nèi)容,進(jìn)行提交
- 創(chuàng)建新版本,進(jìn)行上傳遠(yuǎn)程倉(cāng)庫(kù)
六.刪除標(biāo)簽
- 1.刪除本地標(biāo)簽
git tag -d [tag]
- 刪除遠(yuǎn)程標(biāo)簽
git push origin :refs/tags/[tag]