git命令使用详情

目录

一. 安装教程

二. git配置

1. 查看git配置参数

2. 设置邮箱和用户名

3. SSH配置

4. 配置git远程库公钥

5. 编码设置

三. git 提交流程

1. 整体操作流程图

2. Git仓库包含5个区域

3. 下载、提交、更新命令

3.1. 下载

3.2. 提交

3.3. 更新(两种方式)

四. git 冲突解决

1. git 冲突的类型及合并策略

2. git pull --rebase 冲突

2.1 develop 更新时内容冲突

2.2 内容冲突处理

2.3 树冲突解决

3. cherry-pick冲突

4. git merge冲突

五. 修改历史提交

1 单个文件回退到某个历史版本

2 修改最近一次提交内容或注释(git commit --amend )

3. 修改某次历史提交(git rebase -i)

3.1 合并提交(s)

3.2 修改提交信息(r)

3.3 修改提交的内容

3.4 删掉提交(d)


一. 安装教程

安装教程icon-default.png?t=N7T8https://mp.csdn.net/mp_blog/creation/editor/141688528

二. git配置

1. 查看git配置参数

  • 查看Git的配置配置参数命令
# 这条命令会列出所有设置为全局(--global)的配置选项及其值
git config --global --list

# 显示当前设置的全局用户名
git config --global user.name

# 展示所有级别的配置,包括本地仓库的配置、用户级别的配置以及系统级别的配置
git config --list

  • 执行结果

2. 设置邮箱和用户名

  • 安装完成之后需要配置自己名称和邮箱
# 设置自己的用户名
git config --global user.name "李四"

# 设置自己的邮箱
git config --global user.email "323@qq.com"
  • 如果设置名称和邮箱报错

错误信息:

        warning: user.email has multiple values error: cannot overwrite multiple values with a single value Use a regexp, --add or --replace-all to change user.email.

错误原因:
        通过 git config –list 命令 发现有多个user.name 或者多个user.email

解决问题办法:

        执行以下命令

# 执行以下命令
git config --global --replace-all user.name "李四"
git config --global --replace-all user.email "123456@qq.com"

3. SSH配置

        SSH配置需要生成公钥(http协议忽略生成公钥)

右键选择“Git Bash Here”,输入如下命令生成公钥。

并按回车3下,为什么按三下:是因为有提示你是否需要设置密码,如果设置了每次使用Git都会用到密码。
会在一个文件夹里面生成一个私钥 id_rsa和一个公钥id_rsa.pub。(可执行start ~ 命令,生成的公私钥在 .ssh的文件夹里面)

# 执行生成公钥和私钥的命令
ssh-keygen -t rsa -C '自己邮箱'

查看公钥命令

# 查看公钥内容
cat ~/.ssh/id_rsa.pub

4. 配置git远程库公钥

  • 通过【设置】->【ssh公钥】进入码云的如下界面,黏贴公钥
  • 把刚才在git bash里生成的公钥黏贴在公钥里点确定就好了

5. 编码设置

# 注释:该命令表示提交命令的时候使用utf-8编码集提交
git config --global i18n.commitencoding utf-8 

# 注释:该命令表示日志输出时使用utf-8编码集显示
git config --global i18n.logoutputencoding utf-8
 
# 注释:设置LESS字符集为utf-8
export LESSCHARSET=utf-8  

三. git 提交流程

1. 整体操作流程图

2. Git仓库包含5个区域

  1. 工作区
  2. 暂存区
  3. 本地仓库
  4. 本地远程库镜像
  5. 远程仓库

3. 下载、提交、更新命令

3.1. 下载

下载:git clone + git checkout

命令说明
git clone -b  test(分支)   https:(代码url)克隆远程库到本地
git checkout  test切换到test分支

代码示例

# 克隆 master 分支到本地
git clone -b master  https://test.jjj.com

# 切换分支到 test
git checkout test

3.2. 提交

提交 :git add + git commit + git push

命令说明
git add  分支添加文件到暂存区
git commit提交文件到本地版本库
git push将本地版本库中当前分支推送到默认远程片库。

代码示例

# 推送所有变更的文件到缓存区
git add .

# 提交变更文件到本地库
git commit -m "提交日志"

# 推送本地仓库到远程仓库
git push

3.3. 更新(两种方式)

方式一(推荐):git pull --rebase = git fetch + git rebase

命令说明

git pull --rebase

从默认远程库拉取本地库当前分支内容,并与本地库当前分支进行rebase合并

git  fetch获取远程库内容
git rebase以rebase方式合并分支

方式二(不推荐):git pull = git fetch + git merge

命令说明
git pull

从默认远程库拉取本地库当前分支内容,并与本地库当前分支进行merge合并

git fetch获取远程库内容
git merge以rebase方式合并分支

四. git 冲突解决

        git 冲突的类型和解决方法,git冲突有两种类型: 内容冲突 树冲突。内容冲突 是因为不同用户修改了同一文件的同一区域产生的;树冲突 是因为不同用户把同一文件改为不同的名字而产生。

1. git 冲突的类型及合并策略

  • 内容冲突:当产生内容冲突时,如果需要保留一方的内容,使用命令git checkout --ours/theirs < file-name > 实现,如果需要合并,可以手动修改文件。
  • 树冲突:产生树冲突时根据实际的需要,使用git rm/add  <file-name> 对文件进行添加和删除。

2. git pull --rebase 冲突

注意:在更新代码时,为了避免没有提交的文件和服务器文件产生冲突,可以先把 本地修改暂存起来,在提交完后,再弹出本地修改,流程如下。

# 1.把本地修改先暂存起来
git stash

# 2.拉取代码
git pull --rebase

# 3.在把本地暂存文件弹出来
git stash pop

2.1 develop 更新时内容冲突

  • 拉取代码是产生一个冲突内容冲突

2.2 内容冲突处理

  • 查看文件状态

  • 有三种解决冲突的方式

第一种:使用服务上的修改

第二种:使用本地修改

第三种:手动合并修改

  • 冲突后续处理

2.3 树冲突解决

  • 查看树冲突的文件状态

  • 解决冲突

  • 后续处理

3. cherry-pick冲突

        注意: cherry-pick 空提交时,会直接退出pick状态; 拣选连续的多个提交命令:git cherry-pick aa^..bb。

示例

         目前有两个分支 develop 和 master, 想把 develop 的提交拣选到 master上

1. 执行步骤
# 查看分支提交日志
git log

# 切换到 master 分支
git checkout master

# 拣选某个develop上的提交
git cherry-pick commitID

2. 在拣选的时候出现冲突

3. 手动解决冲突,先用 git status 查看出现冲突的文件

4. 使用 vim 手动对冲突的文件进行修改

5. 解决后的界面如下

6. 使用 git add 提交修改

7. git cherry-pick --continue 弹出提交信息交互界面,修改后保存退出,cherry-pick操作完成

4. git merge冲突

当执行merge时,会出现冲突。Git会停止合并过程,并抛出冲突信息

# 合并分支时出现冲突
git merge other-branch
 
# 查看冲突文件
git status
 
# 手动解决冲突
# 编辑文件,选择代码并删除 <<<<<<<, =======, >>>>>>> 标记
vi f.txt
 
# 标记冲突已解决
git add other-branch
 
# 完成合并
git merge --continue
 
# 如果需要取消合并
git merge --abort

五. 修改历史提交

1. 单个文件回退到某个历史版本

1.1 查看文件修改记录:git log test.txt

1.2 回退文件到 d46d797e50c47bc 版本:git checkout d46d797e50c47bc test.txt

2. 修改最近一次提交内容或注释(git commit --amend )

1. 修改最近一次提交注释内容

  1. 执行命令:git commit --amend

2. 如果要修改内容, 则执行如下过程

  1. 修改文件内容:vi test.txt
  2. 查看文件状态:git status
  3. 添加缓存区:git add .
  4. 提交本地仓库:git commit -m "提交代码"

注意:不管是修改了内容或者是提示,commitID 都会改变

3. 修改某次历史提交(git rebase -i)

命令:git rebase -i  [commitID] (其中commitID是要修改的提交的前一次ID

此命令的交互界面命令如下

常用参数说明

r, reword编辑某次提交的提交信息
e, edit修改某提提交的内容
s, squash把本次的提交合并到上一次
d, drop删除某次提交

3.1. 合并提交(s)

3.1.1 查看提交日志,想把C提交合并到B提交上

3.1.2 运行 git rebase -i -A 后,在交互界面输入s,保存退出

弹出变基交互界面

3.1.3 保存后弹出包含两次提交的提交信息如下:其中以#开始的内容时注释,不带#的是信息

根据需要修改提交信息如下,然后保存退出

3.1.4 再次查看日志,前两个提交合并到一起了

3.2. 修改提交信息(r)

注意修改第一次提交的命令是 git rebase -i --root

3.2.1 查看提交信息

3.2.2 变基到要修改的提交的前一个提交上

git rebase -i 0138a47

在弹出的交互界面里,把 pick字段改成r

保存后,弹出交互的提交信息界面,在这个界面里修改要提交的信息即可

3.2.3 再次查看提交信息,提交信息已经改动

3.3. 修改提交的内容(e)

3.3.1 查看要修改的提交的具体内容

修改下图中id为9490d07的提交, 通过git show查看到这个提交对文件README.md进行了修改

3.3.2 使用命令 git rebase -i 0138a47 变基到要修改提交的前一次提交上

然后弹出 rebase 的操作选项,如下图,把要修改的提交前的参数修改成e

3.3.3 保存交互界面后,对文件进行修改

Vi README.md

对文档添加如下信息,然后进行保存

3.3.4 对改动进行保存

git add README.md

git commit --amend

git rebase --continue

查看改变的提交

3.4. 删掉提交(d)

3.4.1 git log --pretty=oneline -3

3.4.2 git rebase -i 0138a47  #变基

然后弹出交互界面里输入d保存

然后查看日志,刚才的提交的信息就没了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值