Git及Github使用笔记
Git概述
Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。
Git易于学习,占地面积小,性能极快。它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。
Git的工作机制
Git和代码托管中心
代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库
-
局域网
GitLab
-
互联网
GitHub(外网)
Gitee码云(国内网站)
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配置文件(里面有用户配置信息)
~表示当前用户的主目录
cat ~/.gitconfig
显示结果:
初始化本地库
在需要上传的文件目录下右键“Git Bash Here”,输入以下指令
git init
显示结果:
查看本地状态
git status
显示结果:
git里面的命令和linux的命令是通用的,linux所有的命令都能在git中使用
可以通过linux命令中的ll来查看里面的文件
添加暂存区
单个文件添加暂存区:
git add 文件名
单个文件添加以及状态查看显示如下
文件夹里面全部文件添加暂存区:
git add .
提交本地库
单个文件提交至本地库:
git commit -m '日志信息' 文件名
显示结果:
文件夹下所有文件提交至本地库:
git commit -a -m 'add all'
查看提交的信息
有俩种方法显示提交的信息
- 显示本地版本库中的引用日志:
git reflog
- 显示仓库中所有commit记录
git log
显示结果:
单个提交文件时候截的图
所有文件提交时候截的图
提交的历史都会在这俩个命令中展示出来,根据是否需要详细查看文件来选择命令的使用
修改文件
当我在外部修改了已经传至本地库的canTest文件时,重新再查看状态,会发现Git红色提示我此文件被修改了
这时候我们需要再次执行把修改了的文件添加至暂存区和本地库的命令
重新查看状态无红色提示了,且记录了此次修改
版本穿梭
当你修改的文件不太满意想要恢复修改前的版本时,可以使用以下指令
git reset --hard 版本号
显示如下:
只需要有对应的版本号,就能穿梭各个历史记录。Git切换版本,底层其实是移动的HEAD指针
Git分支
分支就是在一个Git仓库中的一个代码分支,它是一个指向一个Git提交的指针,该提交是分支的起点。分支允许开发者在不影响主线开发的同时进行并行开发,并能够很容易地将不同的代码合并到一起,分支是Git中非常重要的概念,它可以帮助开发人员更加高效地进行并行开发,同时不会影响主要的代码库
命令名称 | 作用 |
---|---|
git branch 分支名 | 创建分支 |
git branch -v | 查看分支 |
git checkout 分支名 | 切换分支 |
git merge 分支名 | 把指定的分支合并到当前分支上 |
查看分支
git branch -v
显示如下:
创建分支
创建新的分支,主分支master的内容也会复制一份过去。
git branch 分支名
显示如下:
切换分支
git checkout 分支名
显示如下:
查看分区也是显示切换到了hot-fix分支上上
切换到分支上,对代码内容进行修改
分支上代码内容的修改只要不合并,就不会影响到主分支上的代码内容。可以通过在分支上修改代码内容后,然后切换的主分支上再次去文件夹里面看,会发现,主分支代码的内容和原先一样未受分支修改影响
合并分支
正常合并
分支上的内容替换掉主分支上的内容
主分支下执行指令:
git merge 分支名
显示如下:
冲突合并
在合并分支时,如果两个分支上的相同文件上有修改冲突,那么Git会标记这些冲突,并需要手动解决它们。此外,如果分支上的新代码与主分支上的代码有冲突,也需要手动解决它们。
例:
切换到master分支下,对文本进行修改(修改之后上传暂存区和本地库代码不再赘余)
hot-fix分支在同个文件不同低分也进行了修改(修改之后上传暂存区和本地库代码不再赘余)
切换到主分支上进行分支合并,发现合并起冲突了,且分支后面出现MERGING,Git无法决定哪个更改应该被保留。这时候就需要我们人为主动的去合并
手动合并:
打开更改的文件,发现Git已经自动帮我们标记好了冲突的内容
我们只需要删掉多余的,我们需要保存的内容手动合并
上传至暂存区,上传至本地库。注:上传至本地库时不要带文件名
当分支后面的MERGING没有时,冲突解决
合并的时候修改的是master的内容,分支上的内容是不会进行修改的
GitHub操作
创建远程仓库,并在Git上对远程库起别名
命名名称 | 作用 |
---|---|
git remote -v | 查看当前所有远程地址别名 |
git remote add 别名 远程地址 | 起别名 |
git push 别名 分支 | 推送本地分支上的内容到远程仓库 |
git clone 远程地址 | 将远程仓库的内容克隆到本地 |
git pull 远程库地址别名 远程分支名 | 将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并 |
远程地址:
创建别名:
git remote add 别名 远程地址
显示如下:
推送本地仓库到远程库
当我们没有创建远程地址别名时,就需要用原先htmls的网址
git push 别名 分支
显示如下:
拉取远程库到本地库
当我们或别人在远程库对代码进行更改,我们想要保证远程和本地代码一致,就需要拉取最新的代码到本地仓库中,以便在其基础上进行修改和开发
git pull 远程库地址别名 远程分支名
显示如下:
克隆远程库到本地
git clone 远程地址
clone会做以下操作:
- 拉去远程库的代码
- 初始化本地仓库
- 自动创建别名
团队内协作
当团队内的成员想要对拉取的代码进行更改,更改后想要推送至代码所在的远程库时,需要创建该库的人把他拉到自己的团队中,这样才有权限更改后进行推送到远程库
创库者:
搜索团队成员:
创库者发送邀请,复制邀请的地址给团队内的成员,需要团队内的成员进行接受邀请
这样一来,需要团队成员就有权限对代码更改后进行推送至远程库了
团队内的成员更新后的代码其他人需要进行重新拉取保证远程和本地代码一致
跨团队协作
流程:
-
团队外的人对项目进行fork
-
使用
git clone 远程地址
克隆到本地库修改或者本地修改 -
如果是克隆修改,需要重新push到自己远程库上
-
向主分支发送pull request请求,要求将更改合并到主分支中
-
主分支审核,审核完成后合并到自己团队的远程库中
-
主分支pull到自己到本地库中,证远程和本地代码一致
SSH免密登录
第一次查看SSH会发现有黄色小框,大概讲的就是现在还没有SSH keys,下面的链接不能进行使用
添加SSH免密公钥
在c盘中找到.ssh文件,先将其删除
删掉之后在该文件下运行git
输入以下指令:
ssh-keygen -t rsa -C 描述
显示如下:
ssh-keygen
:这是SSH密钥生成器程序的名称。-t rsa
:这个选项告诉ssh-keygen生成一个RSA类型的密钥-C "xxx"
:这个选项告诉ssh-keygen在密钥中添加注释。注释是可选的,但是添加注释可以让您更好地识别密钥,并帮助您管理多个密钥。在此处我的公钥填写的是我github对应的邮箱号。- 后面显示内容按3次回车即可
自动生成.ssh文件,里面存放公钥和私钥
在git中通过linux命令查看公钥,并复制公钥
在自己的github中添加公钥
添加成功:
在后期操作时,可以将需要用到的html链接都换成SSH,第一次使用时会弹出这样提示,直接输入yes即可
码云(Gitee)导入Github项目
将GitHub的项目的HTTPS粘贴即可
在github中对项目进行修改,可以再gitee中刷新即可同步
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?