【git】git基本概念 / 常用命令 / 代码回退 / git常用提交规范


在项目开发中,不可避免的要用到git来做版本控制,所以系统的学习了git的各种命令,做一下学习分享。

文章参考:
面试官:谈谈你对git的理解
git暂存区与本地仓库的区别(手把手教你学习git命令)
视频学习:全方位入门git-慕课网

git工作原理

git将项目代码的存储位置分成4个部分:工作区、暂存区、本地仓库、远程仓库。
先解释这几个存储位置的概念:
1、工作区。就是当前编译器打开的项目。
2、暂存区。等待提交到本地仓库( git add .
3、本地仓库。等待提交到远程仓库。(git commit -m
4、远程仓库。(git push origin xxx
在这里插入图片描述

常用代码提交过程

将工作区修改的代码推送到远程仓库的过程依次经历了上图从右到左的三个步骤:
1、工作区——暂存区
2、暂存区——本地仓库
3、本地仓库——远程仓库(默认名为origin,也可以起别名)

git add .                		//将所有本地已修改的文件传至暂存区
git add demo1.html       		//将本地修改的demo1.html文件传至暂存区

git commit -m "xxx"        //将暂存区文件传入本地仓库,但是还没有提交到远程仓库中 可以加备注xxx记录自己本次修改的内容

git push 远程仓库名 分支名
git push origin master    		//将本地仓库的代码推送到远程仓库origin的master分支

其他常用命令

查看本地仓库与哪些远程仓库关联

显示当前 Git 仓库的所有远程仓库(remote repositories)及其对应的 URL 地址。

git remote -v

在这里插入图片描述

前面的origin是对应的远程仓库的名称(默认情况下,克隆的远程仓库会被命名为 origin)。
当项目同时关联了多个远程仓库时,可以为不同的仓库起不同的名字,方便提交时区分提交至哪个仓库

git remote rename 原名字 新名字
git remote rename origin mainrepo			//为原origin的远程仓库更改名字,改为mainrepo

如图,我给gitee对应的远程仓库起名为gitee,github对应的起名为github,这样在执行git remote -v时就会对其进行区分:
在这里插入图片描述
相应的,在提交代码时,对应的origin也应该改为对应的新名字,例如:

git push github master		//提交代码到上图中github远程仓库的master分支

查看项目改动状态

git status  		//查看当前项目的状态 哪些文件被修改了

在这里插入图片描述

查看本地项目是否为最新代码

先获取远程项目的最新提交记录(此过程不会合并代码到本地分支)

git fetch origin		//假设远程仓库名为默认值origin

然后比较本地与远程分支的差异

git status

然后会输出当前本地代码与远程仓库的不同:git status 会告诉你当前分支是 “up to date”(与远程仓库同步),还是有 “ahead”(本地有新提交尚未推送)或 “behind”(远程仓库有新提交尚未拉取)。
例如:下面是已同步的输出样例。

On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

下面是本地已有文件被修改,但还没有被添加到暂存区(modified: .idea/workspace.xml:文件 .idea/workspace.xml 已被修改)
在这里插入图片描述

修改不当时的代码回退

未加入暂存区

比如在拉取项目之后在本分支进行修改,但是修改失误,还未加入暂存区(即还没有执行 git add . )需要回到上一次提交的状态:

git diff        //查看工作区与暂存区的差别
误修改少量代码

比如我在拉取的项目中注释若干行,执行git diff后输出:
在这里插入图片描述
再根据提示信息改回原本的代码即可。
但是如果修改的地方过多,显然这样不合适,需要比对的地方太多。

误修改的代码量较多 且分布较为集中

比如我误修改的代码集中在某几个文件中,可以单独把这几个文件回退到上次提交状态:

git checkout -- 要还原的文件所在路径
git checkout -- src/components/EcoSelect/index.jsx

已加入暂存区

比如在本地进行代码的修改,但是修改失误,已经加入暂存区(即已执行 git add . 需要回到上一次提交的状态
1、首先恢复暂存区状态。(注意HEAD大写),它的作用主要是从暂存区中移除已暂存的更改,将它们移回工作区,但不会丢失工作目录中的更改。

git reset HEAD 文件路径(可以直接在目录下右键复制相对路径)
git reset HEAD src\pages\EcoIndustryDevelopment\ByTotal\Components\ByThreeIndustries\index.jsx

2、恢复工作区状态,还原文件至上次提交的状态。(与上文未加入暂存区的修改方式相同)

git checkout -- reset HEAD 文件路径
git checkout -- reset HEAD src\pages\EcoIndustryDevelopment\ByTotal\Components\ByThreeIndustries\index.jsx

回退代码至上一版本 / 指定版本

回退代码至上一版本

1、比如代码有很多个版本,想要回退代码到某一个版本(工作区、暂存区都会回退到该版本)
命令中的 n 个^ 代表回退至前 n 个版本。
如果只有一个 ^ ,就是回退到相对于现在的前一个版本。(比如现在是版本5,就回退到版本4)

//HEAD 表示当前的提交
//--hard:不仅重置分支指针,还重置工作目录和暂存区,使其与指定的提交完全一致。
git reset --hard HEAD^			

注意:使用 --hard 选项会导致任何未提交的更改被永久丢弃。请务必确保在执行此操作之前没有需要保留的未提交更改。

2、如果不想使工作区与暂存区的代码都回退,可以使用下面的方法,这会将当前分支指针重置到上一个提交,但保留工作目录和暂存区的更改。适用于想要重做最近的提交,但不想丢失更改的情况

git reset --soft HEAD^

3、如果想要保留本地的修改,但是取消暂存区中已有的修改
如果本地的代码在拉取之后加入了暂存区(即已执行 git add . ),但是此时决定取消所有这些暂存的更改。那么不需要一个一个文件的恢复暂存区状态,直接执行:

git reset --mixed HEAD^			//取消这些暂存的文件,而不丢失工作目录中的实际更改

也就是说,执行上述命令,可以取消暂存区里的修改,但是本地代码仍然是修改之后的代码,方便继续修改再次提交。

回退代码至指定版本

1、可以先使用 git log 拿到想要回退的版本 id (可以是全部 id ,也可以是前7、8位)。

git log

2、然后执行 reset 命令进行回退。

git reset --hard 版本id

在这里插入图片描述
注:如果只想要把某个文件回退到指定版本(其余文件保留当前版本的代码),而不需要整个项目回退呢:

git log        //拿到想要回退的版本id

git checkout 版本id -- 文件路径
git checkout e748986 -- src/pages/EcoAnalyse/index.jsx

查看项目提交记录

在配置git时需要账号与密码,这个过程就是为了记录每次git提交是谁完成的。

git log     //查看以前所有的提交记录
git log --oneline        //查看简洁的提交记录 不显示修改人和修改时间 只有修改的信息/备注

在这里插入图片描述
在这里插入图片描述

查看版本路线

git log --oneline --graph    	

在这里插入图片描述

查看某个指定作者的修改记录

返回该作者修改的记录,包括时间、修改备注等。

git log --author='xxx'        //查看指定xxx修改的记录

在这里插入图片描述

查看文件前后变化

返回的是每次对该文件修改的操作id与备注。可以根据备注找出具体的某次commit操作的id,方便其他修改等的操作。

git log --pretty=oneline 文件路径
git log --pretty=oneline src/pages/xxx/Components/aaa/index.jsx

在这里插入图片描述

删除不需要的文件

  • 方法一:手动删除文件
    在编译器中打开项目,右键删除某文件,提交到git远程仓库中。
git add .
git commit -m 手动删除文件
  • 方法二:使用git删除文件
git rm demo1.html        		//remove Demo1.html

git提交规范

下面是总结的常用git提交规范,可以在自己项目提交时使用。

- feat :新功能
- fix :修复 bug
- chore :对构建或者辅助工具的更改
- refactor :既不是修复 bug 也不是添加新功能的代码更改
- style :不影响代码含义的更改 (例如空格、格式化、少了分号)
- docs :只是文档的更改
- perf :提高性能的代码更改
- revert :撤回提交
- test :添加或修正测试
  • 21
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值