git
概括
Git是一个分布式版本控制工具,主要用于管理开发过程中的源代码文件
(Java类、xml文件、html页面等)。
学了git能干什么?
代码回溯
查看历史提交记录并恢复到之前的某个状态
。这在发现错误或需要查看特定版本时非常有用。和Ctrl+Z的区别在于git就算一个月前的代码也可以回退。
查看提交历史:
git log
这个命令会列出所有提交记录,包括提交哈希、作者、日期以及提交信息。查看精简版的历史:
git reflog
这种方便阅读。查看某次提交的内容:
git show \<commit-hash>
使用 <commit-hash> 替换为具体的提交哈希值。回到某个提交状态:
git checkout \<commit-hash>
这会将工作目录恢复到指定提交的状态。
版本切换
版本切换通常指的是在不同的分支之间切换,以便于在不同的功能开发、修复bug或维护版本之间进行切换。
查看当前分支:
git branch
当前分支会用 * 标记。创建分支:
git branch 分支名称
切换分支:
git checkout 分支名称
创建新分支并切换:
git checkout -b 分支名称
合并分支:
git merge 分支名称
切换到目标分支,然后合并另一个分支推送至远程分支:
git push 远程仓库名称 本地分支的名称
删除分支:
git branch -d 分支名称
多人协作
多人协作是指多个开发者共同在一个项目上工作,每个开发者有自己的本地仓库,并且这些仓库都与远程仓库同步。
拉取远程仓库的变化:
git pull origin master
这个命令的意思是将本地的 master 分支推送到远程仓库 origin 中对应的 master 分支。推送本地变化到远程仓库:
git push origin master
解决冲突: 在合并分支时可能会遇到冲突,需要手动解决冲突后再提交。
使用分支: 每个人在自己的分支上工作,完成后合并到主分支。远程备份
远程备份是指将代码推送到远程服务器或代码托管平台,以防止数据丢失。
添加远程仓库:
git remote add origin 远程仓库的 URL
。推送代码到远程仓库:
git push -u origin master
-u 参数用于设置远程跟踪分支。
本地电脑生成秘钥对
Git操作流程
创建本地仓库
本地仓库可以通过两种方式获取,图形化界面创建
提交文件
提交操作的作用是将文件放到本地仓库中进行管理
修改文件
历史版本
删除文件
删除文件需要做两件事: 1) 删除文件 2) 提交更新到本地仓库
命令行操作流程
除了使用小乌龟进行操作外,还可以直接使用命令完成上面的操作
* 创建本地仓库
git init
* 查看本地库状态
git status
* 添加到暂存区
git add 文件名
* 提交到本地仓库
git commit -m '日志信息' 文件名
* 查看历史记录
git reflog 精简
git log 详细
* 版本穿梭
git reset --hard 版本号
* 删除工作区文件
git rm 文件名
git commit -m '日志'
忽略文件
在特定情况下,我们不希望自己的某些文件被git管理,这时候,我们就要设置git忽略掉此文件
工作流程
一般工作流程如下:
- 得到本地仓库(手动本地创建或者从远程仓库中克隆)
- 从本地仓库中执行checkout,检出项目到工作目录(自动执行)
- 在工作目录中编写代码,然后执行add命令将代码添加到暂存区(其实就是将代码添加到git管理)
- 执行commit代码到本地仓库,本地仓库中会保存代码各个历史版本
- 后面可以对代码进行修改、删除,当需要保存到本地仓库时,执行commit即可(无需再执行add)
- 如果需要跟团队其他成员共享文件,可以将代码push(推送)到远程仓库,也可以通过pull(拉取)得到远程仓库中的最新代码
创建远程仓库
仓库连接协议
git仓库支持两种连接协议:
- HTTPS:是以安全为目标的HTTP通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性
- SSH:安全外壳协议,通过密钥对方式对传输的数据进行加密,实现免密登录
复制git的地址(一定注意:这个地址是SSH的,以git开头,千万不要复制成HTTPS的)
SSH 密钥:生成的密钥对(包括公钥和私钥)常用于 SSH 连接。SSH 密钥可以让你安全地访问远程 Git 仓库,比如 GitHub、GitLab 或 Bitbucket,而无需每次都输入用户名和密码
。你将公钥添加到远程仓库的账户设置中,而私钥则保存在本地计算机上,Git 使用它来进行身份验证。
使用cmd
命令启动dos窗口,然后输入ssh-keygen -t rsa
命令按回车键,然后一路回车,生成秘钥对
注意两个坑:
输入ssh-keygen -t rsa回车的时候,提示
ssh-keygen不是内部或外部命令
,直接把问题放到百度上就有答案由于某些同学电脑用户名是中文的,就有可能出现创建目录失败的问题(如下图),解决方案参考
补充2--秘钥创建问题的解决方案
视频
将公钥复制到gitee中
配置小乌龟开启ssh认证协议
操作远程仓库
克隆远程仓库到本地
在本地新建一个zhang
文件夹,然后在文件夹中右键点击Git克隆...
,填写URL(从网页中复制),点击确定
在本地仓库中添加文件
在文件夹中新建一个hello.txt文件,并执行add–commit操作,将其添加到本地仓库
将文件推送到远程仓库
远程仓库中查看文件
命令操作
* 克隆远程仓库到本地
git clone 远程仓库地址
* 拉取远程仓库最新代码合并到本地仓库
git pull 远程仓库名称 本地分支名
* 将本地仓库代码推送到远程仓库
git push 远程仓库名称 远程分支名称
Idea操作Git
基础操作
在idea中配置Git
使用idea打开要管理的项目
在idea中配置git管理
在idea中配置忽略文件
安装文件忽略插件,重启idea
解释:
.idea/ 忽略.idea文件夹
*.iml 忽略所有的.iml文件
out/ 忽略out文件夹
target/ 忽略target文件夹
提交代码到本地仓库
创建远程仓库
推送代码到远程仓库
代码冲突
代码冲突,表示两个人同时改变同一个文件的同一行
。git开发,不修改的内容,不会覆盖。
模拟冲突
1)在本地新建一个文件夹,然后将代码克隆一份下来,然后修改下pom.xml
2)通过小乌龟现将本地other文件夹的代码提交到远程仓库
3)在idea中也对pom.xml文件进行修改操作
4)再通过idea将idea中的代码推送到远程仓库,再推送的过程中,就会出现下面的错误
接下来,我们点击Merge开始合并代码(解决冲突)
解决冲突
1)在idea中手动合并代码,解决掉冲突
2)将改好代码再次向远程仓库推送
分支管理(难点)
切分支一定要先commit在切分支。
分支操作:分支是Git 使用过程中非常重要的概念。使用分支意味着你可以把你的工作从开发主线上分离开来
,以免影响开发主线。相当于,你本地有多少分支就有多少套隔离的代码。
同一个仓库可以有多个分支,各个分支相互独立,互不干扰。例如,你们一起开发
通过git init
命令创建本地仓库时默认会创建一个master分支。分支主要用于版本控制。
创建分支
① 创建新分支,名称为hm
② 在hm新分支上开发代码
合并分支
① 在新分支上开发完代码后,进行提交和推送
② 切换到master分支
③ 将hm分支的代码合并到当前分支(注意:此时的当前分支是master)
先拉取到主分支,然后再合并到主分支,如果在推送到主分支中。
顺序: add-------开发----commit到本地----->pull代码(可能出现代码冲突, 需要merge代码)-------->push代码