首页 > 其他分享 >1、Git初始化、环境配置、文件创建提交到版本库、比较文件变动

1、Git初始化、环境配置、文件创建提交到版本库、比较文件变动

时间:2023-04-20 10:13:45浏览次数:35  
标签:初始化 git ubuntu2004 deploy 文件创建 demoapp Git yaml root

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 [email protected]
[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
[email protected]
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 <[email protected]>
Date:   Sun Jan 29 11:33:08 2023 +0800

    commit2

commit e0ffc0aa9a70793337b5b1f4d2970ebed2f85eb5
Author: fanchao <[email protected]>
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 <[email protected]>
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

相关文章

  • 搭建 gitlab 私有仓库
    搭建gitlab私有仓库1.拉取镜像dockerpullgitlab/gitlab-ce2.启动容器dockerrun-itd\-p9980:80\-p9922:22\-v/home/gitlab/etc:/etc/gitlab\-v/home/gitlab/log:/var/log/gitlab\-v/home/gitlab/opt:/var/opt/gitlab\--restartalways\--pr......
  • 【git】git批量删除本地分支
    删除分支命令gitbranch-DbranchName删除当前分支外的所有分支gitbranch|xargsgitbranch-d删除分支名包含指定字符的分支gitbranch|grep'upstream*'|xargsgitbranch-d该例将会删除分支名包含’dev’字符的分支。命令解释|管道命令,用于将一串命令串......
  • Chatgpt 帮忙写的脚本_用shell 写一段代码,要求获取指定目录下的所有文件的 文件路径、
    需求:用shell写一段代码,要求获取指定目录下的所有文件的文件路径、文件名、文件创建时间,文件最后修改时间,并将结果导出到指定路径的csv格式文件中以下是使用Shell实现获取指定目录下所有文件的路径、名称、创建时间和修改时间,并将结果导出到CSV文件的示例代码:点击查看代......
  • git如何找出两个分支的共同commit点
    gitmerge-base[-a|--all]<commit><commit>…​gitmerge-base[-a|--all]--octopus<commit>…​gitmerge-base--is-ancestor<commit><commit>gitmerge-base--independent<commit>…​gitmerge-base--fork-point<ref......
  • Git
    1.Linux常用指令mkdir文件夹名创建文件夹rm文件名只能删除文件名字rm-rf文件夹名删除文件夹ls查看当前目录下的所有文件cdtest进入文件夹cd../返回上一级目录cata.txt查看文件内容Tab自动补全文件夹路径clear清屏上下方向键查看命令历史touch文件......
  • Centos7 初始化
    1、禁用selinuxsetenforce0sed-i's/SELINUX=permissive/SELINUX=disabled/'/etc/sysconfig/selinuxsed-i"s/SELINUX=enforcing/SELINUX=disabled/g"/etc/selinux/config2、安装工具yuminstall-ywgetlrzsztreenet-toolsbash-completionpsm......
  • 20个Github 网页常用操作教程
    20个Github网页常用操作教程创建仓库上传文件发布版本创建分支提交代码发起合并请求参与项目编辑文件添加贡献者查看提交历史查看问题(Issue)创建问题查看PullRequest添加标签查看分支查看贡献者重命名文件回退提交(UndoCommit)搜索代码查看贡献者活动......
  • 八百字讲清楚——BCEWithLogitsLoss二分类损失函数
    BCEWithLogitsLoss是一种用于二分类问题的损失函数,它将Sigmoid函数和二元交叉熵损失结合在一起。假设我们有一个大小为NNN的二分类问题,其中每个样本......
  • git branch 分支二次提交冲突解决
    2028gitcommit-m"[CODESCAN]dlna_srcchecktwocommit"2029gitpush2030gitbranch2031gitpush2032gitbranch2033clear2034ls2035gitbranch2036gitpush2037gitbranch2038gitlog2039gitpush2040gitpush--set-up......
  • git reset用法
    gitreset是Git的一个命令,可以用于取消暂存的更改或将当前分支移动到不同的提交。根据使用方式的不同,它可以有效地撤销更改或调整提交历史记录。下面是gitreset常见的用法:取消暂存的更改:如果你已经使用gitadd将文件添加到暂存区,但是在提交之前想要删除它们,可以使用git......