東莞網(wǎng)站建設網(wǎng)站推廣網(wǎng)絡營銷組織的概念
本文摘要
Git作為版本控制工具,使用非常廣泛,在此咱們由淺入深,分三篇文章(Git基礎、Git進階、Gitlab搭那家)來深入學習Git
文章目錄
- 本文摘要
- 1.Git倉庫基本概念
- 1.1 遠程倉庫(Remote)
- 1.2 本地庫(Repository)
- 2. Git倉庫工作流程
- 3. Git常用命令
- 4. Git配置文件
- 4.1. 查看配置文件
- 4.2. 新增配置文件
- 4.3. 刪除配置文件
- 5. .gitignore文件
- 5.1. 文件加載進暫存區(qū)
- 5.2. glob模式
- 5.3. 匹配示例
- 5.4. 定義全局忽略文件
- 5.5. 通用忽略文件
- 6.diff
- 6.1. 命令
- 6.2. 工作空間與暫存區(qū)
- 6.3.暫存區(qū)與版本庫
- 6.4. 工作空間與版本庫
- 6.5. 版本庫與版本庫
1.Git倉庫基本概念
1.1 遠程倉庫(Remote)
即資源庫,是遠程服務器機器上的代碼庫,用于做不同版本庫文件保存、更新。如Gitlab、GitHub、Gitee
1.2 本地庫(Repository)
即用戶在本地創(chuàng)建的目錄,擁有遠程庫的一個快照,由工作區(qū)+版本庫構成
- 工作區(qū)
項目根目錄中除.git目錄以外的內(nèi)容,存儲內(nèi)容的實際文件 - 暫存區(qū)
也叫做緩存區(qū),暫存信息存放在.git目錄下的index文件中,即.git/index中,用于臨時保存修改的內(nèi)容 - 版本庫(.git目錄)
本地庫的根目錄中的一個隱藏目錄.git,用于記錄版本信息,git進行版本控制所需要的文件,都放在.git文件夾中
2. Git倉庫工作流程
- 克隆遠程庫:從遠程庫上克隆完整的Git倉庫(包括代碼和版本信息)到本地;
- 在本地庫上修改代碼:在本地庫上根據(jù)不同的開發(fā)目的,創(chuàng)建分支,修改代碼;
- 提交到分支:在本地分支上提交代碼;
- 把修改合并到本地主分支:在本地庫上提交更新,也就是說,把修改合并到本地主分支;
- 把遠程庫合并到本地主分支:把遠程庫上的最新代碼fetch下來,跟本地主分支合并,如果存在沖突,那么解決沖突。
- 把本地主分支提交到遠程庫:生成補丁(patch),把補丁發(fā)送給遠程庫。
3. Git常用命令
命令 | 作用 | 示例 |
---|---|---|
init | 初始化git項目 | git init |
status | 查看git中文件狀態(tài) | git status |
add | 將工作空間文件添加至git暫存區(qū) | 單文件:git add filename 多文件: git add file1 file2 所有文件: git add . |
rm --cached | 將暫存區(qū)文件撤銷回工作空間 | git rm --cached filename |
restore | 將暫存區(qū)文件撤銷回工作空間 | git restore --staged filename |
commit | 將暫存區(qū)文件上傳至git版本庫 | git commit -m '提交注釋' |
log | 查看git操作日志 | 顯示所有日志:git log 簡單顯示日志: git log --pretty=oneline |
reset --hard HEAD^ | 1. 回退到上一個版本 2. 后邊有幾個^就表示回退到前邊版本 3. 回退指定版本 | 1. 回退上一版本:git reset --hard HEAD^ 2. 回退上上版本:git reset --hard HEAD^^ 3. 回退至前10個版本:git reset --hard HEAD~10 |
reset --hard version | 回到至指定版本 | git reset --hard 996c |
git reflog | 回退撤銷 | git reflog |
rm | 刪除文件,文件從版本庫移至暫存區(qū),要完全刪除,必須在執(zhí)行commit | git rm filename |
4. Git配置文件
Git 配置主要分為三類:優(yōu)先級:倉庫級(local)>用戶級(global)>系統(tǒng)級(system),對應的文件分別為:倉庫級(.git/config)、用戶級(~/.gitconfig)、系統(tǒng)級(/etc/gitconfig)
4.1. 查看配置文件
- 查看倉庫級:git config --local -l
- 查看用戶級:git config --global - l
- 查看系統(tǒng)級:git config --system -l
4.2. 新增配置文件
- 倉庫級:git config --local user.name ‘zhangsan’
- 用戶級:git config --global user.name ‘lisi’
- 系統(tǒng)級:git config --system user.name ‘wangwu’
4.3. 刪除配置文件
- git config --global --unset user.name
5. .gitignore文件
5.1. 文件加載進暫存區(qū)
- 提交所有變化:git add -A
- 只提交修改、刪除,不包括新建:git add -u
- 只提交新建、修改,不包括刪除:git add .
5.2. glob模式
- “*”:匹配零個或多個任意字符
- []:匹配方括號中的字符,如[ab]匹配a或b
- ?:匹配任意一個字符
- [n-m]:匹配所有這個字符范圍內(nèi)的字符
5.3. 匹配示例
- logs/:忽略logs目錄
- /logs.txt:忽略logs.txt文件
- *.class:忽略class結尾的文件
- !/classes/.class:不忽略classes目錄下的class結尾文件
- tmp/*.txt:只忽略tmp目錄下的txt結尾文件
- **/foo:可以忽略/foo,a/foo,a/b/foo等
5.4. 定義全局忽略文件
- git config --global core.excludesfile ~/.gitignore
5.5. 通用忽略文件
#java
*.class#package file
*.war
*.ear
*.zip
*.tar.gz
*.rar
#maven ignore
target/
build/#eclipse ignore
.settings/
.project
.classpatch#Intellij idea
.idea/
/idea/
*.ipr
*.iml
*.iws# temp file
*.log
*.cache
*.diff
*.patch
*.tmp# system ignore
.DS_Store
Thumbs.db
6.diff
diff:用于比較工作空間、暫存區(qū)、版本庫中文件差異性
6.1. 命令
- git diff readme.txt
6.2. 工作空間與暫存區(qū)
$ git diff 1.txt# a/1.txt:表示暫存區(qū)文件,b/1.txt:表示工作空間文件
diff --git a/1.txt b/1.txt# 表示暫存區(qū)的版本
index 9a71f81..478d5b1 100644
--- a/1.txt
+++ b/1.txt# -1:表示暫存區(qū)的行數(shù),2:表示工作空間行數(shù)
@@ -1,2 +1,2 @@hello world
-
# update workspace:表示工作空間增加了該行數(shù)據(jù)
+update workspace
6.3.暫存區(qū)與版本庫
$ git diff --cached 1.txt
diff --git a/1.txt b/1.txt
index 9a71f81..478d5b1 100644
--- a/1.txt
+++ b/1.txt
@@ -1,2 +1,2 @@hello world
-
+update workspace
6.4. 工作空間與版本庫
# 指定要比較的版本號
$ git diff HEAD 1.txtdiff --git a/1.txt b/1.txt
index 9a71f81..f0bc050 100644
--- a/1.txt
+++ b/1.txt
@@ -1,2 +1,4 @@hello world
+update workspace+xxixixix
6.5. 版本庫與版本庫
# 指定要比較的兩個版本號
$ git diff HEAD HEAD^
diff --git a/1.txt b/1.txt
index 478d5b1..9a71f81 100644
--- a/1.txt
+++ b/1.txt
@@ -1,2 +1,2 @@hello world
-update workspace
+