Git初始化、环境配置、文件创建提交到版本库、比较文件变动
1.git基本信息
查看git版本
[root@ubuntu2004 ~]#git --version
git version 2.25.1
创建项目根
[root@ubuntu2004 ~]#mkdir deploy-demoapp
[root@ubuntu2004 ~]#cd deploy-demoapp/
初始化Git仓库,生成.git目录结构
[root@ubuntu2004 deploy-demoapp]#git init
已初始化空的 Git 仓库于 /root/deploy-demoapp/.git/
查看.git本地版本库
[root@ubuntu2004 deploy-demoapp]#ls -a
. .. .git
[root@ubuntu2004 deploy-demoapp]#tree .git/
.git/
├── branches
├── config
├── description
├── HEAD
├── hooks
│ ├── applypatch-msg.sample
│ ├── commit-msg.sample
│ ├── fsmonitor-watchman.sample
│ ├── post-update.sample
│ ├── pre-applypatch.sample
│ ├── pre-commit.sample
│ ├── pre-merge-commit.sample
│ ├── prepare-commit-msg.sample
│ ├── pre-push.sample
│ ├── pre-rebase.sample
│ ├── pre-receive.sample
│ └── update.sample
├── info
│ └── exclude
├── objects
│ ├── info
│ └── pack
└── refs
├── heads
└── tags
9 directories, 16 files
2.配置git环境
配置git
命令:git config
git配置有三个级别,分别对应三个文件
◆--system:系统级,全系统范围有效,对应文件/etc/gitconfig
◆--global:全局级,当前用户范围有效,对应文件为$HOME/.gitconfig
◆--local:本地级,仅对当前一个项目有效,对应文件为项目目录下的.git/config
列出已有配置:
[root@ubuntu2004 deploy-demoapp]#git config -l
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
增加全局配置:
[root@ubuntu2004 deploy-demoapp]#git config --global user.name fanchao
[root@ubuntu2004 deploy-demoapp]#git config --global user.email 1153454651@qq.com
[root@ubuntu2004 deploy-demoapp]#git config --global color.ui auto
[root@ubuntu2004 deploy-demoapp]#git config --global core.editor vim
列出配置
[root@ubuntu2004 deploy-demoapp]#git config -l
user.name=fanchao
user.email=1153454651@qq.com
color.ui=auto
core.editor=vim
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
3.创建、提交
第一步:
创建自述文件
[root@ubuntu2004 deploy-demoapp]#cat README.md
#Deploy demoapp
查看状态(会告诉我们有一个文件修改了,但还没纳入到版本库,尚未跟踪)
[root@ubuntu2004 deploy-demoapp]#git status
位于分支 master
尚无提交
未跟踪的文件:
(使用 "git add <文件>..." 以包含要提交的内容)
README.md
提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
第二步:
加入到暂存区
[root@ubuntu2004 deploy-demoapp]#git add README.md
再次查看状态(文件已经放入暂存区,可以使用"git rm --cached <文件>..." 以取消暂存)
[root@ubuntu2004 deploy-demoapp]#git status
位于分支 master
尚无提交
要提交的变更:
(使用 "git rm --cached <文件>..." 以取消暂存)
新文件: README.md
第三步:
提交到版本库
[root@ubuntu2004 deploy-demoapp]#git commit -m "Initial Commit"
[master (根提交) 02a878c] Initial Commit
1 file changed, 1 insertion(+)
create mode 100644 README.md
[root@ubuntu2004 deploy-demoapp]#git status
位于分支 master
无文件要提交,干净的工作区
提交的文件在什么位置(其中包含文件对象、数对象和提交对象)
[root@ubuntu2004 deploy-demoapp]#tree .git/
├── objects
│ ├── 02
│ │ └── a878cc1ccc736b42c6c6ae2c3be917615e5904
│ ├── a2
│ │ └── 697c96e5a05b3f5e083663816b548ca09e8a6d
│ ├── f5
│ │ └── 2b512c1f8efafc7f5b0aa1c7594dee89f91485
查看提交历史
[root@ubuntu2004 deploy-demoapp]#git log
查看提交的详情(检查某一次提交发生哪些修改)
[root@ubuntu2004 deploy-demoapp]#git log -p
显示提交中文件的统计信息
[root@ubuntu2004 deploy-demoapp]#git log --stat
每个提交只显示一行
[root@ubuntu2004 deploy-demoapp]#git log --oneline
只显示某作者的提交
[root@ubuntu2004 deploy-demoapp]#git log --author="USER.NAME"
只显示与某个文件相关的提交
[root@ubuntu2004 deploy-demoapp]#git log file
作者与文件组合使用
[root@ubuntu2004 deploy-demoapp]#git log --auther "mengfanchao" -p deployment-demoapp.yaml
4.项目中文件的状态
在git版本库,一个被跟踪的文件可能处于下面三种状态之一
◼ unstaged (in Working Tree) - called unstaged changes #工作区
◼ staged (in Staging Area or Index or Cache) - called staged changes #暂存区
◼ committed (in local repo object database) #版本库
处于工作区或暂存区中的文件,在使用git status命令查看时,可能会显示为多种状态
◼ unmodified #没做任何修改的文件
◼ added #已添加并跟踪
◼ modified #处于已修改文件
◼ deleted #已删除文件
◼ renamed #重命名文件
◼ copied #被制作副本的文件
如:修改3中README.md文件,增加一行内容
[root@ubuntu2004 deploy-demoapp]#vim README.md
#Deploy demoapp
Deployment demoapp configuration file.
另新建一个文件
[root@ubuntu2004 deploy-demoapp]#vim deploy-demoapp.yaml
piVersion: apps/v1
kind: Deploymnet
metadata:
name: demoapp
namespase: default
spec:
查看状态以上两个文件的状态(文件一是以跟踪但未暂存新的变更,文件二是未跟踪文件)
[root@ubuntu2004 deploy-demoapp]#git status
位于分支 master
尚未暂存以备提交的变更:
(使用 "git add <文件>..." 更新要提交的内容)
(使用 "git restore <文件>..." 丢弃工作区的改动)
修改: README.md
未跟踪的文件:
(使用 "git add <文件>..." 以包含要提交的内容)
deploy-demoapp.yaml
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
把两个文件都加进来并再次查看
[root@ubuntu2004 deploy-demoapp]#git add .
[root@ubuntu2004 deploy-demoapp]#git status
位于分支 master
要提交的变更:
(使用 "git restore --staged <文件>..." 以取消暂存)
修改: README.md
新文件: deploy-demoapp.yaml
再次提交到版本库
[root@ubuntu2004 deploy-demoapp]#git commit -m "commit2"
[master 5e8b5da] commit2
2 files changed, 7 insertions(+)
create mode 100644 deploy-demoapp.yaml
查看提交历史
[root@ubuntu2004 deploy-demoapp]#git log
commit 5e8b5da17b8a022b999d01ef82ace1e8e0dbff01 (HEAD -> master)
Author: fanchao <1153454651@qq.com>
Date: Sun Jan 29 11:33:08 2023 +0800
commit2
commit e0ffc0aa9a70793337b5b1f4d2970ebed2f85eb5
Author: fanchao <1153454651@qq.com>
Date: Thu Jan 19 16:41:42 2023 +0800
Initial Commit
只查看首行
[root@ubuntu2004 deploy-demoapp]#git log --oneline
5e8b5da (HEAD -> master) commit2
e0ffc0a Initial Commit
查看两次提交做了哪些修改
[root@ubuntu2004 deploy-demoapp]#git log -p
commit 5e8b5da17b8a022b999d01ef82ace1e8e0dbff01 (HEAD -> master)
Author: fanchao <1153454651@qq.com>
Date: Sun Jan 29 11:33:08 2023 +0800
commit2
diff --git a/README.md b/README.md
index a2697c9..92d5ff3 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,2 @@
#Deploy demoapp
+Deployment demoapp configuration file.
改文件、移动文件
文件在版本控制库中
git mv <原文件名> <新文件名>
如:git mv deploy-demoapp.yaml deployment-demoapp.yaml
未被纳入到版本控制库中的文件
mv <原文件名> <新文件名>
如:新建文件
[root@ubuntu2004 deploy-demoapp]#vim svc-demoapp.yaml
[root@ubuntu2004 deploy-demoapp]#cat svc-demoapp.yaml
apiVersion: v1
kind: Service
metadata:
name: demoapp
namespace: default
查看文件状态(一个文件被重命名,另一文件未被跟踪)
[root@ubuntu2004 deploy-demoapp]#git status
位于分支 master
要提交的变更:
(使用 "git restore --staged <文件>..." 以取消暂存)
重命名: deploy-demoapp.yaml -> deployment-demoapp.yaml
未跟踪的文件:
(使用 "git add <文件>..." 以包含要提交的内容)
svc-demoapp.yaml
对于未被跟踪,不在版本控制库的文件使用mv对其进行名称更改
[root@ubuntu2004 deploy-demoapp]#mv svc-demoapp.yaml service-demoapp.yaml
[root@ubuntu2004 deploy-demoapp]#git status
位于分支 master
要提交的变更:
(使用 "git restore --staged <文件>..." 以取消暂存)
重命名: deploy-demoapp.yaml -> deployment-demoapp.yaml
未跟踪的文件:
(使用 "git add <文件>..." 以包含要提交的内容)
service-demoapp.yaml
删除文件
文件在版本控制库中
git rm <文件名>
未被纳入到版本控制库中的文件
rm <文件名>
对比文件的变动
git diff #比较的是工作区和暂存区的变动,如果没有指定文件,会比较所有文件。
git diff --staged ID <文件名> #比较某个特定提交与暂存区的变动
git diff ID <文件名> #比较某个特定提交与工作区的变动
示例
查看当前状态
[root@ubuntu2004 deploy-demoapp]#git status
位于分支 master
要提交的变更:
(使用 "git restore --staged <文件>..." 以取消暂存)
重命名: deploy-demoapp.yaml -> deployment-demoapp.yaml
未跟踪的文件:
(使用 "git add <文件>..." 以包含要提交的内容)
service-demoapp.yaml
提交到版本库
[root@ubuntu2004 deploy-demoapp]#git add .
[root@ubuntu2004 deploy-demoapp]#git commit -m "commit-3"
[master 331400a] commit-3
2 files changed, 5 insertions(+)
rename deploy-demoapp.yaml => deployment-demoapp.yaml (100%)
create mode 100644 service-demoapp.yaml
比较暂存区与工作区的区别
[root@ubuntu2004 deploy-demoapp]#git diff
比较工作区与指定的提交的区别(最新的提交)
1、查看提交ID(最新一次提交ID为331400a)
[root@ubuntu2004 deploy-demoapp]#git log --oneline
331400a (HEAD -> master) commit-3
5e8b5da commit2
e0ffc0a Initial Commit
2、对比没有区别
[root@ubuntu2004 deploy-demoapp]#git diff 331400a service-demoapp.yaml
对service-demoapp.yaml进行修改再进行比较
[root@ubuntu2004 deploy-demoapp]#vim service-demoapp.yaml
apiVersion: v1
kind: Service
metadata:
name: demoapp
namespace: default
spec:
ports:
- name: http
potr: 80
selector:
app: demoapp
比较暂存区与工作区的区别
[root@ubuntu2004 deploy-demoapp]#git diff
diff --git a/service-demoapp.yaml b/service-demoapp.yaml
diff --git a/service-demoapp.yaml b/service-demoapp.yaml
index 759314e..4d3c983 100644
--- a/service-demoapp.yaml (变更前)
+++ b/service-demoapp.yaml (变更后)
@@ -3,3 +3,9 @@ kind: Service
metadata:
name: demoapp
namespace: default
+spec:
+ ports:
+ - name: http
+ potr: 80
+ selector:
+ app: demoapp
对变更后的文件删除一行(namespace: default)
再次比较暂存区与工作区的区别
[root@ubuntu2004 deploy-demoapp]#git diff
diff --git a/service-demoapp.yaml b/service-demoapp.yaml
index 759314e..8aaed5e 100644
--- a/service-demoapp.yaml
+++ b/service-demoapp.yaml
@@ -2,4 +2,9 @@ apiVersion: v1
kind: Service
metadata:
name: demoapp
- namespace: default
+spec:
+ ports:
+ - name: http
+ potr: 80
+ selector:
+ app: demoapp
比较暂存区与最近一次提交的区别(因为变动还放到暂存区,所以暂存区与最近一次提交无区别)
[root@ubuntu2004 deploy-demoapp]#git diff --staged 331400a service-demoapp.yaml
把变动添加到暂存区,再次比较暂存区与最近一次提交的区别
[root@ubuntu2004 deploy-demoapp]#git add service-demoapp.yaml
[root@ubuntu2004 deploy-demoapp]#git diff --staged 331400a service-demoapp.yaml
diff --git a/service-demoapp.yaml b/service-demoapp.yaml
index 759314e..8aaed5e 100644
--- a/service-demoapp.yaml
+++ b/service-demoapp.yaml
@@ -2,4 +2,9 @@ apiVersion: v1
kind: Service
metadata:
name: demoapp
- namespace: default
+spec:
+ ports:
+ - name: http
+ potr: 80
+ selector:
+ app: demoapp
vim编辑器产生的临时文件会显示有个文件未被跟踪
这种临时文件或由构建操作产生的文件,通常不应该纳入到跟踪库中
.gitignore文件可用于完成这种功能,忽略文件变动
[root@ubuntu2004 deploy-demoapp]#vim .gitignore
# .gitignore
# Java class files
*.class
# vim swap file
*.swp
# Executable files
*.exe
# Object and archive files
*.[oa]
temp/
[root@ubuntu2004 deploy-demoapp]#git status
位于分支 master
要提交的变更:
(使用 "git restore --staged <文件>..." 以取消暂存)
修改: service-demoapp.yaml
未跟踪的文件:
(使用 "git add <文件>..." 以包含要提交的内容)
.gitignore
存放到暂存区
[root@ubuntu2004 deploy-demoapp]#git add .
[root@ubuntu2004 deploy-demoapp]#git status
位于分支 master
要提交的变更:
(使用 "git restore --staged <文件>..." 以取消暂存)
新文件: .gitignore
修改: service-demoapp.yaml
标签:初始化,git,ubuntu2004,deploy,文件创建,demoapp,Git,yaml,root
From: https://blog.51cto.com/mfc001/6208920