【学习Git】本地库的命令行操作

本地库初始化

git init
创建了一个.git隐藏文件,该文件存放的是与本地库有关的文件
在这里插入图片描述

设置签名

以用户名和邮箱为标识,用于区分不同的人(用户名可以随意,邮箱不必是真实的,这些与登录代码托管中心的账号密码无关)

仓库级别/项目级别

在当前本地库范围有效,即在testGit文件夹有效(范围较小)
git config user.name [名字]
git config user.email [邮箱]

git config user.name lzw
git config user.email [email protected]

在.git文件夹中,以记事本打开config文件,可以看到配置信息保存进来了
在这里插入图片描述

系统用户级别

在登录操作系统的用户范围有效(范围较大)
git config --global user.name [名字]
git config --global user.email [邮箱]

git config --global user.name lzwPro
git config --global user.email [email protected]

在C:\Users\lzw(用户名)目录下,.gitconfig文件中保存着配置信息
在这里插入图片描述

基本操作

追踪文件

对未追踪的文件进行追踪,将工作区新建或修改的文件添加至暂存区
git add [文件名]

git add test.txt

提交文件

将暂存区文件提交至本地库

在编辑器中输入提交信息
git commit [文件名]

git commit test.txt

在这里插入图片描述


在命令行直接输入提交信息
git commit -m “[提交日志] [文件名]”

git commit -m "my first commit test.txt"
  • 提交信息:my first commit!
  • 文件内容变化情况
    在这里插入图片描述

对于修改了内容的文件,可以不add,直接commit,但是不可撤销

移除文件

将test.txt文件从暂存区删除
git rm --cached [文件名]

git rm --cached test.txt

获取状态

查看工作区、暂存器的状态
git status

  • 表示在master分支
  • 没有已经提交过的,本地库无文件
  • 没有可提交的,暂存区无文件
    在这里插入图片描述

我们在这里新建一个txt文件,再次获取状态
在这里插入图片描述

  • 表示在master分支
  • 没有已经提交过的,本地库无文件
  • 存在未追踪的文件,test.txt未放至暂存区。
    在这里插入图片描述

我们追踪test文件之后,再次获取状态

  • 表示在master分支
  • 没有已经提交过的,本地库无文件
  • test.txt是将要被提交至本地库的文件
    在这里插入图片描述

将暂存区文件提交之后,再次获取状态

  • 表示在master分支
  • 暂存区没有要提交的,工作区文件无变化
    在这里插入图片描述

将test文件内容修改之后,再次获取状态

  • 表示在master分支
  • test文件被修改,但未添加至暂存区
    在这里插入图片描述

将修改之后的文件进行追踪,再次获取状态

  • 表示在master分支
  • 被修改的test文件可以被提交至本地库
    在这里插入图片描述

删除文件之后,再次获取状态

  • 表示在master分支
  • test文件被删除,但未添加至暂存区
    在这里插入图片描述

  • 表示在master分支
  • 被删除的test文件可以被提交至本地库
    在这里插入图片描述

查看历史记录

形式1:
git log
详细的显示提交日志(只显示当前版本及之前的版本)
在这里插入图片描述
形式2:
git log --pretty=oneline
更美观的显示在一行(只显示当前版本及之前的版本)
在这里插入图片描述
形式3:
git log --oneline
哈希值更短(只显示当前版本及之前的版本)
在这里插入图片描述
形式4:
git reflog
显示跳转步数(HEAD@{n})(显示所有版本)
在这里插入图片描述

版本的移动

本质上是移动HEAD指针

基于索引值(前进或后退)
git reset --hard [局部哈希值]
根据局部索引值移动版本,下方命令移动至60df1f3版本

git reset --hard 60df1f3

在这里插入图片描述
我们查看文件test.txt,确实内容变成了对应的版本
在这里插入图片描述


使用^符号(后退)
git reset --hard HEAD[n个^]
版本后退n步

git reset --hard HEAD^

在这里插入图片描述
查看test.txt文件
在这里插入图片描述


使用~符号(后退)
git reset --hard HEAD~[n]
后退指定的n步

git reset --hard HEAD~1

在这里插入图片描述
现在test文件的内容已经成为一开始提交的内容
在这里插入图片描述


对reset查看本地帮助文档
git help reset

  • --hard:在本地库移动HEAD指针,重置暂存区,重置工作区
  • --mixed:在本地库移动HEAD指针,重置暂存区
  • --soft:在本地库移动HEAD指针

删除文件与恢复

恢复的前提是:删除之前的状态已经提交至本地库
我们手动将文件删除
在这里插入图片描述
提交至本地库之后的恢复

git add test.txt
git commit test.txt

查看历史记录
在这里插入图片描述
我们现在退至未删除之前的版本即可
在这里插入图片描述
可以看到,文件已经恢复
在这里插入图片描述
提交至本地库之前的恢复
未使用git commit命令的恢复

git reset --hard HEAD

比较文件差异

我们将文件内容修改(添加了最后一行)
在这里插入图片描述
将工作区内容与暂存器区内容进行比较
git diff [文件名]

git diff test.txt

可以看到增加了的行以及删除了的行(这里没有删除的行),增加的是绿色,删除的是红色
在这里插入图片描述


将工作区内容与本地库历史记录内容进行比较 (git diff 后加历史版本及文件名)
git diff [历史记录] [文件名]

git diff HEAD^^ test.txt

在这里插入图片描述
可以看到,和之前的版本相比多了3行

当git diff 后不加文件名时,比较的是工作区的所有文件

分支管理

分支:在版本控制过程中,使用多条线,同时推进多个任务。

好处1:同时并行推进多个功能开发,提高开发效率
好处2:如果某一分支开发失败,不影响其它分支

创建分支

git branch [分支名]
将当前分支的内容复制到新的分支上

git branch hot_fix

查看分支

git branch -v
查看所有的分支
在这里插入图片描述
绿色的是当前分支

切换分支

git checkout [分支名]

git checkout hot_fix

在这里插入图片描述
可以看到hot_fix为绿色的分支,即当前的分支为hot_fix

合并分支

git checkout [分支名1]
git merge [分支名2]
先切换至要被合并的分支,再执行合并,将分支2的内容合并到分支1上。

git checkout master
git merge hot_fix

在这里插入图片描述

解决冲突

当两个分支中相同的行被修改后,那么两个分支之间的合并将会发生冲突
例如:
在master分支上我们的内容是:
在这里插入图片描述
在hot_fix分支上我们的内容是:
在这里插入图片描述
那么合并时会发生冲突
在这里插入图片描述
此时打开文件,可以看到发生冲突的内容(=======上方为当前分支内容,下方为要合并的分支的内容)
在这里插入图片描述
我们对内容进行修改,删除特殊符号,然后改成我们想要的内容
在这里插入图片描述
最后提交内容
git add [文件名]
git commit -m “[日志]”
这里不加文件名


linux命令

这是一些常用的linux命令

  1. ll:显示所有目录(不含隐藏文件)
  2. ls -la:显示所有目录(含隐藏文件)
  3. cd [目录]:跳转路径
  4. mkdir [目录]:新建文件夹
  5. pwd:查看当前路径
  6. vim [文件名] :新建文件
  7. :set nu:显示行号
  8. :wq:退出编辑
  9. cat [文件]:查看文件内容
  10. 空格:向下翻页
  11. a:向上翻页
  12. q:退出
  13. tail -n [行数] [文件名]:显示文件内容的指定行数
  14. rm [文件名]:删除文件

猜你喜欢

转载自blog.csdn.net/weixin_44611096/article/details/106475080