git命令整理

1 说明

本文主要记录日常工作中,git使用过程中的常用命令。后续会持续更新完善。

2 环境配置

2.1 参数配置

git客户端安装完毕后,需要进行变量配置。主要配置user.nameuser.email两个属性,用来标识git操作者的身份

(1)查看全局所有配置

git config --global --list

(2)查看全局某个属性配置

git config --global user.name
git config --global user.email

(3)设置全局属性

git config --global user.name "xxx"
git config --global user.email "[email protected]"

(4)删除某个全局配置

git config --global --unset user.name

(5)打开全局参数配置文件

git config --global --edit

此命令会打开一个文件,可直接更改文件中的参数。

(6)默认文件打开方式还原

如配置文件打开方式,更改为本地软件后,想更改为原来的打开方式,可以执行如下命令:

git config --global core.editor vi

2.2 访问远程仓库

访问远程仓库,一般会直接执行clone命令。如下:

git clone https://gitee.com/xxx/mytest.git

初次访问git仓库,会弹出提示框要求输入git服务器的用户名密码。如多次输入失败,会提示

remote: [email protected]: Incorrect username or password (access token)
fatal: Authentication failed for 'https://gitee.com/xxx/mytest.git/'

这种情况需要清空windows凭据(控制面板->凭据管理器),输入正确的用户名密码

3 常用命令

3.1 分支开发

3.1.1 克隆远程分支
# 克隆远程分支到本地
git clone https://gitee.com/xxx/mytest.git
3.1.2 创建新分支

(1)根据当前分支创建本地分支,并切换到此分支

git checkout -b dev1

(2)更改代码后,提交到本地仓库

# 更改代码......

# 所有"新增"文件和"删除"文件加入到暂存区【建议】
git add -A

# 提交到本地仓库
git commit -m "read me"

(3)推送到远程仓库

新拉取的分支,第一次推送到远程仓库时,需指定远程仓库的名称创建关联关系,有如下两种方式:

  • push命令

    # 推送到远程新分支+创建本地和远程分支的关联关系
    git push -u origin dev1
    
  • push命令+branch命令

    # 推送当前分支到远程新分支
    git push origin dev1
    
    # 当前分支和推送到的远程分支,创建关联关系
     git branch --set-upstream-to=origin/dev1
    

创建远程分支,创建关联关系后,之后再推送代码,如无特殊要求,推送时,无需再指定远程分支,推送时直接执行如下命令:

git push

查看远程分支和本地分支对应关系命令如下:

git branch -vv

输出内容如下,中括号内为远程分支名称:

$ git branch -vv
  dev1   c1715e4 [origin/dev1] read me

3.2 查看命令

3.2.1 远程操作

(1)查看当前分支对应的远程地址

 git remote -v

输出内容如下,可以查看分支对应的远程地址:

$ git remote -v
origin  https://gitee.com/xxx/mytest.git (fetch)
origin  https://gitee.com/xxx/mytest.git (push)
3.2.2 分支相关

(1)查看分支

# 查看本地分支
git branch

# 查看远程分支
git branch -r

# 查看所有分支
git branch -a

# 查看远程分支和本地分支对应关系
git branch -vv

(2)切换本地分支

git checkout xxx

用法如下:

# 切换到本地master分支
git checkout master

# 切换到本地feature/dev1分支
git checkout feature/dev1
3.2.3 日志相关
# 单行+ 图形化方式查看日志【建议】
git log --graph --oneline

# 查看日志
git log 

# 单行查看日志
git log --oneline

# 图形化方式查看日志
git log --graph

3.3 撤销变更

3.3.1 撤销工作区变更

未使用git add时

受版本控制的文件,变更后进行撤销

# 放弃某个文件更改(受版本控制的文件,进行变更)
git checkout xx

# 放弃所有工作区文件更改(受版本控制的文件,进行变更)
git checkout .

不收版本控制的文件,进行撤销

# 删除未被跟踪的目录和文件
git clean -fd
3.3.2 撤销暂存区变更

已使用git add,未使用git commit。只撤销到工作区,如需从工作区撤销,仍然需要继续撤销

# 恢复某个“暂存文件”到“工作区”
git reset HEAD XXX

# 恢复所有“暂存文件”到“工作区”
git reset HEAD .
3.3.3 撤销本地仓库变更

已执行git commit,未执行git push

# 撤销“本地仓库”
git reset --soft 5f7024f

# 撤销“本地仓库”+“暂存区”
git reset --mixed 5f7024f

3.3.4 撤销远程仓库变更

已push到远程仓库的记录,进行撤销

(1)不生成撤销记录

# 重置到某个分支
git reset --hard 重置到的镜像ID

# 强推到远程(可能会收到分支保护限制)
 git push --force origin master 

强推后远程日志,不再存在之前强推前的日志,如需要还原到强推前的内容,可借助reflog日志进行回滚

# 查看操作日志reflog
git reflog

# 回滚到指定分支目录
git reset --hard 7167ac9
# 推送到远程分支
git push origin master

reflog如下

241323f (HEAD -> master, origin/master) HEAD@{0}: reset: moving to 241323f
7167ac9 HEAD@{1}: commit: xxx--new

(2)生成撤销记录

# 撤掉某次提交
git revert --no-edit 需要撤销掉的提交ID

# 提交
git push origin master

3.4 合并分支

3.4.1 合并

(1)pull合并

pull命令等于fetch+merage,建议此种方式:

# 合并远程分支
git pull origin dev1 --no-edit

# 推送到远程分支
git push

不加--no-edit参数,会打开一个编辑器,可以更改合并的提交信息:

**(2)merge合并 **

git merge origin/dev00
3.4.2 处理冲突

(1)查看冲突文件,进行冲突处理

合并分支的时候,经常会出现有冲突的情况,可通过git status查看当前合并情况:

$ git status
On branch master
Your branch is up to date with 'origin/master'.

You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)

Unmerged paths:
  (use "git add ..." to mark resolution)

        both modified:   ReadMe

no changes added to commit (use "git add" and/or "git commit -a")

此种情况,需要通过内置编辑器外置编辑器(如idea或vscode等),对冲突的文件进行处理:

(2)标记文件已处理

处理完毕冲突后,执行如下命令

# 处理冲突后,标记文件已经处理
git add .
git add -A
git add ...

之后查看git status,结果如下:

$ git status
On branch master
Your branch is up to date with 'origin/master'.

All conflicts fixed but you are still merging.
  (use "git commit" to conclude merge)

Changes to be committed:

        modified:   ReadMe

(3)提交合并

提交合并,commit 后不需要其他参数

git commit

默认情况下,会弹出编辑框,提示可更改此次合并的提交日志,如下:

如不想更改合并日志信息,直接commit,则可以在命令后增加参数--no-edit。命令如下:

git commit --no-edit

Merge branch 'dev00' of https://gitee.com/xxx/mytest3

# Conflicts:
#       ReadMe
#
# It looks like you may be committing a merge.
# If this is not correct, please remove the file
#       .git/MERGE_HEAD
# and try again.


# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch master
# Your branch is up to date with 'origin/master'.
#
# All conflicts fixed but you are still merging.
#
# Changes to be committed:
#       modified:   ReadMe
#

更改完毕(或不更改)后,关闭此文件即可,关闭文件后,提示如下内容:

$ git commit
[master 2339e32] Merge branch 'dev00' of https://gitee.com/xxx/mytest3

代表已经合并完毕。

(4)推送到远程分支

此时已经合并完毕,推送到远程分支即可:

git push

3.5 rebase命令

待完善。。。。。。

4 其他命令

4.1 加入到缓存区

# 所有"新增"文件和"删除"文件加入到暂存区【建议】
git add -A

# 所有“新增”文件加入到暂存区
git add .

# “指定”文件加入到暂存区
git add xxx xxx

4.2 pull+rebase

git pull的默认行为是git fetch + git merge

git pull --rebase则是git fetch + git rebase.

4.3 提交后补充提交

本地commit后,将新提交的,合并到上次提交中

# 提示打开更改的文件
git commit --amend

# 不提示打开更改的文件
git commit --amend --no-edit

提交后对应的原日志的日志id,会发生变动。建议本地仓库未推送到远程分支时,使用此种合并提交的方式。

4.4 去除rebase状态

(1)放弃当前rebase操作

git rebase --abort

(2)继续rebase

如果冲突已经解决,先add冲突文件,之后 git rebase --continue

git rebase --continue

你可能感兴趣的:(git命令整理)