Git学习入门
Git 入门
Git基础了解
Git是区别于集中式版本控制的分布式版本控制工具
使用工具: Idea
三个常用平台:GitHub、Gitee 码云、GitLab
GitHub基于外网的 规模最大的git平台(由git创始人开发)
Gitee基于国内互联网的 代码开源平台
GitLab基于局域网的平台 非开源内部使用
常用命令:
- 创建远程库
- 代码推送 Push
- 代码拉取 Pull
- 代码克隆 Clone
需要掌握:
- SSH免密登录
- Idea 集成 Github 和 Gitee码云
Git的工作机制
工作区 – git add --> 暂存区 – git commit --> 本地库 – git push --> 远程库
工作区和暂存区的代码是受本地掌控的,一旦上传到了本地库就无法再轻易删除了
Git的命令
| 命令名 | 作用 |
|---|---|
| git config --global user.name 用户名 | 设置用户签名 |
| git config --global user.email 邮箱 | 设置用户签名 |
| git init | 初始化本地库 |
| git status | 查看本地库状态 |
| git add 文件名 | 添加到缓存区 |
| git commit -m “日志信息” 文件名 | 提交到本地库 |
| git reflog | 查看历史记录 |
| git reset --hard 版本号 | 版本穿梭 |
设置用户签名
首次使用Git需要设置用户签名(用户名和用户邮箱)否则无法提交代码,Git使用签名来区分操作者的身份。windows系统可以在本地的用户目录下的".gitconfig"这个文件中查看已设置好的用户签名。
在这里使用的用户签名和github之类的代码托管中心的账号无任何关联
初始化本地库
首先用bash进入需要使用版本控制的目录(cd命令)
在windows下使用也可以先进入项目目录然后右键"git bash here"直接进入操作
git init 会在目录下创建一个隐藏文件夹".git"里面的文件存放的就是当前的版本控制信息
查看本地库状态
创建后第一次查看本地库状态
1 | git status |
在目录里进行增删改查后查看本地库状态
1 | git status |
添加暂存区
将"hello.tex"文件添加到git里面
1 | git add hello.txt |
再次查看本地库状态可以发现原来标红的文件名编程了绿色
1 | git status |
提交本地库
提交本地库以形成真正的历史版本,提交过本地库后暂存区是会被清空的
1 | git commit -m "second commit" hello.txt |
提交本地库之后本地库的状态
1 | git status |
查看历史记录
使用"git reflog"命令来查看全部日志信息
1 | git reflog |
也可以用"git log"命令来查看详细的日志信息
1 | git log |
版本穿梭
"git reset --hard 版本号"只需要使用精简的版本号就行也即reflog查看到的版本号,版本号穿梭成功后会生成一次新的日志记录并且当前操作的位点移动到选中的版本上
1 | git reflog |
可以通过隐藏文件".git"中的"HEAD"文件查看当前所在的分支,然后在"refs"文件夹中找到相应的文件打开,内容就是当前所在的版本完整信息
git bush中的复制粘贴快捷键为 “左键双击复制” “中间滚轮键” 粘贴
Git分支
分支意味着版本控制的过程中同时推进多项任务并且保持开发中的独立分支互不影响
可以分离用户使用区及各个开发方向
使用分支的好处: 同时推进多个功能的开发 提高开发效率;在各个分支开发的过程中某个分支开发失败不会对其他分支产生影响。
分支的基本操作
| 命令名称 | 作用 |
|---|---|
| git branch 分支名 | 创建分支 |
| git branch -v | 查看分支 |
| git checkout 分支名 | 切换分支 |
| git merge 分支名 | 将指定分支合并到当前分支上 |
分支的查看&创建&切换
切换分支时命令头不标蓝的内容会调整为当前选中的分支
1 | git branch -v |
分支合并冲突
原因: 两个分支同时对一个文件进行不同的修改,Git合并时无法决定保留则要人为决定合并后的文件内容
1 | //对两个分支进行冲突修改 |
Git 团队工作中心
团队内工作模式
- push 推入更新
- clone 全局复制
- pull 局部更新
跨团队工作模式
- fork 远程库间的复制
- Pull request 远程库间的更新(需要使用merge进行合并)
使用github创建远程库
- 创建远程库
- “+” – “New repository”
- 填写"repository name"
- 选择访问权限
- 创建远程库别名
- git remote -v 查看当前远程地址别名
- git remote add <别名> <远程地址> 为远程库起本地别名
推送本地分支到远程仓库
- git push <远程库链接 | 别名> <本地库分支名>
* 远程库的添加单位为分支 - git pull <远程库链接 | 别名> <远程端分支名>
* 会自动提交本地库 - git clone <远程库链接>
* 一个windows系统只能通过"凭据管理器"管理一个github账号
* 克隆公开库不需要登录
* 克隆的过程会把".git"文件也拷贝下来,也就意味着原分支中起的远程库别名也会在本机中生效(可以通过 “git branch -v” 查看),但是注意原别名会被默认更改为origin
* 总结:"git clone"操作会进行 1. 拉取代码 2. 初始化本地仓库 3.创建别名
团队成员管理
- 登录远程库创建者的github账号并进入目标分支
- 在分支中选择 “Setting” 进行设置
- 第二栏 “Manage access”
- 输入待邀请的成员用户名将会得到一个邀请函(一段链接)
- 将链接复制后使用其他工具传送给对方
- 对方使用这段链接并登录到自己的github账号就可以接受邀请了
团队外协助
- fork将他人远程库的代码保存到自己的远程库中
- 修改后使用 “Pull request” 拉取请求,给对方提供自己的更新
- 可以在提交的同时加入提交信息
- 对方同样也可以进行回复(聊天室功能)
SSH免密登录 (使用windows系统)
- 在系统盘下的用户目录内找到以自己的用户名命名的文件夹
- 右键打开 “Git Bash”
- 键入命令 “ssh-keygen -t rsa -C <账号邮箱>” 遇到断点直接回车直到命令执行结束即可生成针对该账号的ssh文件
- 找到 “.ssh” 文件夹 (隐藏文件夹 如果找不到则需要更改查看的范围)
- 在 “id_rsa.pub” 文件中就保存有需要的ssh公钥 记事本打开或者在bash中用"cat"命令打开并完整复制
- 在github网站打开自己的账号设置界面(在右上角头像的列表下方"setting"中)
- 在右侧列表中找到 “SSH and GPG keys” 项
- 点击绿色按钮 “New SSH key” 在 “key” 栏中粘贴刚拷贝下来的SHH公钥即可,可以通过 “name” 栏为当前公钥命名 建议直接命名为自己的主机名
- 接下来在github的分支下复制代码链接时选择SSH选项(而不是HTTPS)复制链接即可实现在本机上免密进行push pull
IDEA集成Git环境
定位Git程序
- 在IDEA中按如下路径打开: " file -> setting -> version control -> Git "
- 在第一行的地址栏选择Git的安装目录下的 “bin” 文件夹下的 “git.exe” 文件
- 点击 “Test” 按钮测试如出现Git的版本号及定位成功
IDEA下的初始化&添加&提交
- 在idea的标题栏中找到 “VCS” (即Version Control Setting)
- 在其下找到 "Create Git Repository"点击
- 得到的一个文件访问窗口 其默认定位到当前项目的目录
- 点击OK即可为当前项目创建Git版本控制文件
- 这时我们会发现初始在当前项目目录下的文件名变成了红色(表示git未被添加到暂存区)
- 然后就可以直接右键选择Git下的Add添加到暂存区,此时当前文件名变为绿色代表着已添加暂存但未提交本地库
- 使用Git下的Commit就可以直接提交到本地库了,此时提交的文件名变为初始的黑色代表当前文件不需要进行git操作了
- 在已提交本地库的文件中进行增删改文件名会编程蓝色,代表文件有修改但未提交本地库
IDEA下进行版本穿梭(切换)
查看版本信息:找到IDEA的左下角的Git栏点开即可看到当前的版本信息,点击最右边的菜单栏中的文件可以看到相应的文件在当前提交版本的更新变化,在部分版本的尾部会有黄色或绿色的小标签分别代表这当前git指向版本 和 分支
切换版本:在你所需要的版本上右键选择"Checkout Revsion <版本号> “(中文插件译做"签出修订<版本号>”)会发现当前的黄色标签(git头指针指向的版本)
IDEA下进行分支管理
创建分支:在当前项目栏中右键后鼠标悬停在git上选择Branch-New Branch (分支-创建分支),在弹窗中输入需要创建的新分支,注意在左下角的待选项 “Checkout branck” (汉化翻译为签出分支) 意味着在创建分支后直接将git操作指针指向新分支
切换分支:在git菜单的最右下方有一个 “分支图标” 和 当前分支名 点击分支名即可弹出分支切换菜单点击相应的分支名并在弹出的菜单栏的最上方点击 “Checkout” (汉化翻译为签出) 即可实现分支切换
分支合并:点击右下角的git分支管理菜单上点击需要合并的分支名,在弹出的菜单栏中选择 “Merge into current” (汉化翻译为 将已选择合并到当前中),
- (正常合并)代码会发生改变并且黄色的git操作指针和当前分支指针会指向目标分支指针指向的版本上
- (冲突合并)弹出 “conflict” 冲突弹窗,点击merge进行手动合并分支,这时会出现手动合并的窗口并有三个并列的代码框 其中最左边的是当前分支修改的代码 最右边的是目标合并分支代码 (当然在代码框的上方也会有相应的分支提示) ,中间的是合并未产生冲突的代码,点击 “>>” (保存)或 “x” (删除)即可进行合并,解决所有冲突后会弹出冲突解决的信息,点击apple (应用) 即可自动提交合并的分支 (会自动分配提交信息 “Merge branch <合并分支名>”)
IDEA集成Github开发环境
使用IDEA快速登录到Github
- 进入setting(设置)菜单
- 点击version control(版本控制)中的Github栏(如果没有需在Plugins中下载github插件)
- 在Github栏中点击 “+” 中选择 “Use Token” (通过令牌登录)
- 在浏览器中登录Github,在进入设置界面进入 “Developer settings” (开发者设置) 选择 “Personal access tokens”(个人登录口令) 然后选择 “Generate new token” (可能需要重新输入密码以验证身份) 写入一串描述字符串(可以选择口令生效时长默认30天),然后在下方将所有可选项都勾上代表着使用此口令登录权限与密码账号登录等效,提交后就可以看到浅绿色高亮的口令了,这里要注意生成口令后要及时复制口令只会在当前页面 显示一次 刷新后就会自动消失必须小心保存
- 将获得的口令粘贴到在IDEA打开的口令登录界面中就可以实现快速登录
在IDEA上使用Github共享项目
- 在IDEA的头部Git栏中选择Github项
- 然后在Github项中选择 “Share Project On Github” (汉化翻译为 在Github上共享项目)等待IDEA登录即可看到小窗
- 在 “Repository name” (仓库名称) 中键入名称 (同先前习惯命名为文件项目名 一般会自动填写) IDEA默认将项目公开如有需要可以勾选库名右边的 “Private”(私有) 可选项 然后在 “Remote” (远程) 这一栏中健入库别名(与项目名保持一致),描述信息可不填
- 确认无误后点击share即可确认提交
- 如果操作无误就会在底部看到上传的进度条
- 如果上传失败则重复操作即可,如果是已经创建远程库成功但是推送失败那推送项目即可
- 共享成功后再查看版本信息会发现在当前提交的版本上会出现一个紫色的标签,代表着远程库的版本
在IDEA上使用Github推送更新
推送更新很简单,可以在项目栏中右键也可以在刚刚的Git栏中上方Push
这里的Push操作默认使用的是https形式的链接,可以通过更改远程库链接来使用ssh免密登录:
- 在push界面左栏点击之前共享项目时使用的别名
- 选择 “Define Remote”(定义远程) 来自定义远程库别名
- 添加新的远程库别名然后在github网页中复制当前远程库的ssh链接
- 点击确认等待IDEA确认链接有效后,可以看到在左栏远程库别名任然没发生改变,这时需要再次点击远程库别名选择新创建的远程库别名即可实现免密登录(推送实现几率更高)
在IDEA上使用Github拉取新版本
同样找到git所在的选项然后在 “Update Project”(更新项目)下方选择"pull"(拉取)即可
推送远程库更新的注意要项
在团队内协作开发提交到本地库的版本一定要比本地库的版本"更"新才会被远程库接受,所以在提交本地库版本前先要拉取远程库的最新版本将自己本地库的版本跟进到团队内的最新进度,才能进行远程库的更新推送。也就是当你要修改自己的代码前先pull一下远程库
在IDEA上使用Github克隆项目
在IDEA的初始界面上可以看到有一个"Get from VSC"(从VSC获得)点击即可跳入带有各种远程仓库的界面,在上方有确认选择的是使用Git进行版本控制(默认),然后就可以输入需要克隆的项目的链接,选择需要下载路径,点击 “Clone”(克隆)即可。
国内远程库Gitee码云
IDEA下使用Gitee
安装Gitee插件,在 “version control”(版本控制) Github附近会多出一个Gitee栏直接用账号登录即可其余操作类比在IDEA下使用github即可
在登录下载Github文件时如果由于网络原因难以下载可以通过在Gitee上新建仓库但选择导入仓库在Github上复制https的链接即可将仓库复制到Gitee上,然后使用Gitee可以高速下载,在原导入的项目发生更新时可以使用项目名后的环状图标可以实现同步功能
自建代码托管平台GitLab
需要使用到云服务器,pass




