GIT学习笔记

资源

  1. Git使用教程:最详细、最傻瓜、最浅显、真正手把手教!
    https://mp.weixin.qq.com/s/rfDb-Vs_0cctMs8NUTnxXg
  2. .结合Coding的使用教程:
    https://help.coding.net/docs/repo/manage/create.html
    https://help.coding.net/docs/repo/git/basic.html
    https://coding.net/help/docs/repo/start.html#git-commit
  3. 45 个 Git 经典操作场景,专治不会合代码
    https://mp.weixin.qq.com/s/DqSs1-pQvO6-K95cCAkpcQ
  4. 常用的Git命令清单
    https://mp.weixin.qq.com/s/ANVNo56c0FEDfvosmzMrqQ
  5. 廖雪峰的GIT教程
    https://www.liaoxuefeng.com/wiki/896043488029600
  6. Git菜鸟教程
    https://www.runoob.com/git/git-tutorial.html
  7. Git可视化极简易教程 — Git GUI使用方法:
    https://www.runoob.com/w3cnote/git-gui-window.html
  8. 在Windows上安装Git
    https://git-scm.com/downloads.
    9.bilibili视频教程:https://www.bilibili.com/video/BV1HM411377j/?p=2&spm_id_from=pageDriver&vd_source=a33854f92a711a8552143ec29bdabd6c

资源1和资源2应该写的都很好,但是还嫌长。
资源3直接写图形操作,这个多简单呀,于是决定从资源3开始看。

概念

Git是一个分布式版本控制系统,用于追踪和管理代码的变化。
所谓分布式,就是不需要中心服务器来管理文件版本。每个用户的系统上都有一个完整的仓库副本,并且可以独立地执行提交、修改、合并等操作。这意味着即使在没有网络连接的情况下,用户也能进行版本控制操作。
如果是分布式的,那么远程仓库就应该跟本地仓库是平等关系,对远程仓库的操作就是方便因为大家联网方便。
从下图可以看到,从Repository这边靠右都是本地电脑,本地电脑为每个工作区都要建立一个本地仓库。
在这里插入图片描述
Workspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓库

对本地仓库的操作

本地仓库主要有三个区域,工作区,暂存区和本地仓库。工作区就是能操作修改的区域,仓库区就是git管理的部分,在把文件从工作区运到仓库区之间,需要有个暂存器用来运输。
在这里插入图片描述

在这里插入图片描述

1.首先,你需要创建一个仓库,命令是“git init”,刚创建的仓库是一个空仓库,就相当你圈了一块地,规定以后东西就往这块地里放。
在你建的这个仓库的文件夹里,会有一个“.git”的文件夹,这个文件夹就是你新建的空仓库,以后仓库里所有的记录都在这个文件夹里。
2.然后你可以往你的仓库里放文件,命令是“git add 文件名”,如果是全部可以写成“git add .”。但是注意了,为了避免出错,不是你想往里放就放的,先登个记,所以这个命令并没有直接把文件放到仓库里。
我能加到“index”中,能不能后悔了,不想加了,可以使用“git rm --cached 文件名”命令。
3.文件都更改好了,需要入库了,这时候得使用“git commit -m "描述一下这次修改的内容””这个命令,对放到仓库里的东西,要做好标签,就是要描述一下。

还有一个概念是分支,一般情况下你是在主分支(master),如果你想创建一个分支,用命令“git branch new_feature”,注意创建新分支的时候不能有暂存区还没有入库的文件。如果想切换的新分支,用命令“git checkout new_feature”

查看状态

看看库里的状态用“git status”命令。该命令可以告诉你有没有没提交的文件。如果文件被更改了,但是没有加入暂存区里,该命令也有提示。
git diff new1.txt” 可以查看new1.txt都改动了哪些地方。
git branch”命令可以显示当前库里都有哪些分支。
git log”用于版本日志查看。
“git reset --hard HEAD^‘版本回退,HEAD表示最新提交节点
“git reset --hard HEAD~100”版本回退前100步
“git reflog” 查看版本号

远程仓库

如果你想动用别人的仓库,有一个问题就是有可能有的人已经动用了,那大家怎么保证不被互相干扰呢。
关联远程仓库:
git remote add origin https://e.coding.net/yingruangongzuoshi/jingbangwendujiankong/HC32L130J8TA.git

把本地库推送到远程库
git push

如果远程库有别人占用,你用不了,就得先把他的库拉取下来
git pull

如果两个库文件相差较大,在使用 git pull 时可能会遇到这个错误:fatal: refusing to merge unrelated histories。
中文意思就是拒绝合并不相关的历史。
方法是先把本地文件放到暂存区里,紧接着使用 --allow-unrelated-history 选项来解决问题(该选项可以合并两个独立启动仓库的历史)。

git pull origin master --allow-unrelated-histories

紧接着将本地仓库的提交推送到远程github仓库上,使用的命令是:
git push <远程主机名> <本地分支名>:<远程分支名>

git push origin master:master 

这样就可以提交成功了。

分支

分支的作用在我看来就是方便团队协作,比如我要编写一个蓝牙串口的程序,另一个编写一个激光测距的程序,我们各自编写各自的文件,公共部分文件均不改动,这样我们都编写完之后就把文件合并就可以了。
当然公共部分改动也是可以的,这就得在合并的时候手动处理冲突,还是要把冲突的文件改成一致了。

文件夹

在当前目录下新建一个库,如果再在远程库克隆,那么远程库整个作为一个文件夹存放在当前文件夹中。

安装

网址:https://www.git-scm.com/
git的文件也是存放在github上,如果上不去换个浏览器试试(我的360浏览器总是不好用)
还有一种办法就是找github的镜像。

GIT命令汇总

通用约定

在Git Bash中输入命令实际上也很方便,命令的开头都用"git",表明是git命令,然后就输入命令就可以了。

基础命令

包括克隆(clone)、初始化(init)、添加文件到暂存区(add)等。

创建仓库(git init)

选择一个文件在,鼠标右键选择“git bash”,打开命令窗口。
在当前目录下输入"git init"命令,就可以把当前目录设置为GIT仓库

git init 

文件夹内会增加一个".git"文件夹用于管理版本
也可以在当前文件夹下新建一个文件夹用于存放仓库

git init 新建文件夹名称

克隆已有仓库到本地(git clone)

从远程库克隆
git clone http://
第一次登录,有弹窗,需要输入邮箱名和密码
[–mirror] : 导入镜像仓库
git clone --mirror http://

把文件增加的暂存区(git add)

git add "filename"		//只添加一个文件
git add *.txt			//增加所有txt后缀名的文件
git add .				//增加当前目录所有文件

提交命令

用于提交暂存区到仓库区,如提交(commit)、修改最后一次提交(amend)。

提交文件(git commit)

修改好了,一次提交上去,并且要写好版本说明。
(注意:如果修改完了没有add,提交的就是前面add的内容)
(注意,这个提交也是在本地仓库中操作,还没有上传到服务器端)。
例:
git commit -m "增加了日志功能“

git config --global user.email “you@example.com”
git config --global user.name “Your Name”

分支命令

用于创建、切换、删除分支等操作,例如创建新分支(branch)、切换分支(checkout)、合并分支(merge)等。

查看信息命令

这类命令用于查看git仓库的各种状态和信息,如查看仓库当前状态(status)、查看仓库历史记录(log)、查看文件差异(diff)等。

查看GIT信息

git config --global --list

查看版本信息 git version

查看GIT版本(也可以写成git --version或者git -v)

查看提交日志 git log

git log 				
git log --onelin  		#日志信息简单显示
git log --oneline --graph --decorate --all  #图形化显示

查看状态(git status)

查看暂存区的内容(git ls-files)

查看文件差异(git diff)

默认是比较工作区和暂存器的文件

git diff	#比较工作区和暂存区的差异
git diff HEAD	#比较工作区和版本库之间的差异
git diff --cached #暂存区和版本库之间的差异
git diff HEAD~ HEAD #当前版本和上一个版本之间的差异,~或^表示上一个版本
git diff HEAD~2 HEAD #当前版本和HEAD之前两个版本之间的差异

远程同步命令

用于与远程仓库进行交互,如推送本地分支的修改到远程仓库(push)、拉取远程仓库的修改到本地仓库(fetch)等。

推送的服务器(git push)

将代码推送到 Coding 上的远程仓库中,使用以下命令:
git push -u origin master
其中 master 是默认的分支名称,如果要推送其他分支,可以将 master 替换为相应的分支名称。-u 参数表示将本地的 master 分支与远程的 master 分支进行关联。

服务器的内容更新到本地(git pull)

直接 git pull

配置命令

用于设置Git的全局或局部的参数,例如用户名、邮箱、编辑器等。

配置用户名和邮箱

git config --global user.name "zhang fei"
git config --global user.email zhangfei@126.com

说明:

  • global:表示对所有的仓库都有效,不加就表示对当前仓库有效
  • 如果加–system,表示对所有用户都有效
  • 用户名有空格需要用双引号,没有空格双引号可以省略

配置密码

git config --global credential.helper store

增加等待时间

git config --global --add fetch.timeout <time-in-seconds>

将 替换为您希望设置的时间(以秒为单位)。例如,要将连接超时时间设置为 60 秒,可以运行:

git config --global --add fetch.timeout 60

其他

别名(alias)

alias graph="git log --oneline --graph --decorate --all"
graph 	#等同命令"git log --oneline --graph --decorate --all"

git remote

添加远程库
add origin https://e.coding.net/daji/kf2022004/MCU.git

回退版本 git reset

git reset --soft 回退某个版本,并且保留工作区和暂存区所有内容
git reset --hard 回退某个版本,丢弃工作区和暂存区的所有内容
git reset --mixed 回退到某个版本,只保存工作区的内容,默认选项
后面接版本的ID号
在这里插入图片描述

git reset --soft 12321234	//回到指定版本
git reset --hard ^HEAD		//回到上一个版本

查看操作的历史记录(git reflog)

查看记录后,可以回撤到任何版本

git checkout

git show

显示提交的内容

如果 git clone 命令因为超时而失败,您可以尝试以下方法来增加时间:

删除文件(git rm)

git rm --cache 文件名	##删除暂存区里的文件
git rm 文件名  ##暂存区和工作区的文件同时删除

匹配规则可在官网上查看:https://git-scm.com/docs/gitignore

忽略文件(git gitignore)

有一些文件不需要上传。把这些文件名称放进gitignore文件中,就不会再上传了。

echo "*.o"->.gitignore  		#创建".gitignore"文件并输入“*.o”内容

从服务器文件拖拽到本地文件

从本地仓库替换服务器中的文件

要通过Git将本地文件替换服务器上的文件,您可以按照以下步骤进行操作:

本地仓库关联到远程仓库(git remote add)

1.确保您已经在本地设置了Git,并且已经将远程仓库添加到您的本地仓库。您可以使用以下命令将远程仓库添加到本地仓库:

git remote add origin <远程仓库URL>

查看远程仓库(git remote -v)

本地master分支和远程master分支关联起来

git push -u origin master:master

获取远程仓库(git pull)

获取远程仓库(git fetch)

git fetch与git pull的区别是,git fetch只获取,不合并,而git pull 需要合并,如果远程仓库与本地仓库不一致,需要手动合并。

2.在本地对文件进行修改或替换。确保您已经编辑了正确的文件,并且文件保存在您本地的Git仓库中。

3.将修改后的文件提交到本地Git仓库。使用以下命令将修改添加到暂存区:

git add <文件路径>

如果您要替换多个文件,可以使用通配符或指定多个文件路径。

  1. 提交您的修改。使用以下命令提交修改,并添加一条有意义的提交消息:
git commit -m "替换文件的提交消息"

5.将本地仓库的修改推送到远程仓库。使用以下命令将修改推送到远程仓库:

git push origin <分支名称>

其中,<分支名称>是您要推送修改的分支名称,通常是master或main。

  1. 连接到服务器,并导航到服务器上的Git仓库所在的目录。

在服务器上执行Git拉取操作,以获取远程仓库的最新修改:

git pull origin <分支名称>
这将拉取远程仓库的最新修改,并将其合并到您的本地分支。
8. 如果存在冲突,需要解决冲突。Git会在冲突的文件中标记冲突部分,您需要手动编辑这些文件,并解决冲突。然后,使用以下命令标记冲突已解决:

csharp
git add <冲突文件路径>
一旦冲突解决,使用以下命令将修改提交到服务器:

sql
git commit -m “解决冲突后的提交消息”
最后,将修改推送到远程仓库:

perl
git push origin <分支名称>
这样,您的本地文件就成功替换了服务器上的文件。请确保在执行这些操作之前,对您要替换的文件进行备份,以防万一出现意外情况。

分支相关操作

创建删除分支(git branch)

git branch 		#查看分支
git branch 分支名  #创建分支
git branch -d 分支名  # 删除已经合并的分支(没合并的不能删除
git branch -D 分支名 #强制删除分支

切换分支(推荐)(git switch)

git switch 分支名  #切换分支

切换分支(git checkout)

git checkout 分支名  #切换分支

合并分支(git merge)

把分支的内容合并到当前分支上,原分支保持不变

git merge 分支1  #把分支1合并到当前分支
git merge --abort  #终止合并

变基 (git rebase)

把分支的内容合并到一个分支,合并的分支在当前分支的后面
在这里插入图片描述

在这里插入图片描述

常用GIT GUI工具

SourceTree 免费工具

TortoiseGit

分支管理规范

gitflow模型

在这里插入图片描述

GITHUB LOW模型

在这里插入图片描述

分支命名规范

在这里插入图片描述

名词解释

SSH: Secure shell的缩写,安全外壳协议。SSH Key用于加密传输中的数据。形象的说就是客户端、服务器端都先准备一份相同的密码本,发送方和接收方就可以加密和解密传输中的数据。
RSA: 公开密钥密码体质。由三个创建者名字的字母组成。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值