git安装教程+IDEA集成+客户端命令全面讲解
1 git下载教程
打开git官网
点击首页的Downloads选项
选择你系统对应的版本,我这里以windows为例
选择x64位下载
会往你本地下载一个exe文件
双击
可以更改下载文件夹(我就默认放C盘了)
这里也默认,点击next
默认就行,点击next
这里可以选择你喜欢的编辑器,默认是Vim的
(ps:学过linux或者unix肯定接触过vim编辑器,就是i可以改位插入模式,Esc退出插入模式,:wq保存退出编辑,我感觉用着不习惯啊,所以我选择Visual Studio Code,根据你们电脑上有的软件选择就好了,没必要再下载一个)
这里省略图片了,一路默认next就好了,到最后选择Install
要验证是否下载成功,可以鼠标右键查看是否有这两个工具就好了
2 远程托管平台使用介绍
2.1 Gitee仓库创建
登录Gitee官网,没有账号的话,自己注册一个
左侧是你仓库项目的展示,我们选择右上角新建仓库
填写仓库名称(一般和项目名称相同,也可以不同,不能和仓库中的其它仓库重名)
填写仓库介绍(一般填写下项目介绍就好)
选择是否开源
点击创建
仓库创建好后,我们用HTTPS的网址,拷贝到本地(请跳转3.1小节查看拷贝操作)
2.2 GitHub仓库创建
首先登录GitHub官网,需要魔法,账号用邮箱就可以,很好创建
登录成功后,选择右上角“+”号,点击New repository,也就是新建仓库的意思
和Gitee步骤一致,填写仓库名称、仓库描述、是否开源就好了
创建成功后,可以用HTTPS的网址进行拷贝(具体操作跳转3.1小节查看)
3 IDEA集成Git
3.0 前置操作
首先我IDEA上有这4个和git相关的插件,没有的可以下载下
Gitee是中国的一个远程代码托管平台
GitHub是国外的一个远程代码托管平台
GitLab支持自己搭建代码托管平台
我这里以Gitee为例,网络较为稳定
(ps:GitHub也是类似的,使用方式差不多,只是推送或拷贝时,可能网络不稳定,得多尝试几次)
3.1 拷贝项目
打开IDEA,选择File–>New–>Project from Version Control
如果没有默认打开的项目的话,入口在这里
将HTTPS的URL拷贝到这里,Directory是存放你拷贝的项目的文件路径
拷贝成功,下面是一些git相关操作的存放位置
3.2 新建分支
如果在企业中使用,一般需要新建分支,如下:
一个项目包含用户模块开发和订单模块开发,两个人在各自分支进行开发
等待开发完毕后,再由主分支合并一次就好
接下来在IDEA中新建分支,发现图标为灰色,无法新建分支
(ps:由于我们一次都没有提交,就相当于main主分支都不存在,故不能新建分支)
我们先创建一个a.txt文件,提交一次
(ps:接下来是进行第一次提交,一般这个操作是仓库管理员提交的,你拷贝下来时,就是已经有过提交记录了,这个时候直接创建分支就好了)
点击左下角,我们可以看到本地已经有了一次提交
接下来,我们提交到远程仓库中
右键master–>选择push
点击push(如果没有连接过Gitee账号,这里可能需要你输入Gitee账号)
push成功后,可以看到远程多了一次提交
接下来就可以创建分支了
我们创建了一个名为user的分支,并勾选了Checkout branch(表示会自动切换到user分支)
我们在user分支,新建一个user.txt文本文件,提交
接下来是进行push操作,记住是选择user,进行右键
(ps:因为master没有新的提交,所以选择push也是没有东西可以提交的)
点击push
这时候远程仓库,也自动新增了一个user分支
(ps:我第一次学习时,以为user分支只是我本地的分支,我提交时,还是会提交到远程的master的分支上,其实是提交到了远程的user分支,没有也会自动创建)
4 易混淆问题
4.1 全拷贝还是浅拷贝?
请问:
如果远程有两个分支,master分支有三次提交记录C1,C2,C3,user分支有三次提交记录,C1,C4,C5,请问这时候你拷贝代码到本地,本地有几次提交呢?
远程 origin/master: C1 → C2 → C3
远程 origin/user: C1->C4->C5
答案:
4.1.1 全拷贝
默认情况下,本地会将远程仓库的所有分支所有提交记录都拷贝下来,拷贝情况如下
4.1.2 浅拷贝
但是,如果拷贝时,勾选了Shallow clone with a history truncated to 1 commits
(将历史记录截断为1次提交的浅克隆)
拷贝结果如下:只会拷贝master分支的最后一次提交
如果这时候本地又创建了user分支,新建了一个文件,提交到本地仓库时,一切正常,如果要push到远程仓库,就会遭到拒绝
4.2 push为什么遭到拒绝?
项目开发中很可能遇到这种问题
例如你拷贝时,远程仓库只有C1,C2,C3,C4四次提交,你在本地提交了C7,C8,但你的同事,也修改了,并且先你一步push到了远程仓库C5,C6,这时候你该怎么提交呢?
远程 origin/master: C1 → C2 → C3 → C4 → C5 → C6
你的本地 master: C1 → C2 → C3 → C4 → C7 → C8
如果直接push,会遭到拒绝,有两种解决方案
4.2.1 Pull+Rebase
Pull是“拉取”代码的意思
Rebase是“变基”的意思
执行该命令后,你的本地会变成
(ps:C7’,C8’是合并C7后的代码)
你的本地 master: C1→C2→C3→C4→C5→C6→C7'→C8' (C7'、C8'是变基后的新提交)
这时你再push,远程仓库将变成
远程 origin/master: C1→C2→C3→C4→C5→C6→C7'→C8'
4.2.2 Pull+Merge
Merge是“合并”的意思
执行完命令后,你的本地会变成
(ps:C9是C8和C6合并完的结果)
你的本地 master: C1→C2→C3→C4→C7→C8→C9↗C6
这时你再push,远程仓库将变成
远程 origin/master: C1→C2→C3→C4→C7→C8→C5→C6→C9
通过拷贝远程仓库,看到图形化结果
虽然只有一个master,但可以清晰的看到合并记录
以及代码是从哪里发生合并的
4.2.3 两者优劣对比
拉取并变基础pull and rebase | 多人协作时保持提交历史整洁,线性,无合并记录 |
---|---|
拉取并合并pull and merge | 简单直接,不想改变本地的提交历史时,有合并记录 |
5 遇到的问题汇总
5.1 GitHub账号关联失败
首先介绍一下我遇到的问题
5.1.1 Log in via GitHub 账号关联失败
选择方式一时,例如:Log in via GitHub
会报这个错误
5.1.2 Log in with Token 账号关联成功,但push失败
后来看别人的博客说用第二种方式,Log in with Token
点击Generate自动跳转
只用选择有效期和权限就好了,
(ps:刚开始权限我用的默认的,push失败,重新创建token,把所有权限都勾上了,还是push失败,你们可以自己试试)
选择完后,滑到最下面,点击Generage Token
将生成的token复制到Token列表,账号就可以关联成功了这时候,账户可以添加成功,但是push时,还是失败,报下面的错误
(Cannot load information for github.com/lhl555:Requestresponse: Access to this site has been restricted. lf you believethis is an error, please contact https://support.github.com)
5.1.3 更新IDEA,最终解决
应该是版本的问题,我最后选择更新IDEA,我更新到了最新版2025.2,然后直接用的方式一就关联成功了。
就是版本问题,让我折腾了一上午
6 基于命令行的git操作
Git自带命令行工具
任选一个空的文件夹,例如:我选择E盘下的git文件夹
右击,选择Open Git Bash here
成功打开了命令行界面
如何初始化一个git仓库?
在命令行窗口执行
git init
可以看到该文件夹被添加了.get文件,这是git管理该文件夹为仓库的标志
(ps:如果看不到,可能被隐藏了,设置可以查看隐藏文件)
如何提交一个文件到本地仓库?
首先手动增加a.txt和b.txt文件
通过该命令,可以查看工作区、暂存区文件变化
git status
可以看到一个a.txt和b.txt文件未被追踪(也就是在工作区)
想要提交到新增文件到本地版本库,需要先add该文件到暂存区
再通过commit命令提交到版本库中
通过下面的案例,可以看到,git只会commit暂存区中的文件
为什么在IDEA操作时,只有commit一步呢?没看到add的步骤啊?
答案:因为UI操作界面简化了操作,方便用户使用;而在命令行界面,必须先add,才能commit
如何查看提交历史
git log #展示详细的信息
git log --oneline #展示信息简化为一行
两者的区别就是,展示每条提交记录时,是展示详细信息,还是只展示一行信息
如何克隆远程仓库项目
为了方便展示,我新建了一个空的文件夹,名为E:\clone
在这里右击—>Open Git Bash here打开命令行工具
到Gitee官网,选择HTTPS的方式克隆
git clone https://gitee.com/liu-huale/remote-gitee-testpublic.git <自己决定你的本地仓库名称>
不起名字就默认同名哈,我这里省略自己起名字了
进入到该文件夹内,重新右击—>Open Git Bash here打开命令行工具
新增了一个111.txt文件,通过git status,可以看到能够正常被识别
提交到本地仓库
git add 111.txt
git commit -m 创建111.txt文件
如何提交到远程仓库
可以通过一下命令
git remote #查看已关联的远程仓库
git remote add <远程仓库别名> <远程仓库URL> #新增远程仓库关联
git push <远程仓库别名> <本地分支名> #提交代码到远程仓库
填写完用户名密码后,可以看到上传成功
误删文件如何恢复
如果我误删了f.txt文件,但没有commit
git restore f.txt
可以通过restore恢复,原理是上一次commit有f.txt完整备份
如果我误删了f.txt,并且commit了
这时候restore不管用了,它会报错说找不到
我们可以用reset命令恢复
git log #先获取提交ID
git reset --hard <提交ID> #再rest恢复到指定版本
这样做有一个弊端,就是会丢失提交记录
如果不想丢失提交记录,可以用revert命令
git revert <提交ID> #新增一个指定版本
执行完该命令后,发现“误删f文件”的提交记录并没有被删除,反而新增了一个提交记录,该新增的提交记录就是将ec6284c拷贝了一份,放到最前面提交
(ps:这样的好处不言而喻,就是不会丢失提交记录)