git是什么?
Git 是一個開源的,目前世界上最先進的分布式版本控制系統(tǒng)
SVN與Git的最主要的區(qū)別?
- SVN是集中式版本控制系統(tǒng),版本庫是集中放在中央服務器的,而干活的時候,用的都是自己的電腦,所以首先要從中央服務器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服務器。集中式版本控制系統(tǒng)是必須聯(lián)網(wǎng)才能工作,如果在局域網(wǎng)還可以,帶寬夠大,速度夠快,如果在互聯(lián)網(wǎng)下,如果網(wǎng)速慢的話,就納悶了。
- Git是分布式版本控制系統(tǒng),那么它就沒有中央服務器的,每個人的電腦就是一個完整的版本庫,這樣,工作的時候就不需要聯(lián)網(wǎng)了,因為版本都是在自己的電腦上。既然每個人的電腦都有一個完整的版本庫,那多個人如何協(xié)作呢?比如說自己在電腦上改了文件A,其他人也在電腦上改了文件A,這時,你們兩之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。
git工作流程
- 主要分為:Remote(遠程倉)->Repository(版本倉,本地倉庫)-> Index(臨時區(qū)) ->Workspce(自己工作區(qū))
先從自己clone項目下來開始說整個工作流程分為(workspace->Index->Repository->Remote)
- Workspace:就是平時進行開發(fā)改動的地方,是當前看到最新的內(nèi)容,在開發(fā)的過程也就是對工作區(qū)的操作
- Index:當執(zhí)行 git add 的命令后,工作區(qū)的文件就會被移入暫存區(qū),暫存區(qū)標記了當前工作區(qū)中那些內(nèi)容是被 Git 管理的,當完成某個需求或者功能后需要提交代碼,第一步就是通過 git add 先提交到暫存區(qū)。
- Repository:位于自己的電腦上,通過 git commit 提交暫存區(qū)的內(nèi)容,會進入本地倉庫。
- Remote:用來托管代碼的服務器,遠程倉庫的內(nèi)容能夠被分布在多個地點的處于協(xié)作關系的本地倉庫修改,本地倉庫修改完代碼后通過 git push 命令同步代碼到遠程倉庫。
配置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 遠程倉庫
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) :此時應有提示有文件需要被加入到文件緩存區(qū)
git status
2.把有改動的文件加入到文件緩存區(qū)
git add readme.md
3.查看倉庫狀態(tài):此時應有提示有文件需要commit
git status
4. 把文件緩存區(qū)的文件加入到版本庫中(即把改動點更新到對應分支)
git commit -m '新增 readme.md 文件'
5.對文件修改并重復上面的操作 因為進行了commmit 提交了文件修改,當前空文件的分支被激活
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
- 當一次性修改多個文件時,可以通過以下命令批量操作
git add .
git checkou .
- 在提交了若干提交和更新后,可以使用gitlog 命令查看操作歷史
git log
- git reflog 可以查看所有分支的所有操作記錄
git reflog
- 在webstorm 中查看git log
File->git->show History ->log
本地git倉庫關聯(lián)遠程倉庫
```
1.本地倉庫與遠程倉庫關聯(lián)
git remote add origin '遠程倉庫的地址'
2. 拉取遠程分支代碼
git pull orign dev
3. 修改代碼并更新到本地
git add.
git commit -m '修改代碼描述'
4. 上傳本地代碼到遠程分支
git push orign dev
5. 此后可以直接使用git pull 、git push 操作遠程分支代碼
git pull
6.改動代碼
git add.
git commit -m '改動點描述'
git push
7.push本地代碼到遠程master分支時需要權限
8. 關聯(lián)遠程
```
遠程倉中有部分代碼,不允許直接把本地的代碼覆蓋上去時
```
1. 更新所有遠程分支到本地
git fetch
2.更新內(nèi)容與本地合并
git merge
3.merge 報錯 :fatal refusing to merge unrelated histories
git pull origin master --allow-unrelated-histories
4.再次合并
git merge
5. merge 報錯 Please , commit your cahnges before you merge
git add .
git commit -m '提交信息'
git merge
6. 拉取遠程分支代碼
此時本地與遠程分支代碼相同不會報錯
git pull
7. git push orgin '遠程分支名稱'
```
解決代碼沖突
```
1.clone 遠程分支代碼到本地另一個目錄
git clone '分支git地址'
2.修改readme.md 文件內(nèi)容,并push 到遠程分支
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.拉取遠程分支代碼
git pull
5.沖突報錯 ,解決沖突 根據(jù)沖突提示內(nèi)容,手動修改代碼
git add .
git commit -m '修改代碼描述'
6.解決沖突后再次拉取代碼
git pulll
7.將解決沖突后最新的代碼push
git push
```