今天想把自己的课设上传到GitHub,因为长久不用,Git的命令忘得差不多了,所以今天把Git重新学一遍。
文章目录
- Git的介绍
- Git的安装
- Git的常用命令
- 工作机制
- 常用命令
- 用户签名
- 初始化本地库
- 查看本地库状态
- 添加暂存区
- 提交本地库
- 查看引用日志信息
- 修改文件
- 版本切换
- 其他命令
- 分支操作
- 创建分支
- 切换分支
- 分支合并
- 冲突合并
- 团队协作
- 团队内协作机制
- 跨团队协作
- GitHub的使用
- 创建远程库
- 连接远程库
- 推送到远程库
- 从远程库拉取到本地库
- 从远程库克隆到本地库
- 团队内操作
- 跨团队协作
- SSH免密登陆
- 创建公钥
- IDEA集成Git
- 忽略文件
- IDEA中集成本地Git
- IDEA中使用Git
- 版本切换
- IDEA分支管理
- 分支合并
- 分支冲突
- IDEA集成GitHub
- 设置GitHub账号
- IDEA推送到远程库
- 从GitHub拉取远程库
- 从远程库克隆到IDEA中
- Gitee的使用
- 从GitHub迁移项目到Gitee
- GitLab
- 安装GitLab
- 服务器准备
- IDEA中使用GitLab
Git的介绍
Git一个分布式版本控制工具,能够管理不同版本的项目。
我们在开发中的项目,需要不断地迭代,每次迭代都可以称作一个版本,每个版本的内容也是不一样的,这么多版本的项目,你管理起来会非常麻烦,而且版本回退,协作开发更麻烦,于是版本控制工具就出现了。
版本控制就是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换。
在团队开发中,版本控制就尤为重要
Git的安装
Git官网下载安装包,无脑下一步即可
Git的常用命令
工作机制
常用命令
git config --global user.name 用户名 | 设置用户签名 |
---|---|
git config --global user.email 邮箱 | 设置用户签名 |
git |
用户签名
利用命令
git config --global user.name
git config --global user.email
设置用户名和邮箱
签名的作用是区分不同操作者的身份,用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁提交的,Git首次安装必须设置一下 用户签名,否则无法提交代码。
注意:这里设置的用户名和邮箱的真实性不用考虑,只是起标识作用
初始化本地库
git init
选择一个目录,在此目录右键"git bash",然后输入命令即可
查看本地库状态
git status
Git和Linux的命令是通用的,可以写
添加暂存区
将工作区的文件添加到暂存区
git add 文件名
此时再次利用git status命令查看本地库状态
如果想要清空暂存区的内容,可以使用命令
git rm --cache 文件名
提交本地库
文件添加到暂存区之后,并未形成历史版本,需要提交到本地库后才能形成历史版本
git commit -m "日志信息" 文件名
提交的是暂存区的文件,如果文件没有添加到暂存区是不能够提交的的哦
此时再查看本地库状态
查看引用日志信息
git reflog
还可以通过
git log
命令查看更加详细的日志,不仅可以查看提交的版本,还可以查看提交的签名,还能看到完整版的版本号
修改文件
模拟企业中的版本修改
修改文件后,再次查看本地库状态
再次使用git add 和 git commit 提交即可
在Git中是按照行来维护文件的
此时再查看本地库状态,会看到有两个版本git reflog
此时查看就会是第二个版本的内容
在文件管理\本地库 中永远只会显示一个文件
底层是用指针控制的
版本切换
查看本地库中的文件的版本,有两个命令,前面刚才演示过了
git reflog 查看精简版的信息
git log 查看详细的版本信息【时间、提交者、邮箱】
那么如何切换某个文件的多个版本
只需要使用上述两个命令查看具体的版本号,利用下面命令
git reset --hard 版本号
此时查看版本号,看到指针指向第二个版本号
查看文件内容
此外,还可以打开本地库中的.git
文件夹中的HEAD
文件,会看到
表示当前已经处于master分支上,如何查看该分支上的某个具体的版本呢?
需要打开.git
文件夹中的refs
文件夹,继续打开heads
文件夹,打开master
文件夹,会看到里面具体的文件版本号
其他命令
在Git的安装目录下的\mingw64\share\doc\git-doc
目录下,有Git所有命令的说明手册,一个命令做成了一个网页,可以根据命令来查看文档。
也可以在git bash 中,利用--help
的命令来查看帮助文档,比如说git add
这个命令我不懂,那么就可以在命令框中这样写
git add --help
就可以查看命令的详细文档
分支操作
在版本控制的过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务单独的分支。
使用分支意味着,程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。(分支的底层也是指针的运用)
分支的好处
同时并行推进多个功能开发,提高开发效率
各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响,失败的分支删除重新开始即可
命令 | 作用 |
---|---|
git branch 分支名 | 创建分支 |
git branch -v | 查看分支 |
git checkout 分支名 | 切换分支 |
git merge 分支名 | 把指定的分支合并到当前分支上 |
创建分支
git branch 分支名
切换分支
此时查看文件就是此分支修改后的文件,
打开.git
的HEAD文件,指向切换后的分支
同时在.git
文件夹下的refs
文件夹中的heads
文件夹中就会有新的分支的文件,打开后就是当前分支所处的版本号
分支合并
git merge 分支名
把当前的其他分支合并到当前分支上
冲突合并
何时会产生冲突?
两个分支在同一个文件的同一个位置有两套完全不同的修改,Git无法决定使用哪一个,此时需要手动解决。
此时就需要手动解决,打开发生冲突的文件
将想要保存的内容留下,其余的删除即可
修改完成之后,仍需要来一波git add 和 git commit
git add 文件名
git commit
**注意:**此时的git commit 不能带文件名,
团队协作
团队内协作机制
clone 是本地一点没有远程库的东西,需要复制一份到本地库,此时用clone
如果本地库中有远程库的东西了,需要从远程库更新内容,此时就用pull,pull只会拉取变动的内容
跨团队协作
GitHub的使用
创建远程库
连接远程库
在你的仓库中,会有HTTPS 和SSH两种连接方式
创建别名
远程库的链接是不易于记忆与操作的 , 需要为远程库的连接创建别名,以方便后续使用。
git remote add 别名 链接
当创建了别名后,查看别名,会看到两个别名,因为拉取和推送都可以使用,所以就会显示两种相同别名的远程库别名。
查看本地的远程库别名
git remote -v
推送到远程库
git push 远程主机名 本地分支名: 远程分支名
如果本地分支名与远程分支名相同,则可以省略为
git push 远程主机名 本地分支名
git push 别名 分支名
别名的位置直接用远程库的链接也是可以的
首次推送,会有这样一个提示框
需要我们选择登录,第一个是利用浏览器登录的账户,第二个是口令登录,一般选择第一个在浏览器打开即可。
点击授权即可
此时在GitHub就可以看到推送成功的文件
注意:如果选择推送的分支在远程库不存在,那么就会在远程库直接创建这个分支。
自从2020年10月之后,GitHub的主分支不再叫master,而是改名为main
从远程库拉取到本地库
git pull 命令用于从远程获取代码并合并本地的版本。
git pull 其实就是 git fetch 和 git merge FETCH_HEAD 的简写。
与git push 的命令相同
git pull 远程主机名 远程分支名:本地分支名
如果远程分支名与本地分支名相同,则可以省略为
git pull 远程主机名 本地分支名
在利用pull 命令拉取远程库时,会自动将远程库中与本地文件中不同的部分做merge,然后自动add、commit
从远程库克隆到本地库
如果你的本地库中没有任何远程库中的东西,这时候你就需要从远程库克隆一份到本地库中了。
git clone url
git clone 拷贝一个 Git 仓库到本地,让自己能够查看该项目,或者进行修改。
克隆会干这三件事
- 拉取代码
- 初始化本地库
- 创建远程库连接的别名
团队内操作
为远程库添加协作成员,如果不设置,其他人是不能够提交代码的
在远程库的setting中
然后输入要邀请的人的GitHub账户名,选择邀请即可
邀请发送之后,需要将邀请函复制下来,利用沟通工具将邀请链接发送给他人,他人点击就代表同意加入此库协作。
跨团队协作
当团队外的人需要对项目进行改动时,因为无法进入团队内,此时就是跨团队协作了
此时打开别人库的链接,点击fork
此时就会在自己的账号中有一个这样的远程库,自己改动即可
当自己修改完成之后,需要将项目的内容发送回原始负责人,原始负责人只要拉取本库到自己的库即可。
首先修改完后,在库中点击pull request生成拉取请求,这样原始负责人才可以在这个库中拉取到个人库
这样,当负责人打开本地库后,就会有拉取请求。
SSH免密登陆
前面连接远程库都是使用的HTTPS连接,但是还有一个SSH的连接
如果是初始使用SSH,会提醒没有公钥,无法使用
创建公钥
首先检查本地主机是否有公钥
需要打开C盘user目录下对应的用户,找找有没有.ssh
这个文件夹,如果有,代表你的本地是有公钥的,如果没有这个文件夹,接下来咱们就创建。
在此目录下右键git bash,输入一下命令
ssh-keygen -t rsa -C "your_email@example.com"
ssh-keygen -t rsa -C "1793645613@qq.com"
代码参数含义:
-t 指定密钥类型,默认是 rsa ,可以省略。 -C 设置注释文字,比如邮箱。
接下来直接回车就行
出现此标志,代表本地公钥生成成功
在此目录下就会看到.ssh
文件夹
打开此文件夹,会看到这两个文件
打开.pub
文件,将里面的密文复制一份
然后打开GitHub,打开个人主页中的setting按钮
这样,在Git中连接此账号的库时,就不会有登录的提醒了。
复制了这个SSH连接后,再在Git中使用此链接来pull、push就不会需要登录了。
IDEA集成Git
在日常工作中,很少用git bash , 都会在编译器中集成Git工具,直接在编译器中使用集成的Git非常方便。
忽略文件
在正常开发中,项目中用到的一些无关文件,是不需要交给git管理的,比如说IDEA的配置信息等。
配置一个xxx.ignore
文件,文件名随便,但是后缀必须是.ignore
理论上这个文件放在什么地方都可以,但是一般都放在本地用户的目录下。
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
hs_err_pid*
.classpath
.project
.settings
target
.idea
*.iml
想要忽略什么文件,直接将文件的后缀写到这里面即可
有了忽略文件之后,还需要将这个文件配置到.gitconfig
文件中
同样是在用户的目录下,会发现一个.gitconfig
的配置文件,在此文件中加入此配置信息,注意路径是.ignore
的路径
[core]
excludesfile = C:/Users/刘明凯的专属computer/git.ignore
注意:将windows目录的反斜杠改成斜杠
IDEA中集成本地Git
IDEA中使用Git
此时在文件管理中打开项目,就会看到项目的根目录下有一个.git
的文件夹,代表这个项目已经被git识别接管了。
此时,就会看到项目中的部分文件变红,因为还没有添加到git的暂存区,所以爆红.
此时可以在文件上右键,选择git add
也可以在整个项目上右键,git add
同理,右键commit,填写commit信息
版本切换
在IDEA中如何查看有哪一些版本?
在右下角的Git中
那如何切换版本呢?只需要在刚才的日志上某个版本,右键checkout
IDEA分支管理
首先是创建分支
在项目上右键,就能看到分支管理
或者也可以在IDEA的右下角,点击分支名也是可以的
创建完成分支之后,直接在点击就可以切换分支
分支合并
切换到主分支后,选中要合并的分支,点击合并即可
分支冲突
在合并分支时,难免会有代码冲突,在IDEA中如何解决代码冲突的问题
当在合并时,发生了冲突,IDEA就会显示这样的页面
这时候日志就会显示分支合并
IDEA集成GitHub
设置GitHub账号
如果需要手动输入Github账号就手动输入,但是我这是直接调用网页端的GitHub进行授权。
添加成功后,就能看到GitHub账号的信息
或者使用口令登录,需要去GitHub账号生成一个口令
在个人账户的setting中有一个开发人员选项
**注意:**Token生成之后只会显示一次,需要赶紧复制这个token,刷新网页后,在GitHub上就没有了这个Token的任何痕迹,一定要妥善保管这个Token
然后回到IDEA,将复制的Token粘贴到口令登录框即可
IDEA推送到远程库
因为IDEA已经默认安装了GitHub的插件,所以可以直接在IDEA中操作GItHub
就会在GitHub上看到新建了一个库
将项目推送到GitHub
可以在项目上右键推送
也可以在上方导航栏,选择push
IDEA默认使用的是HTTPS连接,但是此链接会受到网络波动影响,可以使用SSH连接
在推送的页面,选择自定义链接
将复制的远程库的SSH连接复制进去即可
从GitHub拉取远程库
在Push时,需要保证远程库的版本与本地项目一致,所以需要先手动pull一下,然后再push
从远程库克隆到IDEA中
Gitee的使用
国内版的GitHub,由于GitHub的服务器在国外,由于网络原因会连接不上,就有人开发了国内版的代码托管中心——Gitte
使用起来基本与GitHub相同。
IDEA默认没有安装Gitee,需要自己手动安装一下Gitee的插件
安装完成之后,就可以在IDEA中看到Gitee的选项
同样,像GitHub一样,添加自己的Gitee账号
其余操作与GitHub相同
注意:目前是2022-12-29 码云创建公开仓库需要申请,所以不建议使用码云
从GitHub迁移项目到Gitee
选择GitHub上的仓库的地址,注意要使用HTTPS连接
同时,Gitee还支持强制同步,因为库是从GitHub迁移过来的,如果Github上的库更新了,那么可以点击强制同步
GitLab
利用GitLab自搭建代码托管平台,在大公司中比较常用。
比如说,你的公司并不打算使用GitHub来托管代码(因为private的库是收费的,但是你的公司不打算开源),这时公司就可以使用GitLab来自己搭建属于本公司的代码托管平台。
安装GitLab
GitLab官网https://about.gitlab.com
会看到目前支持的服务器版本
服务器准备
一般都是公司准备好的,服务器端不是我们管的。
使用GitLab时跟GitHub相同就行。
IDEA中使用GitLab
首先在IDEA中安装GitLab的插件
安装完成之后,就可以看到GitLab的选项
向这里面添加服务器地址即可
使用时与GitHub、Gitee用法相同。