Git常用指令收集

记录开发过程中经常用到的指令,备忘


1、git remote update origin --prune

更新远端分支列表,当远端新建了一个分支,本地需要获取的时候,可以通过该命令,更新到远端新分支

2、git reset

还原版本,当想回退到之前的某次提交时,可以使用该命令

git reset --hard version

version之后的所有提交都将消失

举例:

比如想回退到96ec3c27版本
命令:git reset --hard 96ec3c27
执行该命令后,96ec3c27版本之后所有的提交都将直接消失,这时候,如果再推送,会失败,因为远端head指向和本地不一致,我们可以直接强制推送,git push -f,这样,就将版本回退到了96ec3c27

git reset 还有参数可选

git reset --mixed
不回改变工作区,但是会用指定的commit覆盖暂存区,之前所有暂存的内容都变为未暂存的状态

git reset --soft
不会改变暂存区,仅仅将commit回退到了指定的提交

3、git revert -n

重做版本,当我们想回退到某个之前的版本继续编辑,但还想保留其后续的版本的话,比如之前有个版本有bug,想重新做一下这个版本,就可以使用该命令

还以上图为例,我们想重做96ec3c27版本,

执行命令:git revert -n 96ec3c27

此时会生成一个新的提交,其包含了96ec3c27所有的修改,这一步有可能会有冲突,需要手动解决,
然后我们在正常提交推送就可以了。

git revert和git reset的区别:git revert会新生成一个提交,并保留之后的提交,而git reset是直接将head指向之前的某个提交,所以该提交之后的所有提交都不会保留,也不会新生成新提交。
这两个命令都含有一定的风险,开发过程中谨慎使用。


4、设置ssh公钥

1 gitbash打开git命令行窗口

2 设置git用户名 git config --global user.name "your git name"

3 设置git的email git config --global user.email "your git email"

4 清空.ssh文件夹 位置为C:\Users\yourcomputername.ssh 如果没有设置过得话,一般就是只有一个known_hosts文件,直接删除就好,找不到.ssh文件夹的话,也可以C盘直接搜.ssh

5 命令 ssh-keygen -t rsa -C "your git email"(填写前边设置的邮箱)
接着应该出现下面两行
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/your_user_directory/.ssh/id_rsa):
直接按回车
可能会提示让你输入口令(请记住自己输入的口令)
Enter passphrase (empty for no passphrase):输入完口令后,按回车
会让你再次输入确认口令
Enter same passphrase again:再次输入口令后,回车,就已经生成ssh公钥了

6 完整步骤如下图(该图我只设置了user.name 是因为email我已经设置过了)

7 前往.ssh文件夹,可以看到已经生成了两个文件id_rsa和id_rsa.pub,打开id_rsa.pub文件,将里面的内容全部复制

8 前往git仓库,找到设置→ssh公钥,将复制的内容添加即可(这里github、gitee、gitlab的设置方法大同小异,这里不截图了,很简单就能找得到)

9 最后就可以使用ssh推送了,在推送的时候,提示输入口令,输入第五步设置的口令即可


5、建立一个没有基的分支,也就是没有父节点的分支

我们新建分支的时候,都是需要指定父节点的,所以新建的分支会继承父节点的提交记录;当我们不希望集成父节点,而是希望新建的分支为独立的,且是首次的时候,我们可以使用 orphan参数
git checkout --orphan newbranch
执行该指令,会生成一个新的分支newbranch,其所有内容都源自当前分支(即执行指令时,所处分支),但不会记录当前分支的所有记录,就像一个干净的初始节点,最后我们push一下,就可以将newbranch推送


6、自动变基 rebase git config 修改global参数

Git官方文档中提到:
在 Git 中整合来自不同分支的修改主要有两种方法:merge 以及 rebase。
merge也就是合并,这个概念很容易理解,我们从分支上拉取代码进行修改,再提交的时候,如果遇到了别人的修改,则把我们的修改和他们的修改合并一下。那么rebase中文译为变基是什么意思呢?首先要理解这个base,base也就是基础的意思,当我们从代码分支上获取代码的时候,我们就有了一个基础,也就是base,此后的修改我们都是在这个基础之上进行的,但是当我们需要提交修改的时候,遇到了别人的代码,变基这个操作就是在这个时候,我们不去合并别人的代码,而是直接把我们原先的基础变掉,变成以别人修改过后的新代码为基础,把我们的修改在这个新的基础之上重新进行。基础变掉了,所以叫作变基。
那么,变基有什么好处呢?好处之一是可以使我们的时间线变得非常干净,以前采用合并的时候,时间线里完整记录了我们的代码是从哪个基础上拉取出来的,做了哪些修改,然后又在哪个时间点合并回分支去,而采用变基之后,时间线上不再反映拉取的时间点,因为每次提交都是以最新代码为基础的,所以时间线就变成了一根直线。

git pull默认是以merge方式进行的,我们可以通过修改global参数,将git pull的方式修改为rebase,这样修改之后,当我们拉取代码的时候,就会自动变基

git config --global --add pull.rebase true
查看global参数
git config --global -l

关于git config的扩展介绍:

俗话说的好,知其然,还要知其所以然,为了更好地理解这行代码做了什么事情,我整理相关知识点,供君阅读👇
1)git 的三个配置文件
git 一共有三个配置文件,且权重如下:
仓库级配置文件(--local) > 全局级配置文件(--global) >系统级配置文件(--system)
通过 git config 命令修改 git 配置

2)查看配置文件: 参数 --list, 简称 -l
查看仓库级的config:git config --local -l
查看全局级的config:git config --global -l
查看系统级的config:git config --system -l
查看当前生效的配置:git config -l 会显示最终三个配置文件后的配置信息

3)编辑配置文件: 参数 --edit,简称-e
编辑仓库级的config:git config --local -e
编辑全局级的config:git config --global -e
编辑系统级的config:git config --system -e

4)新增一个配置项: 参数 --add
格式:git config --local/--global/--system --add section.key value (默认是添加在local配置中)
git pull 命令默认是通过merge来合并代码的,全局修改 pull 为rebase
git config --add pull.rebase true
注意:section.key value 为必填

5)获取一个配置项: 参数 --get
格式:git config --local / --global / --system --get section.key

6)删除一个配置项: 参数 --unset
格式:git config --local/--global/--system --unset section.key

posted @ 2021-09-07 09:01  大苹果coding  阅读(34)  评论(0编辑  收藏  举报