Git学习笔记(一)本地相关命令


这两天在学习git版本控制工具,在这里记录一下。git的安装就不提了,可以去官网下载:https://git-scm.com/

一、git工作原理

在这里插入图片描述

  • git在本地分为三个区本地库、暂存区和工作区。
  • 工作区的代码要提交首先需要使用git add命令添加到暂存区,然后使用git commit命令提交到本地库。
  • 暂存区的作用主要是临时存储,用于版本控制,所以提交前添加到暂存区非常重要。
  • 可以直接git commit提交,但是提交后版本无法恢复。

在这里插入图片描述
本地仓库与远程仓库的关系如上。

  • 本地库2想要获取远程仓库的代码,可以使用git clone命令覆盖到本地。
  • 本地库2修改完代码后想要同步到远程仓库,使用git push命令,需要加入团队。
  • 本地库1使用git pull命令拉取远程仓库代码合并到本地仓库,修改完成后git push推送到远程仓库合并。

了解到这些之后就可以试着练练手了。

二、Git的相关命令


首先切换到项目文件夹下,右键打开git命令窗口。

1、设置签名

在使用git之前需要先设置一下签名,签名其实就是为了区分是谁操作的一个标识。包括用户和邮箱。
签名分为两个级别:项目级别和系统用户级别。

  • 项目级别:只对当前项目生效
  • 系统用户级别:相当于全局,只要不切换系统用户一直生效。
  • 优先级:项目级别>系统用户级别
  • 二者必须设置其一,否则git无法区分是谁进行的操作,也就无法进行版本控制。
# 项目级别
git config user.name zhangsan
git config user.email 1593324992@qq.com
# 系统用户级别
git config --global user.name zhangsan
git config --global user.email 1593324992@qq.com

其中项目级别配置完后保存在项目下 .git/config文件中。
在这里插入图片描述
系统用户级别配置保存在用户目录下的.gitconfig文件中。
在这里插入图片描述

cat命令用于打印文件内容
~代表用户根目录,也就是通常说的c:/user/administrator/

签名配置好以后就可以开始进行git的相关操作了。

2、初始化本地仓库
git init

命令执行后会生成.git文件夹,这里面包含一系列本地仓库相关的文件,不要删除或修改。
在这里插入图片描述

3、查看状态命令
git status

在这里插入图片描述
第二行表示工作区,当前没有文件可以提交;第三行表示暂存区没有文件可提交。

4、工作区添加到暂存区

创建文件随便写点东西,然后使用git status命令查看状态。

echo -e 'gaahaha\n gahhopkmm\n' >> test.txt
git status

在这里插入图片描述
发现工作区有一个标红的文件可提交,提示我们使用git add 命令。

echo命令是打印字符,这里的意思是追加 gaahaha\n gahhopkmm\n 到test.txt文件中。>>表追加,>表覆盖,参数-e表示解释转义字符。

使用git add命令添加,然后使用git status查看状态。

git add test.txt
git status

在这里插入图片描述
这时候发现工作区已经没有文件可以提交了,暂存区多了一个绿色的文件是我们刚提交上来的。而且提示我们如果想要恢复之前的状态可以使用git rm --cached命令。

5、暂存区提交到本地仓库

使用git add添加到暂存区后紧接着就可以使用git commit命令提交到本地仓库了。

git commit test.txt

上面的命令执行后会出现这样一个界面,这是vim编辑器,提交命令执行后会默认打开vim编辑器,这是在安装git的时候选择的,你可能没注意,但确实有这样一步。
如果你不想打开这个编辑器这样来使用:

git commit -m "commit message" [file name]

在这里插入图片描述
这里要求提交的时候添加一些备注,如果每一次提交都没有备注的话,可以想象多难找,所以git要求必须添加备注,否则添加失败,如图,提交被终止:
在这里插入图片描述
重新执行git commit命令,按下 i 进入编辑模式,编辑完成后按Esc退出到命令模式,然后按:编辑命令,输入wq保存并退出,回车键出现下图即提交成功。

在这里插入图片描述
可以对应来看一下,大概就是说,根提交也就是第一个版本,版本号77ee20b开头,备注this is my first commit,改变1个文件,3行内容。第一行的警告也是安装的时候有一个选项,提交的时候会将换行结尾符从windows的LF格式转换成CRLF格式,但本地不会变,不会影响自己的操作。

执行git status命令查看状态,没有需要提交的内容。
在这里插入图片描述
这就是一次完整的从工作区提交到本地库的过程。

6、查看日志命令

每一次提交过后都会生成一个历史版本,对应着有相应的日志进行记录。查看日志使用这个命令:

git log

在这里插入图片描述
为了方便演示我又修改提交了一次,这个命令查看log会生成很详细的信息如上图,其中带有(HEAD -> master)的就是当前的版本,commit后的一长串就是版本号,如果需要回退到某个版本时会用到。

当版本过多时,这样的显示就显得太多了,而且一页显示不下几个版本的信息,这个时候可以加上参数–pretty=oneline。这种方式只显示历史版本。

git log --pretty=oneline

在这里插入图片描述
这个命令只会显示版本号和提交信息,有时候查找起来会更加的方便。什么?命令太长了,那就换种写法。

git log --oneline

在这里插入图片描述
这样的写法只会显示版本号的前7位和备注信息,事实上,版本控制也只需要前七位就可以了。这种方式也只显示历史版本。

还有一种写法用于显示版本距离。

git reflog

在这里插入图片描述
这种方式和–oneline的方式相比就对了一个版本距离的问题,其中HEAD@{}就是版本距离,就是指距离当前版本的版本个数。这种方式会显示所有的版本,包括当前版本之前的版本。

7、版本回退

当我们需要回退版本的时候可以使用git reset命令。

# 通过版本号回退,可以跳到任意版本
git reset --hard 版本号
# 使用HEAD指针回退,只能退到之前的版本,历史版本,一个^代表一个版本
git reset --hard HEAD^...
# 回退N个版本
git reset --hard HEAD~[N]

除了–hard参数,还有–soft和–mixed参数。

–soft:仅在本地库移动指针,暂存区被凸显出来。
–mixed:移动本地库和暂存区的指针,工作区被凸显出来。
–hard:三个区保持同步移动。

8、比较文件命令
# 比较工作区和暂存区的文件
git diff [文件名]
# 比较某个历史版本和本地库的文件
git diff [版本号] [文件名]
# 不带文件名比较所有文件
git diff
git diff [版本号]
9、分支管理

为什么要分支?

同时并行推进多个功能开发,提高开发效率。
试错,如果开发失败,不会退其他分支造成影响,删除分支重新开始即可。

分支命令

# 创建分支
git branch [分支名]
# 查看分支
git branch -v
# 切换分支
git checkout [分支名]
# 合并分支,将某分支合并到当前分支
git merge [分支名]

当执行merge命令时可能会遇到冲突,例如合并的两个分支修改了同一文件的同一行,git无法自动取舍,会将冲突的区域都加入到文件中做上标记并提示,如下图:
在这里插入图片描述
打开文件如下:
在这里插入图片描述
git帮我们标记出了冲突的位置,我们需要人为的进行取舍。修改完文件后执行git status查看状态。
在这里插入图片描述
提示我们有冲突需要解决,使用git add命令,那我们就执行git add命令,再次执行git status查看状态。
在这里插入图片描述
提示冲突已经被修复啦,但仍然在合并中,提示我们用git commit命令结束合并。这里要注意,不能添加文件名,否则会报错。
在这里插入图片描述
执行命令git commit 后冲突解决。
在这里插入图片描述
以上就是我今天所学的所有内容啦,后面会继续学习跟github相关的操作。推荐大家去B站听尚硅谷的课程,讲的每一门技术都特别细致,让人印象特别深刻。大家加油!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Anesthesia丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值