Git使用速通

目录

一、Git相关配置

查看配置 git config -l

查看系统config git config --system --list

查看当前用户(global)配置 git config --global --list

系统配置文件存放处


用户配置文件所在地

用户名称和e-mail地址

当你安装Git后首先要做的事情就是这个。这是非常重要的,因为每次Git提交都 会使用该信息。它被永远的嵌入到了你的提交中:

git config --global user.name "zhang-noob" 名称

git config --global user.email 3466493941@qq.com 邮箱

++而这两个可以更改++

二、初始化仓库

git init------初始化仓库

git status------查看仓库的状态

作两次对比,工作区 vs 暂存区 以及 暂存区 vs 仓库,并将两次对比的结果显示在输出中。哪个对比没差别,就不显示。两个对比都没差别,就显示working tree clean。

git add------向暂存区中添加文件

  • git add . 添加文件夹中的所有文件
  • git add "要添加的东西.文件格式"

git commit------保存仓库的历史记录

  • 记述一行提交信息--->git commit -m "message" ,"message" 可以是一些备注信息
  • 记述详细提交信息--->直接执行 git commit命令,输入完成后记得保存一下,不然没用


若是我们修改了东西但是没有add就commit,那么新修改的东西就不会被传到仓库

如下

然后git commit -m "添加新的节点到链表"

然后git diff HEAD -- test.c 查看工作区和暂态区的差别发现第二次的修改未提交上去

三、版本回退与文件修改

git log------查看提交日志

  • 只显示提交信息的第一行--->git log --pretty=short

  • 只显示指定目录、文件的日志----->在 git log命令后加上目录名 如 git log README.md

  • 显示文件的改动 git log -p 如:git log -p README.md 按q键退出查看

  • 如果嫌输出信息太多,看得眼花缭乱的,可以试试 git log --pretty=oneline

git reflog 查看以往的各个操作的哈希值

git rest --hard(哈希值)回溯历史版本

  • git reflog 查看以往的各个操作的哈希值 或者直接用git log也行

​ 这个很好用,比如我们回退了历史,但是我们已经把这个终端关了,此时想回到最新版本就可以用这个查找哈希值

  • 然后在git reset --hard c9a9ed2 回溯历史版本

  • 也可以直接 **git reset --hard HEAD^**

!NOTE

在Git中,用HEAD表示当前版本,上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100。

--hard参数有啥意义?--hard会回退到上个版本的已提交状态,而--soft会回退到上个版本的未提交状态,--mixed会回退到上个版本已添加但未提交的状态。

++然后用linux操作 cat 文件 来查看文件是否回到了之前的版本++

​ 此时若是还想回到最新版本,就 git reset --hard 哈希值 就行了,版本号没必要写全,前几位就可以了,Git会自动去找

git diff------查看更改前后的差别,查看工作区和暂存区差异

git diff --cached 查看暂存区和仓库差异

git diff HEAD -- (要查看的文件) 查看工作区和仓库的差异

git add的反向命令git checkout 撤销工作区修改,即把暂存区最新版本转移到工作区,

git commit的反向命令git reset HEAD 就是把仓库最新版本转移到暂存区。

!IMPORTANT

git checkout -- file 丢弃工作区的修改

但是本地文件不会被修改

其本质其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以"一键还原"

rm 文件 删除文件

然后我们确实要删除test1.c 那就再git rm 彻底删除,然后再git commit

四、远程仓库

创建仓库之前我们要先添加SSH密钥,先去用户目录下看看有没有.ssh的文件夹

获取密钥

若没有,那就需要先获取密钥

ssh-keygen -t rsa -C "yourmail@example.com"


然后会在该目录下生成两个文件

id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,也是我们需要上传到github或者gitee上的密钥可以放心地告诉任何人。

创建仓库

这样密钥就获取成功了,接下来在github上创建一个仓库

然后在终端输入

git remote add origin git@github.com:michaelliao/learngit.git

michaelliao替换成你自己的GitHub账户名

远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程


推送远程

下一步,就可以把本地库的所有内容推送到远程库上:

git push -u origin main

然而在提交的时候若是出现如下问题

依次输入以下命令就好了,目前不知道为什么

c 复制代码
git fetch origin main

git merge origin FETCH_HEAD

git pull --rebase origin main

查看远程库信息

git remote -v

删除远程库

git remote rm + 名字 命令

先用**git remote -v**查看远程库信息

**git remote rm origin**就行了,不过这只是删除了本地和远程的联系,真正删除远程仓库需要去GitHub上

推送抓取分支

git push origin main(这里选择要推送的分支)

抓取分支就是clone,pull

小结

五、Rebase

  • rebase 操作可以把本地未push的分叉提交历史整理成直线;
  • rebase 的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。

六、分支操作

git branch------显示分支一览表

**'*'**表示当前所在分支,结果中没有显 示其他分支名,表示本地仓库中只存在 main一个分支。

git checkout -b example------创建、切换分支(example自起)

切换回上一个分支---->git checkout -

git branch -d [branch-name] 删除分支

删除远程分支

git push origin --delete [branch-name]

git branch -dr [remote/branch]

git merge example 合并分支

将指定的分支合并到当前分支上 。即将 example 分支上更改的 内容合并到 main 分支上

git merge --no-ff feature-A

​ 随后编辑器会启动,用于录入合并提交的信息,默认信息中已经包含了是从 feature-A 分支合并过来的相关内容,所 以可不必做任何更改。将编辑器中显示的内容保存,关闭编辑器

git merge --no-ff -m " "

​ git merge --no-ff -m "merge with no-ff" dev 不使用fast forward合并,因为fast forward合并,删除分支后,会丢掉分支信息

git log --graph以图表形式查看分支

解决分支冲突

git log --graph --pretty=oneline --abbrev-commit

用**git log --graph**命令可以看到分支合并图。

存储当前分支工作现场

git stash我当前分支的任务还没有完成,只是add了并不想commit,所以就先保存一下

然后切换到其他分支上去干其他的事情,干完之后再回来,但是发现工作区是干净的,所以需要恢复

先用**git stash list**查看

一是用**git stash apply**恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;

另一种方式是用**git stash pop**,恢复的同时把stash内容也删了

复制

七、标签管理

首先,切换到需要打标签的分支上,然后 **git tag "name"**就可以打一个标签

可以用命令**git tag**查看所有标签

也可以后加commit id号进行打标签:git tag v0.9 f52c633

可以用**git show "tagname**"来看标签的信息

还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:

git tag -a v0.1 -m "version 0.1 released" 1094adb

远程

  • 命令**git push origin "tagname"**可以推送一个本地标签;

  • 命令**git push origin --tags** 可以推送全部未推送过的本地标签;

  • 命令**git tag -d "tagname"**可以删除一个本地标签;

  • 命令**git push origin :refs/tags/"tagname"**可以删除一个远程标签。


若是要删除远程的就需要先删除本地的,然后再删除远程的即

git tag -d "tagname"

git push origin :refs/tags/"tagname"

八、Git也支持Linux操作

c 复制代码
1)cd : 改变目录。

2)cd . . 回退到上一个目录,直接cd进入默认目录

3)pwd : 显示当前所在的目录路径。 

4)ls(ll): 都是列出当前目录中的所有文件,只不过ll(两个ll)列出的内容更为详细。 

5)touch : 新建一个文件 如 touch index.js 就会在当前目录下新建一个index.js文件。 

6)rm: 删除一个文件, rm index.js 就会把index.js文件删除。 

7)mkdir: 新建一个目录,就是新建一个文件夹。 

8)rm -r : 删除一个文件夹, rm -r src 删除src目录 

9)mv 移动文件, mv index.html src index.html 是我们要移动的文件, src 是目标文件夹,

当然, 这样写, 必须保证文件和目标文件夹在同一目录下。 

10)reset 重新初始化终端/清屏。 

11)clear 清屏。 

12)history 查看命令历史。

13)help 帮助。 

14)exit 退出。 

15)#表示注释

4)ls(ll): 都是列出当前目录中的所有文件,只不过ll(两个ll)列出的内容更为详细。

5)touch : 新建一个文件 如 touch index.js 就会在当前目录下新建一个index.js文件。

6)rm: 删除一个文件, rm index.js 就会把index.js文件删除。

7)mkdir: 新建一个目录,就是新建一个文件夹。

8)rm -r : 删除一个文件夹, rm -r src 删除src目录

9)mv 移动文件, mv index.html src index.html 是我们要移动的文件, src 是目标文件夹,

当然, 这样写, 必须保证文件和目标文件夹在同一目录下。

10)reset 重新初始化终端/清屏。

11)clear 清屏。

12)history 查看命令历史。

13)help 帮助。

14)exit 退出。

15)#表示注释

复制代码
相关推荐
andwhataboutit?19 分钟前
Docker Compose学习
学习·docker·容器
im_AMBER1 小时前
数据结构 04 栈和队列
数据结构·笔记·学习
尘似鹤1 小时前
微信小程序学习(六)--多媒体操作
学习·微信小程序·小程序
Jammingpro1 小时前
【Git版本控制】Git初识、安装、仓库初始化与仓库配置(含git init、git config与配置无法取消问题)
java·git·elasticsearch
UpYoung!2 小时前
无广技术贴!【PDF编辑器】Solid Converter PDF保姆级图文下载安装指南——实用推荐之PDF编辑软件
学习·数学建模·pdf·编辑器·运维开发·个人开发
达瓦里氏1232 小时前
重排反应是什么?从分子变化到四大关键特征解析
数据库·学习·化学
LiJieNiub2 小时前
基于 PyTorch 实现 MNIST 手写数字识别
pytorch·深度学习·学习
Geek攻城猫2 小时前
02117 信息组织【第六章】
学习
流***陌3 小时前
线上教学小程序:构建高效互动的云端学习空间
学习·小程序
来自嵌入式的zyz3 小时前
STM32项目实战/PID算法学习:编码电机闭环控制实现控速+位置控制、倒立摆实现
stm32·嵌入式硬件·学习·控制·pid