农妇山泉一亩田 发表于 2024-12-26 21:52:29

git全教程(长期更新)

1. git安装

git下载
有Linux,Mac,Windows三种版本用于下载
https://i-blog.csdnimg.cn/direct/091388e62d4a4338a16febc15fb05650.png
我们这里以Windows为例
1.1 安装exe

https://i-blog.csdnimg.cn/direct/66718fde927d435594ff112d1bbeea0d.png
安装目录最好别有中文
建议选择vim编辑器
https://i-blog.csdnimg.cn/direct/78e9505e7aac45acb48992a4554524ff.png
背面直接无脑点next即可
1.2 检验安装是否完备

安装完毕之后,目前比较新的版本的git都会自动将git的环境变量添加好
我们Win+r启动cmd(最好用管理员打开)
https://i-blog.csdnimg.cn/direct/5a45cfc4096c43f2abdc3a8244def71e.png
输入sh,回车
https://i-blog.csdnimg.cn/direct/86c0e11aabb64a0ab126b9fa8d068e43.png
https://i-blog.csdnimg.cn/direct/a82ae5b685e748f7ad1a387a139103a7.png
分析安装成功!
如果出现sh不是内部命令之类的,就必要我们手动给git配置环境变量
https://i-blog.csdnimg.cn/direct/95f5a3ee9fb0440f967f34191747c2e9.png
变量值为git安装目录(bin目录的上一级)
然后编辑Path系统变量,添加%GIT_HOME%\bin
https://i-blog.csdnimg.cn/direct/88a0fd5435a04587aa834e992a05db35.png
末了保存退出即可
2. git日常使用(最基础和最频仍的操作)

在命令行输入sh和右键git bash here的区别在于,有一些命令属于linux,sh毕竟是windows的命令行,是无法使用的
在一个全英文的目录下新建文件夹:myFIrstGit
https://i-blog.csdnimg.cn/direct/57c7403f02d34f7a84033a648b31f3b7.png
2.1 第一种git命令行:右键git bash here

https://i-blog.csdnimg.cn/direct/69570f7e256b4205b74556135cefd45a.png
https://i-blog.csdnimg.cn/direct/b9c5884d8c1040239f9d26dbed87d556.png
这里可以使用ll -a这个Linux系统的命令,展示当前文件夹的所有内容
https://i-blog.csdnimg.cn/direct/730b083161304fab8c9d29255b80cefb.png
也可以使用windows的
2.2 第二种git命令行:路径中输入sh

https://i-blog.csdnimg.cn/direct/94a967ca1894410781bdd7c864ea0eca.png
在这里输入sh,回车
https://i-blog.csdnimg.cn/direct/8c18eadf1e2640ae863f584f62693855.png
两个界面几乎完全一致,但是这里无法使用ll -a
https://i-blog.csdnimg.cn/direct/9fff45b7ae594a4bbac2ff46fc33582a.png
2.3 初始化(创建版本库)

git init
作用:将所在文件夹初始化为git当地堆栈;之后将会天生.git文件夹,此中包含了当地堆栈添加提交推送记录,当地堆栈的用户名和邮箱,分支详情等信息
https://i-blog.csdnimg.cn/direct/436290f3b4a14103a7ac59a9c9dcc072.png
https://i-blog.csdnimg.cn/direct/402076b857f94cb5aa452d8c800033d0.png
我们检察.git文件夹的内容,包含这些内容
https://i-blog.csdnimg.cn/direct/f2b18c3f341c4f3caad96297aea82a1a.png
此中config文件是用来存放本堆栈的配置的
https://i-blog.csdnimg.cn/direct/3aa6224bb77049ff81fa163afb764750.png
包含远程堆栈的地址,当地堆栈的用户名,邮箱等信息
COMMIT_EDITMSG保存了提交时附带的备注信息
https://i-blog.csdnimg.cn/direct/1233ef719f714671aa1322c32beb4eb0.png
2.4 添加文件+修改文件(基于Linux命令)

vi 文件名.拓展名
https://i-blog.csdnimg.cn/direct/59a64fece7fd468fb42571c10612166f.png
https://i-blog.csdnimg.cn/direct/0f0b55b54218425794fb6ce7d2032e6b.png
第一次进入默认阅读模式,点击i切换为编辑模式
https://i-blog.csdnimg.cn/direct/9b9d3e92f3a24971945fac36e9fb43c7.png
https://i-blog.csdnimg.cn/direct/5f7af8c894144d93bab0521ce9550e90.png
esc退出编辑模式,然后输入:wq保存并退出
https://i-blog.csdnimg.cn/direct/687a732df4b147e8871c70a862d9ce47.png
保存退出之后默认回到命令行界面
https://i-blog.csdnimg.cn/direct/79c97ab595184bfd9c7dc0c38e23de01.png
2.5 添加+提交修改的变动到当地堆栈

2.5.1 添加文件到暂存区

git add .或者git add firstGit.txt
前者是添加当前所有文件到暂存区;后者是只添加指定的文件到暂存区
https://i-blog.csdnimg.cn/direct/d0743d0f67534dbabfc190f74fcf9ab3.png
2.5.2 提交变动至当地堆栈

使用git status检察当前目录的文件变动状态
https://i-blog.csdnimg.cn/direct/fb22705260c34462a4407f792702729d.png
我们可以发现新建了一个文件,而且已经被添加到了暂存区
随后使用git commit -m "提交的备注"将暂存区中的文件提交到当地堆栈
https://i-blog.csdnimg.cn/direct/630e57a4866e4c9d84ecf282ae76e7be.png
2.6 将提交到当地堆栈的变动推送到远程堆栈

推送之前必要先连接,连接分为两种方式:https模式和ssh模式;
两者具体的过程大致相同,区别在于https必要验证一次账号暗码,ssh则是必要保存ssh秘钥
2.6.1 创建github远端堆栈和gitee远端堆栈

首先创建github的堆栈git_test
https://i-blog.csdnimg.cn/direct/4c82bafb000646138793509394666801.png
创建好之后是这样
https://i-blog.csdnimg.cn/direct/adf2018b1c45460e80d031ebef1995b8.png
然后创建gitee的堆栈
https://i-blog.csdnimg.cn/direct/f547186c8dc545e997738f8d8f6e7a76.png
2.6.2 与远端堆栈建立连接

2.6.2.1 https方式建立连接


[*] 复制堆栈的https的clone的联接
https://i-blog.csdnimg.cn/direct/55210afbef5f4870b6e6e404348aaaff.png
[*] 回到当地的git命令行,添加当地remote,定名为origin
https://i-blog.csdnimg.cn/direct/7efb66f612094741ba1ed40e62bf49c1.png
使用git remote 检察当地所有的rermote(远端堆栈地址)
https://i-blog.csdnimg.cn/direct/99fa69ac14a94af5a9359098d0543743.png
3. 添加本堆栈的user.mail以及user.name
git config --local user.name 'username'
git config --local user.mail 'mail'

[*]推送到远端堆栈
git push -u origin master # 这里的-u是--set-upstream的简称,--set-upstream用于设置上游分支(将本地仓库的分支与远端仓库的分支建立固定的联系,只有第一次需要这么做,后续推送代码可以直接git push)
git push # 本地分支和远端分支建立联系之后可以省略多余参数
然后就会弹出输入账号暗码的会话框
https://i-blog.csdnimg.cn/direct/e09b66dd82b24f3db97c115cbcec7fdd.png
授权一次即可永久使用(创建了windows根据)
随后代码即可正常推送到远端堆栈
https://i-blog.csdnimg.cn/direct/6c1d310906cf47ab9197fc9d4eac0237.png
ssh秘钥的方式轻微复杂一点
2.6.2.2 ssh方式建立连接

在 Windows 的 GitBash 或 Linux 终端输入:
$ ssh-keygen
-t rsa -b 4096 -C "your_email@example.com"
此命令将提示您用于存储密钥对和暗码的位置和文件名。当提示输入位置和文件名时,只需按Enter键即可使用默认值。
或者直接
ssh-keygen
你可以把引号里的替换为你自己的邮箱
然后终端会让你输入一些东西,可以不用输入直接一路回车,看到一个像雪花一样的图案之后就分析成功了
ssh-keygen
-t rsa -b 4096 -C "your_email@example.com"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_rsaYour public key has been saved in /root/.ssh/id_rsa.pubThe key fingerprint is:SHA256:t3925EJgD4kcUp69dBv/nqkM85n0I5mFRW4BlZwaVeo your_email@example.comThe key's randomart image is:+-------+|             .=o=||          .. B ||         o +* .||      . * =oo+ ||      So.B +A+ ||         .o.B.o.o||          .o o+o.||         .*+B.*||            .OoBo|+---------+ linux:cat .ssh/id_rsa.pub 检察公钥
windows:在C盘下 .ssh 文件夹中会天生 id_rsa 和 id_rsa.pub 两个文件, id_rsa.pub是公钥文件
打开公钥文件并复制到github或者gitee的ssh秘钥配置中
https://i-blog.csdnimg.cn/direct/444e5b3135bb4db4b2c115ab795ee32e.png
https://i-blog.csdnimg.cn/direct/d31de871421d4449942b737f069f7531.png
2.6.2.3 测试ssh连接

ssh -T git@github.com

或者
在这里插入代码片
然后会提示测试连接成功
https://i-blog.csdnimg.cn/direct/288d673bee884df28270ea716365dbdb.png
https://i-blog.csdnimg.cn/direct/b05cd5281ce14cd1a8bb0944ddceb0dd.png
随后我们就可以在clone代码的时候选择ssh方式clone
https://i-blog.csdnimg.cn/direct/376ca56daf8a46ae9676537c63a5c4bd.png
而且第一次push代码时也不必要输入账号暗码举行验证
2.6.3 推送代码

之前我们已经将变动提交到暂存区了,当我们将远端堆栈和当地堆栈建立连接之后,就可以推送代码了
git push origin master
https://i-blog.csdnimg.cn/direct/f028f7aed43e49738cf0567e86dd79f4.png
3. 其他重要命令

3.1 检察提交记录汗青

git log
https://i-blog.csdnimg.cn/direct/ee7e74d500074e3da216c85a61832ad4.png
回车可以向下继续检察,包含了项目标所有提交记录
:wq 保存退出
3.2 版本回退&&版本回退

git reset --hard HEAD^ # 退回上一个版本
git reset --hard HEAD~100 # 退回上100个版本

# 通过sha1的前四位退回到指定版本
git reset --hard xxxx
https://i-blog.csdnimg.cn/direct/9701c1e0165d4852b6af684782586d99.png
但是如果我又不想退回这个版本了,我想撤销回退,应该怎么做
git reflog # 查看所有历史版本
https://i-blog.csdnimg.cn/direct/874c8e7dfd1b42189ab7adb0dcceb7fc.png
然后就又可以切回最新的版本
3.3 检察&修改配置信息

git config --local -l # 查看本地仓库级别配置
git config --global -l# 查看用户级别仓库配置
git config --system -l# 查看系统级别仓库配置

优先级:堆栈级别 > 用户级别 > 系统级别
git 堆栈级别对应的配置文件是当前堆栈下的.git/config
git 用户级别对应的配置文件是用户宿主目录下的~/.gitconfig
git系统级别对应的配置文件是git安装目录下的 /etc/gitconfig
修改配置:
git config --级别 user.name ""
git config --级别 user.email ""
级别可以是:local,global,system
3.4 .gitignore自动忽略添加文件

所谓的 glob 模式是指 shell 所使用的简化了的正则表达式,匹配规则如下:

[*]“*”:星号匹配零个或多个恣意字符
[*][]:匹配任何一个列在方括号中的字符,如匹配a或者匹配b
[*]“?”:问号匹配一个恣意字符
[*]:匹配所有在这两个字符范围内的字符,如表现匹配所有0到9的数字
匹配示例
logs/: 忽略当前路径下的logs目录,包含logs下的所有子目录和文件
/logs.txt: 忽略根目录下的logs.txt文件
*.class: 忽略所有后缀为.class的文件
!/classes/a.class:不忽略classes目录下的a.class文件
tmp/*.txt: 只忽略tmp目录下的.txt文件
**/foo: 可以忽略/foo, a/foo, a/b/foo等
3.5 创建分支/切换分支/检察分支/删除分支

3.5.1 默认分支master并不是git init之后自动创建

当我们初始化堆栈之后,当地堆栈默认没有分支
HEAD是指向当前的分支,当前在哪个分支就指向哪个分支
分支指针指向提交
所以没有提交,也就没有分支,HEAD指针没地方指!

https://i-blog.csdnimg.cn/direct/a3e49ba0c795407dbafaacd48d08b0ac.png
因为git堆栈的HEAD指针要指向某一个提交分支的commit版本(默认该分支的最新提交版本),
所以只有提交了代码,才能真正创建默认的master分支
https://i-blog.csdnimg.cn/direct/b36d889b2f104e9fb9fecdf7379f603c.png
结果为空
当我们首次提交了代码之后
https://i-blog.csdnimg.cn/direct/17f89bd68c3741f6a3509fe77b8ff4be.png
https://i-blog.csdnimg.cn/direct/7794f0774c154a1f8e7b4b8e2bcc492f.png
我们再检察分支,出现了master分支!
https://i-blog.csdnimg.cn/direct/8bfc2186b05c47a29ef04b13b821b3c2.png
3.5.2 创建分支/切换分支/检察分支

切换分支必要先提交变动,或者暂存变动,才可以切换分支
git branch devlop # 创建本地分支devlop
git switch devlop # 切换到devlop分支上
git checkout -b devlop # 先创建,然后切换到devlop分支上
git branch # 查看自己所在的分支

git beanch -av # 查看本地和远程的所有分支,并且显示每个分支最新提交的备注
git remote # 查看当前本地分支推送对应的远端分支是哪个
3.5.3 删除分支


[*]不能删除自己所在的分支
[*]如果一个分支发生了变革不能删除
git branch -d devlop
3.6 分支合并

git pull = git fetch +git merge
合并到A分支,就再A分支上运行:
git merge B
3.6 暂存变动

我们发现会提示错误,git建议我们先提交或者stash修改的内容再切换
我们实行git stash
会先把修改的内容做保存然后我们就可以切换到其他的分支
我们再切回master分支实行,我们能看到上次保存的操作
git stash list
https://i-blog.csdnimg.cn/direct/a9cada61382f4848884fa7289b203a97.png
我们可以将stash过的修改恢复出来。通过pop取出迩来的恢复而且删除stash中的修改
git stash pop
https://i-blog.csdnimg.cn/direct/6846d57e933448999ba3411ac656cbdd.png
如果两次pop由于提一次没有做提交则会报错,所以我们应该把第一次pop的提交,再pop第二次暂存代码继续开发
3.7 删除远程分支

git push origin --delete feature
4. git流程表示图(包含内存结构图)

https://i-blog.csdnimg.cn/direct/8d476395b2764145ba283ab6adf28ae7.png
https://i-blog.csdnimg.cn/direct/7ad514bc10b640caa69f9a359d284deb.png
https://i-blog.csdnimg.cn/direct/39bea2aadefe4dd1859a93af52c1cf68.png
留意:随着Git 2.23版本的发布,checkout的功能被拆分成了两个新的命令:switch和restore。
git switch:专门用于切换分支和创建新分支。它简化了分支管理的流程,使得用户更容易理解。
git restore:用于恢复工作目录和暂存区的文件,但不涉及分支的切换。
这一变革反映了Git社区对命令清晰性和易用性的寻求。尽管checkout命令仍旧可用(出于向后兼容的考虑),但保举使用新的switch和restore命令。
https://i-blog.csdnimg.cn/direct/d0be0a6b0e034785b5f254d778bddbc4.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: git全教程(长期更新)