Git工具的使用(linux示例,windows类似)

1、了解git

特点

  1. git是分布式的,特点是保存本地文件的元数据(meta data,文件属性等),将本地文件所有的的元信息,记录在git repo里的.git隐藏文件夹中。

  2. git的使用可以不用网络,因为本地版本控制仓库就在你自己机器上,每一个人就是一个完成的版本库。
    只不过是最终将你的本地仓库,作为一个分支,推送、合并到一个统一的线上代码仓库主干线即可,实现代码集成。

软件

Git有多种方式使用

  • 原生命令行,才能使用git所有命令,会git命令再去用GUI图形工具,完全无压力
  • GUI图形软件,只是实现了git的部分功能,以减免操作难度,难以记住git原生命令
  • 不同的人会有不同的GUI图形工具,但是所有人用的git原生命令都一样,推荐学习命令

weindows下载地址

windows下载安装包下一步即可

linux下安装

[root@docker-33 ~/gitProject]#yum install git -y
[root@docker-33 ~/gitProject]#git --version
git version 1.8.3.1

2、git工具的详细使用

前言

  • 既然已经在系统上安装了 Git,你会想要做几件事来定制你的 Git 环境。 每台计算机上只需要配置一次,程序升级时会保留配置信息。 你可以在任何时候再次通过运行命令来修改它们。
  • 先回顾下linux用户的概念
linux多用户,多任务

一台机器可以有多个用户登录,同时操作

因此就存在了不同的环境变量,用来区分,每个登录linux机器的用户

比如root用户的信息,在ls -a /root/

普通xxx用户的信息,在 ls -a /home/xxx

不同的用户登录后,linux加载不同的环境变量参数,对系统控制
  • Git 自带一个 git config 的工具来帮助设置控制 Git 外观和行为的配置变量。 这些变量存储在三个不同的位置:
    • –system

    • –global

    • –local

    • /etc/gitconfig 文件: 包含系统上每一个用户及他们仓库的通用配置。 如果使用带有 --system 选项的 git config 时,它会从此文件读写配置变量。(针对任意登录该linux的用户都生效)

    • ~/.gitconfig~/.config/git/config 文件:只针对当前用户。 可以传递 --global 选项让 Git 读写此文件。(只针对当前登录系统的用户生效)

    • 当前使用仓库的 Git 目录中的 config 文件(就是 .git/config):针对该仓库。 --local 当前仓库配置。(只针对某一个文件夹生效,例如/learn/linux/.git/config)

初始化配置

# 给git设置配置信息 --global 参数,身份信息,会写入 ~/.gitconfig

# 下边这几行就是说是给添加一个身份信息,方便知道那个版本的作者具体是谁修改的
# user.name 和 email 必须配置,不然拉取代码的时候也需要配置
git config --global user.name "JShan"
git config --global user.email "JShan@163.com"
# 开启git命令的颜色支持
git config --global color.ui true

本地仓库管理代码版本

  • 本地已经写好了代码,需要用git去管理 详细解释参考官网
# 1、首先创建一个本地项目目录 初始化本地repo仓库
[root@docker-33 ~/gitProject]#pwd
/root/gitProject
# 2、git init   # 初始化一个普通的目录为 git local repo
[root@docker-33 ~/gitProject]#git init 
Initialized empty Git repository in /root/gitProject/.git/
[root@docker-33 ~/gitProject]#ls -a
.  ..  .git
# 3、git init命令会创建一个.git隐藏子目录,这个目录包含初始化git仓库所有的核心文件。
# 4、此步仅仅是初始化,此时项目里的代码还没有被git跟踪,因此还需要git add对项目文件跟踪,然后git commit提交到local repo。
  • 初始化、添加、以及提交命令解释
git init  文件夹 进行初始化git仓库

git status 可以查看当前git仓库的状态

git add 文件 添加文件到暂存区

git commit -m '注释' 
  • 示例:
# 上边本地仓库已经初始化完成
# 1、查看代码状态 因为此时项目目录下没有文件 创建一个文件做测试
[root@docker-33 ~/gitProject]#git status
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)
[root@docker-33 ~/gitProject]#ls

# 2、创建一个1.sh的文件作为测试
[root@docker-33 ~/gitProject]#touch 1.sh
[root@docker-33 ~/gitProject]#ls
1.sh

# 3、此时再次查看仓库的状态,发现刚刚创建的文件提示可以添加到缓存区,也提示了使用什么命令进行添加
[root@docker-33 ~/gitProject]#git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#	1.sh
nothing added to commit but untracked files present (use "git add" to track)

# 4、通过git add . 这个点表示当前目录,此时会自动检索当前目录下所有可添加的文件进行添加到缓存区,如果不用 . 可以指定文件名进行添加
[root@docker-33 ~/gitProject]#git add .

# 5、此时再次查看状态,可以看到缓区已经有了刚才的文件,此时提示通过git rm --cached <file>... 可以删除缓存区的文件
[root@docker-33 ~/gitProject]#git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#	new file:   1.sh
#

# 6、通过git commit -m "v1.0" 提交代码, -m "注释" 
[root@docker-33 ~/gitProject]#git commit -m "v1.0"
[master (root-commit) a0e0132] v1.0
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 1.sh

# 7、再次查看状态,发现已经没有需要添加的文件
[root@docker-33 ~/gitProject]#git status
# On branch master
nothing to commit, working directory clean

# 8、通过git log 可以查看代码提交的历史
[root@docker-33 ~/gitProject]#git log
commit a0e01322a0aa78c2e54714ed4fba6a5abf9b0a28
Author: JShan <xxx@163.com>
Date:   Fri Mar 29 10:20:03 2024 +0800

    v1.0

克隆远程仓库的代码

示例使用gitee,github同理

  • 基于git clone命令,直接下载一个远程仓库的代码

  • 通过gitee上进行搜索进行克隆
    在这里插入图片描述

  • 根据提示使用对应的命令进行下载
    在这里插入图片描述

  • 示例:

# 1、拉取远程仓库代码
[root@docker-33 ~/gitProject]#git clone https://gitee.com/jumpserver/jumpserver.git
Cloning into 'jumpserver'...
remote: Enumerating objects: 108976, done.
remote: Counting objects: 100% (97788/97788), done.
remote: Compressing objects: 100% (26292/26292), done.
remote: Total 108976 (delta 70065), reused 95523 (delta 67868), pack-reused 11188
Receiving objects: 100% (108976/108976), 79.06 MiB | 535.00 KiB/s, done.
Resolving deltas: 100% (77556/77556), done.
# 2、进入项目目录进行查看
[root@docker-33 ~/gitProject]#cd jumpserver/
[root@docker-33 ~/gitProject/jumpserver]#ls
apps                CONTRIBUTING.md  Dockerfile-ee  jms          pyproject.toml  requirements   tmp
CODE_OF_CONDUCT.md  data             docs           LICENSE      README_EN.md    run_server.py  ui
config_example.yml  Dockerfile-ce    entrypoint.sh  poetry.lock  README.md       SECURITY.md    utils

# 3、通过git log会将所有提交代码的历史纪录全部展示出来
[root@docker-33 ~/gitProject/jumpserver]#git log
commit e428eb351bc04870b5de7b5032b096d6d6436552
Author: wangruidong <940853815@qq.com>
Date:   Thu Jan 11 19:07:54 2024 +0800

    feat: 同步ldap用户消息通知

commit 1275087f195041eb92985b816f7f09f002bf1741
Author: fit2bot <68588906+fit2bot@users.noreply.github.com>
Date:   Fri Jan 12 11:21:27 2024 +0800

    perf: 添加LC_ALL环境变量C.UTF-8 解决ansible无法初始化首选语言环境问题 (#12530)
    
    Co-authored-by: feng <1304903146@qq.com>

commit 311c01242be6dab6b74018c5fd96ec93d16a2e02
Author: feng <1304903146@qq.com>
Date:   Thu Jan 11 22:38:01 2024 +0800

    fix: 分页后排序失效 ....

# 4、此时可以通过 git log --oneline 略缩成一行
[root@docker-33 ~/gitProject/jumpserver]#git log --oneline
e428eb3 feat: 同步ldap用户消息通知
1275087 perf: 添加LC_ALL环境变量C.UTF-8 解决ansible无法初始化首选语言环境问题 (#12530)
311c012 fix: 分页后排序失效
bab5b67 fix: 修复自定义 applet 导入的 bug
3eb0b76 fix: 改密账号更新日期没有更新 (#12524)
6dcc74a fix: 账号备份只导出一条记录 (#12517)
2b15fc5 perf: 兼用处理一下 tree
df655f3 fix: 登录日志不显示
2522371 perf: 支持配置 RADIUS_ATTRIBUTES 属性
814dbeb fix: 解决手机号加密导致忘记密码判断总是失败问题
630bb56 fix: 解决手机号加密导致忘记密码判断总是失败问题
496b72a perf: 优化导入错误
b57e943 build(deps): 更新依赖版本
b4c1dd2 perf: slack消息解析优化-mistune升级
9ede367 perf: 邮箱支持exchange协议
2a29cd0 perf: 使用 nginx 处理静态资源
15ac81a perf: 优化标签绑定,仅绑定到资产上
eb5a53b perf: 翻译 (#12487)

  • 常用命令
创建git仓库  	git init 文件夹
查看状态  		git status
查看当前历史日志         git log         git log --oneline -4  # 查看前4行记录
跳转历史git      git reset --hard 46001fa # 46001fa 前面的版本号id
跳转上一次       git reset --hard HARD^
移除暂存区		git rm --cached xixixixix.sh 
使用git对文件重命名以及删除
				git rm 文件名
				git mv xixixixix.sh xixixixi.java
				git commit -m '重命名了 xixixi.sh 为xixix.java' 
git reflog命令用于显示Git仓库中的引用日志(reference logs),它记录了仓库中的引用(如分支、HEAD指针等)的变动历史。通过git reflog命令,您可以查看最近的引用变动记录,包括分支切换、提交、重置等操作,以便在需要时查找丢失的提交或恢复误操作的情况。
  • 补充

.gitignore 文件忽略文件不用被git管理

这个文件中可以定义那些文件或者目录被git工具所忽略 不被git管理

版本回退
git log可以查看历史版本记录
git reset --hard命令可以回退版本
git reset --hard HEAD^ 回退到上个版本
HEAD表示当前版版本
HEAD^  表示上1个版本
HEAD^^ 上2个版本

也可以直接git reset --hard 版本id号

这个时候就发现,git commit -m 所标记的注释信息非常重要了吧,可以让你自己知道到底回退到什么版本
撤销
- 直接删除就行,但是如果内容太多,你摸不清发生啥了呢?就没办法了
- 使用`git checkout -- 文件名`就可以直接撤销修改了
- 如果写乱了代码,添加暂存区但还没有commit提交。使用`git reset HEAD 文件名`取消暂存区添加,再`git checkout -- 文件名`来撤销修改
- 如果写乱了代码,添加暂存区并提交了。则使用版本回退
linux下git命令合集
yum install git -y  安装git

git --version  查看git版本

git config --system --list 查看系统所有linux用户的通用配置,此命令检查/etc/gitconfig

git config --global --list 查看当前linux用户的配置,检查~/.gitconfig文件

git config --local --list 查看git目录中的仓库配置文件,.git/config文件

git config --global user.name "jshan"  配置当前linux用户全局用户名,这台机器所有git仓库都会用这个配置

git config --global user.email "jshan@163.com"  配置当前linux用户全局邮箱

git config --global color.ui true 配置git语法高亮显示

git config --list 列出git能找到的所有配置,从不同的文件中读取所有结果

git config user.name  列出git某一项配置

git help 获取git帮助

man git man手册

git help config 获取config命令的手册

git分支实践

如下操作,我们是用本地仓库作为练习,创建分支,合并分支到master

切换分支

是在一个机器本地上操作

但是,同理玩法下,这个仓库,应该是由远程仓库提供,如在码云中的代码仓库

提供如master分支

zhangsan分支  张三推代码

bob 分支  鲍勃推代码

>最终他俩的代码合并到master
  • 默认版本仓库只有一个分支
git branch
直接看到当前版本仓库 有几个分支
以及有星星的哪个分支,就是你再用的

[root@tomcat-10 ~/springboot-bucket]#git branch
* master
# 创建分支
git branch liangliang
# 切换分支
git checkout liangliang
# 直接创建并切换分支
git checkout -b ww

# 不同分支的代码不能互相查看
# 合并分支 切换到主分支 进行代码拉取
git merge zhangsan

3、结合gitee使用

生成公钥添加到gitee上,windows同理

[root@docker-33 ~/gitProject]#ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:YISgxedpUUi6VFwT1SKeM0Iu0/yqGuOJtWmAhOsYDSk root@docker-33
The key's randomart image is:
+---[RSA 2048]----+
| .o+o=*o..       |
| o.oB.... .      |
|o.oB +oo .       |
|Eoo.O.=.         |
|++.+ o oS        |
|= .   .          |
|=o.  .           |
|+=oo.            |
|o=+.             |
+----[SHA256]-----+

# 查看公钥文件
[root@docker-33 ~/gitProject]#cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMIL8O9ZjF0HlyQNSSZoBdCp40LvDNLLMb0OA3EpLMZcHV1/25fSmojIRaFbmVcCK5jQfKN7UUzW+DsUffhjZjl8q82/OhdU8dwIIZaKqBp6SZvGGBYBbjxIswhc+NgyEaILSi2lYr7dKe32yFPteQQKE6DsJLwCFnLn1gsZ3szduzsP3/DJBbiu7Vsk+EvEqcrMkX8E7LclNSIabts+lZkNAI3LMykEDk26eKIcBT5OhbeVhlOLjq2TKxnAj0ktgHF8/UChMAuVbi64GGlDBBVYYufGsEaAzdqei7hfe1rO225tnWcv4EhyzMM4x4Lc+cGVM+MbYJ4M1gi5w96rGD root@docker-33

在这里插入图片描述
在这里插入图片描述

  • 按照上述添加上公钥
    在这里插入图片描述
  • 此时拉取自己账号中的开源或者私有的项目可以通过ssh拉取 windows一样的添加方式

4、idea结合gitee

  1. Idea配置Git客户端
    File — Settings—Version Control — Git
    关联Git安装目录下的bin/git.exe执行文件(这个就是git的客户端指令)
    在这里插入图片描述
  2. 下载gitee插件
    在这里插入图片描述
  3. 添加信息

注意:登录时,使用邮箱登录。
在这里插入图片描述

  1. 本地项目上传到服务器
    在这里插入图片描述
    在这里插入图片描述
  2. 选择上传的文件
    在这里插入图片描述
  3. 此时gitee上可以看见项目

5、idea提交代码 (示例使用2023版 其它版本类似,可能显示位置不一致)

  • 创建分支
    在这里插入图片描述
    在这里插入图片描述
  • 提交代码
    在这里插入图片描述
    在这里插入图片描述
  • 推送到远程仓库
    在这里插入图片描述
    在这里插入图片描述
  • 远程仓库查看
    在这里插入图片描述
  • 合并分支
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 跳转到主页面master分支 发现合并成功
    在这里插入图片描述

6、.gitignore文件

HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**
!**/src/test/**

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
/sql/local.sql

### VS Code ###
.vscode/

### mac ###
.DS_Store

# 接口文档发布 #
*-api/doc/deploy/*-doc

7、如果idea出现提交代码失败

检查推送的邮箱是否进行修改,如果勾选上不公开邮箱地址 那么就会出现推送失败
在这里插入图片描述

  • 42
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值