目录
- 一、Git的下载和基本原理
- [二、基于本地库 认识git常用命令](#二、基于本地库 认识git常用命令)
-
- [新建本地库git init](#新建本地库git init)
- add添加到暂存区/移出暂存区
- commit提交到本地库
- [修改了文件 如何再次commit](#修改了文件 如何再次commit)
- [查看历史版本git reflog](#查看历史版本git reflog)
- [回退历史版本git reset](#回退历史版本git reset)
- [三、基于本地库 认识分支管理命令](#三、基于本地库 认识分支管理命令)
-
- git分支介绍
- [初始化测试本地库git init](#初始化测试本地库git init)
- [查看本地仓库分支git branch -v](#查看本地仓库分支git branch -v)
- [查看远程仓库分支git branch -r](#查看远程仓库分支git branch -r)
- [本地创建分支git branch XXX](#本地创建分支git branch XXX)
- [切换分支git checkout XXX](#切换分支git checkout XXX)
- push本地分支到远程
- [合并分支git merge](#合并分支git merge)
- 解决分支冲突
- [四、基于Github 认识远程库常用命令](#四、基于Github 认识远程库常用命令)
-
- 基于远程库团队内协作
- 创建用于测试的远程库
- [远程仓库关联到本地仓库git remote](#远程仓库关联到本地仓库git remote)
- [add commit](#add commit)
- [push(需要生成Personal Access Token)](#push(需要生成Personal Access Token))
- [本地修改后 再push到远程](#本地修改后 再push到远程)
- 从远程pull最新代码
- [版本控制:查看历史提交版本 回退](#版本控制:查看历史提交版本 回退)
- 分支管理
- 多人共同开发场景
- 克隆Github开源项目/跨团队协作
- 克隆Gitee开源项目
- [五、IDEA集成Git 基于本地库管理代码(图形化操作)](#五、IDEA集成Git 基于本地库管理代码(图形化操作))
-
- 前言
- .gitignore忽略不需要提交的文件
- [IDEA创建新项目 并集成Git](#IDEA创建新项目 并集成Git)
- 初始化本地库
- [add commit](#add commit)
- 切换回之前commit的版本
- 创建新的分支
- 切换/合并分支
- 删除分支
- 六、IDEA关联Github
- 七、IDEA关联Gitee
- 八、可能出现的问题
-
- [pull一个Maven项目下来 main包的java是灰色的](#pull一个Maven项目下来 main包的java是灰色的)
- 如何删除一个文件
- IDEA没有远程的分支
一、Git的下载和基本原理
下载链接
Git和小乌龟(图形化软件)的下载地址:
我用夸克网盘给你分享了「代码仓库小乌龟」,点击链接或复制整段内容,打开「夸克APP」即可获取。
安装Git
先安装git 再装另外一个图形化界面的工具
默认是C盘 可以不改 但是改的话一定要记住路径 待会安装可视化工具的时候
下面直接一路默认即可
需要找到此路径
看到如下两个就算安装成功了 其实已经可以用命令行的方式操作了接下来安装的图形化工具对初学者可能更友好
安装图形化界面工具
改一个安装路径之后 傻瓜式安装即可
他会自动找到此路径 就是刚刚安装的git的bin目录
注意 第一次安装的时候 需要我输入下面的信息这些在Gitee主页都能找到
右击看到这三个就算安装成功了
结合Gitee 了解git图形化操作
先在Gitee上建一个远程库
第一次创建的时候 可能无法选择开源 在创建完成之后 可以选择开源
clone远程仓库到本地首先复制好远程仓库的链接 希望在本地的哪里管理仓库 就进入该路径 然后选择git clone
第一次clone 可能会出现下面的情况:这里的信息 和之前填写过的是一样的
之后的操作 都可以右键 然后直接选择
Git的基本原理
Git工作流程:
1.在工作目录中添加、修改文件(workspace)
2.将需要进行版本管理的文件放入暂存区域(add到index)
3.将暂存区域的文件提交到本地仓库(commit到repository)
4.把本地仓库的文件代码push到远程仓库(比如Gitee GitHub...)
因此 git 管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)
Git 本地有三个工作区域1.工作目录(Working Directory):就是希望Git帮助你管理的文件夹
2.暂存区(Stage/Index):它只是一个文件 保存即将提交的文件列表信息(临时存放做的改动)
3.本地仓库(Repository):安全存放数据的位置 这里面有你提交的所有版本的数据 其中HEAD指向最新放入仓库的版本
4.再加上远程的git仓库(Remote Directory) 托管代码的服务器(比如Github/Gitee) 一共就可以分为四个工作区域
如何查看配置
安装Git后 首先要设置你的用户名称和e-mail地址 因为每次提交都会使用该信息
git config --global user.name "XXX"
git config --global user.email "XXX@xx.com"
指令成功执行 会生成C:\Users\Administrator.gitconfig
查看所有配置:git config -l查看系统配置:git config --system --list
查看当前用户配置:git config --global --list(该指令显示的就是 C:\Users\Administrator.gitconfig的内容)
查看文件状态与git基本操作
文件四种状态 用过git status可查看:
1.Untracked:会显示红色的 单纯是工作区文件 不参与版本控制 通过git add→Staged 就是绿色的了
2.Unmodify:文件已经入本地库 但未修改 如果它被修改→Modified;如果使用git rm移出版本库→Untracked
3.Modified:入库文件被修改 再通过git add→暂存staged状态;使用git checkout则放弃修改(原来是A 工作区修改成B了 但是本地库里还是A checkout就把本地库的A覆盖回来了 )
4.Staged:暂存状态 再执行git commit提交到本地库→Unmodify状态;再执行git reset HEAD filename取消暂存→状态为Modified
查看指定文件状态:git status [filename]查看所有文件状态:git status
添加所有文件到暂存区:git add .
提交暂存区中的内容到本地仓库:git commit -m "消息内容"
推送分支到远程仓库 git push --all再去远程仓库 就可以看到了
二、基于本地库 认识git常用命令
新建本地库git init
创建一个本地库:就是Git用来存 "文件历史、版本记录" 的文件夹
1.先建一个文件夹 比如叫Git-Test 进入这个文件夹:cd /d/Git-Test
2.输入初始化命令:git init 则当前文件夹就可以版本控制了 但只是本地仓库
可以新增文件 熟悉一些指令 红色就代表文件未被追踪
add添加到暂存区/移出暂存区
add 添加到暂存区(Stage/Index)
如果提交了后悔了 用这个命令移除:git rm --cached test.txt
再敲git status 文件又会变回红色未追踪
commit提交到本地库
commit把add过的文件 提交到资源库(Repository或Git Directory 也叫本地仓库)
add到暂存区的文件还不算"正式保存"
commit提交到本地库后 文件才会被写入.git文件夹 还会生成一个版本号 以后想回退到这个版本都能找到
这里是本地库 所以没有push到远程仓库的操作
修改了文件 如何再次commit
如果修改了已经add 已经commit的文件 怎么再次commit? 需要重新add 再commit
因为Git只认暂存区的内容 不直接同步工作区的修改
假设已经修改了前面的.txt文件
1.敲git status 会看到提示modified 且 是红色未追踪状态
2.敲git add test.txt 把修改后的文件重新放进暂存区
3.敲git commit -m "xxx" test.txt 正式提交修改到本地仓库
查看历史版本git reflog
改了好几次文件 想看看之前有哪些版本、版本号是啥 用两个命令:
git reflog:看简洁版历史 用的较多
git log:看详细版历史
回退历史版本git reset
如果想回到第一次提交的版本:git reset --hard 版本号
1.先从git reflog里找到第一次提交的版本号 比如22d4119
2.git reset --hard 22d4119
3.打开test.txt看看 已经回退了
三、基于本地库 认识分支管理命令
git分支介绍
git默认有一个主分支master/main 春节的时候可能会出贺岁版 或者给别的公司的定制版
这个时候会有分支了 分支可以有多个(根据业务需求)
如果各分支没有交集 始终平行发展 则不需要合并(merge)
如果两个分支 需要合并 则执行merge操作 并且必须处理分支冲突
初始化测试本地库git init
创建用于测试的本地库以及文件
查看本地仓库分支git branch -v
master是默认分支
*表示当前所在分支
cb94f58是版本号
后面是"最近一次 提交的备注"
查看远程仓库分支git branch -r
时刻要有"分布式"的概念 本地和远程 都是有分支的
本地创建分支git branch XXX
git branch hot-fix
再用git branch -v查看 会发现多了个hot-fix分支 和master指向同一个版本(因为刚创建 还没修改)
注意:这个时候 只有本地仓库有hot-fix分支 还没有push到远程仓库
切换分支git checkout XXX
发现🌟在新的分支上 则目前在hot-fix分支上
切换之后 我做的任何动作和master就没关系了
这就意味我做的开发 不会影响master分支 就算出了问题 删了重新再基于master开一个分支即可
修改文件后 发现hot-fix的版本号变了 和master不一样了这就是分支隔离的好处 在hot-fix上改 不会影响master
push本地分支到远程
上面的操作 都还没有对远程仓库生效
将本地分支v1.0作为独立分支提交到远程
合并分支git merge
一般情况 都是要把分支合并回master分支
所以首先要切换到master分支下 git checkout master 然后再执行git merge hot-fix如果没冲突 会直接合并成功 master的版本号会变成和hot-fix一样 BranchTest也会多出前面hotfix增加的内容
解决分支冲突
如果在同一文件的同一行 master和hot-fix都做了修改 合并时就会冲突
比如:
master里把hello.txt改成 "hello git! master test";
hot-fix里把hello.txt改成 "hello git! hot-fix test";
现在合并hot-fix到master 报错:Automatic merge failed; fix conflicts and then commit the result.
解决步骤:手动编辑Test.txt 决定要保留哪些内容 然后删除<<<<<<<、=======、>>>>>>>这些特殊符号
把修改后的文件 再次添加到暂存区 git add hello.txt
然后commit(注意 这次提交不能带文件名 ) git commit -m "解决冲突 合并hot-fix到master"
这样冲突就解决了
四、基于Github 认识远程库常用命令
基于远程库团队内协作
团队合作离不开远程库(比如 GitHub、Gitee、GitLab) 你改完代码 把代码push到远程库
同事从远程库pull你的代码 就能同步你的修改 所有人的代码都在远程库汇总 一目了然
1.团队负责人在Gitee/GitHub上建一个私有远程库(私有库只有团队成员能访问 避免代码泄露)
然后把所有团队成员拉进"库成员列表"(给大家 "读写权限",能拉能推)
2.团队成员每天打开项目前 先从远程库pull最新代码到本地 避免 "你改的是旧代码 同事改的是新代码 最后合并冲突";
然后在自己的分支上(避免在master分支上)完成代码; 改完push到远程仓库 告诉组长 我改完了 可以合并到master了
3.所有人把分支push到远程库后 组长要做两件事:
在远程库上发起"Pull Request(PR)" 或 "Merge Request(MR)" 检查代码有没有冲突、有没有 bug
确认没问题后 把所有人的功能分支合并到develop或master分支 然后通知大家"可以pull最新的合并代码了"
创建用于测试的远程库
在GitHub先创建自己的远程仓库
这就是远程库地址
远程仓库关联到本地仓库git remote
这一步有两个作用:
1.关联本地仓库和远程仓库
2.给刚才的远程库起个别名origin
关联的另一种方式 git clone把前面创建的远程库直接克隆到本地 也就关联了(有.git了)
add commit
这两步操作 只是提交到了本地库 远程库还没有 需要push
push(需要生成Personal Access Token)
执行git push origin master 把本地master分支推到origin别名对应的远程库
会弹窗 需要输入用户名+密码 注意:现 GitHub不支持明文密码 建议用 "Personal Access Token"
Username:GitHub用户名
Password:填token 而不是密码
看到100% (3/3), done. 就说明推成功了
本地修改后 再push到远程
修改工作区的文件→add到暂存区→commit到本地库→push到远程库
从远程pull最新代码
拉取远程master分支的最新代码 并合并到本地 避免本地落后
git pull origin master
版本控制:查看历史提交版本 回退
查看commit历史
回退到指定版本
分支管理
新建分支
合并分支到主分支
功能开发完成后 已经合并 如果需要删除远程分支git push origin --delete XXX
多人共同开发场景
登录GitHub 进入你的远程库 点击Settings→Collaborators→Add people
输入要邀请的GitHub用户名 点击Add collaborator
复制生成的邀请链接 打开链接 点击Accept invitation 就成为库的协作者了 可以pull push
核心原则是:多提交、常拉取、用分支隔离开发内容
下面是另一种方式:1.git clone https://github.com/项目名称.git (克隆别人的仓库到本地)
2.git pull origin master (每天开发前必做 拉取团队最新代码)
3.完成代码 最终顺利push到远程库
克隆Github开源项目/跨团队协作
1.王五登录GitHub 打开张三的远程库 点击Fork 把库复制到自己的GitHub账号下
2.再git clone到本地 写代码或者修复bug 然后push回自己的远程库
3.发起PR 王五在自己的GitHub库页面 点击"Pull requests→New pull request" 选择"base repository"和"head repository" 点击"Create pull request"
4.张三在自己的GitHub库页面 会看到"Pull request"提醒 审核王五改的内容 没问题就"Merge pull request" 合并代码
5.合并后 张三的库就有了王五的修改 王五也会收到"PR 已合并"的通知
fork之后 就相当于自己远程有了一个这个开源项目的副本远程库建议先克隆到本地 其余操作就都和前面一样了
克隆Gitee开源项目
目标:把这个仓库克隆到本地来 克隆远程代码仓库 就是将远程服务器上的仓库完全镜像一份至本地
git clone [url]url 就是远程项目的地址 克隆一个代码仓库和它的整个代码历史(版本信息)
五、IDEA集成Git 基于本地库管理代码(图形化操作)
前言
前面的四章 似乎都是基于文件或者文本文件的操作 单纯为了熟悉一些git操作
但是实际工作中 真的用git版本控制 肯定是要结合一些编译器的 (支持图形化操作 也可以使用命令行)
下面首先理解IDEA+Git+本地仓库的管理
再学习IDEA+Git+本地仓库+远程仓库比如Gitee的管理(最重要)
.gitignore忽略不需要提交的文件
.gitignore文件语法和常见写法(就看这篇就行了)_.gitignore !**表示什么_石头wang的博客-CSDN博客
下面这个案例就表示
忽略 .gitignore文件所在目录以及他的子目录下 所有满足规则的文件
另一种方式
1.创建忽略规则文件git.ignore
在C:\Users\你的用户名
新建一个文件 名叫git.ignore(名字随便起) 并写入忽略规则
# IDEA专属文件
.idea/
*.iml
*.iws
*.ipr
# 编译产物
target/
out/
# 操作系统文件
*.log
.DS_Store
Thumbs.db
# 临时文件
*.swp
*.swo
2.找到你的.gitconfig文件 也在用户家目录 是隐藏文件 用记事本打开添加一行配置
core
excludesfile = C:\Users\zcyxd\git.ignore
保存后 Git就会自动忽略git.ignore里列的文件了
IDEA创建新项目 并集成Git
此时的项目还没有用Git进行管理 需要设置
初始化本地库
想让Git管理你的IDEA的项目 就得初始化本地库 选择需要用Git管理的项目文件夹
初始化成功后 项目里的文件会变成红色 也就是没有add的状态
左下角会出现Git相关按钮
add commit
选择Git→Add 文件会变成绿色 已在暂存区
选择Commit 文件变成黑色 表示已提交到本地库由于是基于本地库的 所以没有push 如果有 直接push即可
切换回之前commit的版本
Checkout Revision 比敲git reset --hard直观多了
创建新的分支
1.创建分支
2.此时 只有本地有 远程仓库(如果关联过了) 还没有这个分支
3.push到远程仓库(如果关联过了)
切换/合并分支
注意:要合并到哪个分支 就先checkout到哪个分支 冲突解决之后 重新add commit一下即可
如果关联了远程仓库 这个时候远程仓库的master 还是没变化的 因为我刚刚解决冲突的操作 一切都还是发生在本地的
如果已经关联过远程仓库的话 还可以push一下这个项目文件 或者 直接push一下master分支
合并的时候 如果冲突 IDEA会出现如下界面
选择Merge就是在如下界面自己修改 apply就是采用修改的结果
删除分支
1.删除本地分支(这个时候删完 还能从远程checkout恢复下来 参考八、的第三点)
2.删除远程分支
六、IDEA关联Github
IDEA登录授权
先在idea设置代理
密码直接登录容易失败 所以推荐用Token登录生成Personal Access Token见前面四、push(需要生成Personal Access Token)
点击头像→Settings→Developer settings→Personal access tokens→Tokens (classic)→Generate new token
Note:随便写
Expiration:选No expiration 表示永远不过期
Scopes:最好全部选中
点击Generate token 生成一串Token
看到自己的用户名头像即可
直接把本地的IDEA项目分享到GitHub
如果你本地用IDEA在写一个项目 想直接分享到GitHub (这个过程自动会让本地库关联远程库)
选择下图的share(Github直接有share Gitee需要下载一个插件才有share)
Repository name 远程库名字Description 可选 写句描述
Private 勾选表示私有库
点击Share 之后IDEA会自动帮你在GitHub创建远程库;把本地代码推送到远程库;关联本地库和远程库(以后push/pull不用再配地址)
接下来就已经关联了 正常的add commit push即可
注意最好每次修改代码前 最好都先pull一下 保持代码是最新的
如果出现冲突 解决冲突即可
另一种方式关联方式:clone
IDEA里的Project from Version Control操作 本质上就是自动帮你完成了:
1.在指定路径执行 git clone [远程仓库地址]
2.自动打开克隆好的项目 并初始化Git配置
和手动在命令行执行git clone 再用IDEA 打开项目 效果是完全一样的
克隆完成后 IDEA会自动打开项目 还帮你初始化Git
之后也就是正常的git操作 支持图形化或者命令行
七、IDEA关联Gitee
Gitee需要先安装插件
如果很卡 可以参考2024.3版本idea无法安装插件问题解决
IDEA登录授权
Gitee可以用密码 就是登录Gitee网页的那个邮箱和密码
看到自己的用户名就是成功了
直接把本地的IDEA项目分享到Gitee
有可能是VCS 有可能是Git 找到这个share即可
后续的git操作 都和前面类似 比如下图的pull
支持图形化操作 也可以用命令行
另一种方式关联方式:clone
clone码云仓库到本地 克隆下来的项目就已经关联了 接下来的操作和之前一样
提醒:码云服务器在国内 HTTPS链接速度就够 可以不用SSH免密
把Github的仓库导入到Gitee
这是码云很实用的功能之一
如果GitHub上有个项目 直接下载/clone太慢 先导入到Gitee 再从Gitee下载 速度更快
具体步骤:
1.登录码云1点击右上角+号 选从GitHub/GitLab导入仓库
2.可以选择从URL导入 或者 导入Github的仓库
3.导入成功 就能从码云仓库快速下载这个项目了
八、可能出现的问题
pull一个Maven项目下来 main包的java是灰色的
问题原因是IDEA的环境设置等可能各不相同
正常Maven项目下面那个main包下面的java包是蓝色的(默认是Source Root)
pull下来的项目可能是灰色的 而且java文件可能有一个时钟的标志
解决方法:
选中该项目 做如下设置
如何删除一个文件
先删除本地文件(本地操作)
commit被删除文件的文件夹
最后可以push主分支 也可以push该文件夹
或者
IDEA没有远程的分支
可能出现如下问题
其实也就是把远程的分支再拉到本地仓库来(比如误删了本地仓库的某个分支 但是还没删远程的 )
从远程check out下来就行



















































































































