1、了解git
特点
-
git是分布式的,特点是保存本地文件的元数据(meta data,文件属性等),将本地文件所有的的元信息,记录在git repo里的.git隐藏文件夹中。
-
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
- Idea配置Git客户端
File — Settings—Version Control — Git
关联Git安装目录下的bin/git.exe执行文件(这个就是git的客户端指令)
- 下载gitee插件
- 添加信息
注意:登录时,使用邮箱登录。
- 本地项目上传到服务器
- 选择上传的文件
- 此时gitee上可以看见项目
5、idea提交代码 (示例使用2023版 其它版本类似,可能显示位置不一致)
- 创建分支
- 提交代码
- 推送到远程仓库
- 远程仓库查看
- 合并分支
文章来源:https://www.toymoban.com/news/detail-848050.html
- 跳转到主页面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出现提交代码失败
检查推送的邮箱是否进行修改,如果勾选上不公开邮箱地址 那么就会出现推送失败
文章来源地址https://www.toymoban.com/news/detail-848050.html
到了这里,关于Git工具的使用(linux示例,windows类似)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!