git是什么镰绎?
Git 是一個開源的狗唉,目前世界上最先進(jìn)的分布式版本控制系統(tǒng)
SVN與Git的最主要的區(qū)別摊册?
- SVN是集中式版本控制系統(tǒng),版本庫是集中放在中央服務(wù)器的篙贸,而干活的時候投队,用的都是自己的電腦,所以首先要從中央服務(wù)器哪里得到最新的版本爵川,然后干活敷鸦,干完后,需要把自己做完的活推送到中央服務(wù)器寝贡。集中式版本控制系統(tǒng)是必須聯(lián)網(wǎng)才能工作扒披,如果在局域網(wǎng)還可以,帶寬夠大圃泡,速度夠快碟案,如果在互聯(lián)網(wǎng)下,如果網(wǎng)速慢的話洞焙,就納悶了蟆淀。
- Git是分布式版本控制系統(tǒng),那么它就沒有中央服務(wù)器的澡匪,每個人的電腦就是一個完整的版本庫熔任,這樣,工作的時候就不需要聯(lián)網(wǎng)了唁情,因?yàn)榘姹径际窃谧约旱碾娔X上疑苔。既然每個人的電腦都有一個完整的版本庫,那多個人如何協(xié)作呢甸鸟?比如說自己在電腦上改了文件A惦费,其他人也在電腦上改了文件A,這時抢韭,你們兩之間只需把各自的修改推送給對方薪贫,就可以互相看到對方的修改了。
git工作流程
- 主要分為:Remote(遠(yuǎn)程倉)->Repository(版本倉刻恭,本地倉庫)-> Index(臨時區(qū)) ->Workspce(自己工作區(qū))
先從自己clone項(xiàng)目下來開始說整個工作流程分為(workspace->Index->Repository->Remote)
- Workspace:就是平時進(jìn)行開發(fā)改動的地方瞧省,是當(dāng)前看到最新的內(nèi)容扯夭,在開發(fā)的過程也就是對工作區(qū)的操作
- Index:當(dāng)執(zhí)行 git add 的命令后,工作區(qū)的文件就會被移入暫存區(qū)鞍匾,暫存區(qū)標(biāo)記了當(dāng)前工作區(qū)中那些內(nèi)容是被 Git 管理的交洗,當(dāng)完成某個需求或者功能后需要提交代碼,第一步就是通過 git add 先提交到暫存區(qū)橡淑。
- Repository:位于自己的電腦上构拳,通過 git commit 提交暫存區(qū)的內(nèi)容,會進(jìn)入本地倉庫梁棠。
- Remote:用來托管代碼的服務(wù)器置森,遠(yuǎn)程倉庫的內(nèi)容能夠被分布在多個地點(diǎn)的處于協(xié)作關(guān)系的本地倉庫修改,本地倉庫修改完代碼后通過 git push 命令同步代碼到遠(yuǎn)程倉庫符糊。
配置Git暇藏、初始化倉庫
1. 配置Git 賬戶信息
git config --global user.name 'rosebay'
git config --global user.email 'userEmail'
2. 創(chuàng)建一個新目錄(版本庫)并初始化
mkdir demo
cd demo
git init
clone 遠(yuǎn)程倉庫
git clone 代碼倉庫地址
創(chuàng)建分支
1. 查看倉庫的狀態(tài)
git status
2. 創(chuàng)建dev分支并選擇此分支
git chechout -b dev
新建文件、提交濒蒋、回滾、日志查看
0. 在demo文件夾dev分支上創(chuàng)建`readme.md`文件
1.查看倉庫狀態(tài) :此時應(yīng)有提示有文件需要被加入到文件緩存區(qū)
git status
2.把有改動的文件加入到文件緩存區(qū)
git add readme.md
3.查看倉庫狀態(tài):此時應(yīng)有提示有文件需要commit
git status
4. 把文件緩存區(qū)的文件加入到版本庫中(即把改動點(diǎn)更新到對應(yīng)分支)
git commit -m '新增 readme.md 文件'
5.對文件修改并重復(fù)上面的操作 因?yàn)檫M(jìn)行了commmit 提交了文件修改把兔,當(dāng)前空文件的分支被激活
git branch
git status
git add readme.md
git commit -m 'readme,md被修改了'
git status
- 代碼回滾:如果上步commit 時失誤的操作沪伙,想回到上次commit 的狀態(tài)可以使用文件回滾操作
git reset --hard HEAD~1
- 代碼回滾后,如果文件緩存區(qū)的修改需要移除
git checkout readme.md
git status
- 當(dāng)一次性修改多個文件時县好,可以通過以下命令批量操作
git add .
git checkou .
- 在提交了若干提交和更新后围橡,可以使用gitlog 命令查看操作歷史
git log
- git reflog 可以查看所有分支的所有操作記錄
git reflog
- 在webstorm 中查看git log
File->git->show History ->log
本地git倉庫關(guān)聯(lián)遠(yuǎn)程倉庫
```
1.本地倉庫與遠(yuǎn)程倉庫關(guān)聯(lián)
git remote add origin '遠(yuǎn)程倉庫的地址'
2. 拉取遠(yuǎn)程分支代碼
git pull orign dev
3. 修改代碼并更新到本地
git add.
git commit -m '修改代碼描述'
4. 上傳本地代碼到遠(yuǎn)程分支
git push orign dev
5. 此后可以直接使用git pull 、git push 操作遠(yuǎn)程分支代碼
git pull
6.改動代碼
git add.
git commit -m '改動點(diǎn)描述'
git push
7.push本地代碼到遠(yuǎn)程master分支時需要權(quán)限
8. 關(guān)聯(lián)遠(yuǎn)程
```
遠(yuǎn)程倉中有部分代碼缕贡,不允許直接把本地的代碼覆蓋上去時
```
1. 更新所有遠(yuǎn)程分支到本地
git fetch
2.更新內(nèi)容與本地合并
git merge
3.merge 報(bào)錯 :fatal refusing to merge unrelated histories
git pull origin master --allow-unrelated-histories
4.再次合并
git merge
5. merge 報(bào)錯 Please , commit your cahnges before you merge
git add .
git commit -m '提交信息'
git merge
6. 拉取遠(yuǎn)程分支代碼
此時本地與遠(yuǎn)程分支代碼相同不會報(bào)錯
git pull
7. git push orgin '遠(yuǎn)程分支名稱'
```
解決代碼沖突
```
1.clone 遠(yuǎn)程分支代碼到本地另一個目錄
git clone '分支git地址'
2.修改readme.md 文件內(nèi)容翁授,并push 到遠(yuǎn)程分支
git status
git add .
git commit -m '代碼內(nèi)容修改描述'
git push
3.找到最開始的該工程文件夾,修改和第2步中文本的同一行內(nèi)容
git status
git add .
git commit -m '代碼內(nèi)容修改描述'
4.拉取遠(yuǎn)程分支代碼
git pull
5.沖突報(bào)錯 晾咪,解決沖突 根據(jù)沖突提示內(nèi)容收擦,手動修改代碼
git add .
git commit -m '修改代碼描述'
6.解決沖突后再次拉取代碼
git pulll
7.將解決沖突后最新的代碼push
git push
```