git常用命令

1. git 安装

  1. 查看git版本
1
git --version
  1. 配置
1
git config --global user.name "bobo"
  • 省略(Local):本地配置,只对本地仓库有效
  • global:全局配置,所有仓库生效
  • system:系统配置,对所有用户生效

2. 创建仓库

两种方式

1
2
3
4
git init
git init my-repo

git clone git地址

3. 工作区域和文件状态

  • 工作区

  • 暂存区

  • 本地仓库

  • 未跟踪 Untrack

  • 未修改 Unmodified

  • 已修改 Modified

  • 已暂存 Staged

git ls-files

  • 这个命令用于列出当前 Git 仓库中的所有文件。
  • 它可以带有不同的选项来显示不同的文件列表,例如:
    • git ls-files:列出所有被跟踪的文件。
    • git ls-files --others:列出所有未被跟踪的文件。
    • git ls-files --modified:列出所有被修改但尚未暂存的文件。
    • git ls-files --deleted:列出所有被删除但尚未提交的文件。
  • 这个命令通常用于查看当前工作目录中哪些文件被 Git 跟踪。

git reflog

  • 这个命令用于显示你的 HEAD(当前分支的最新提交)的变化历史。
  • reflog 记录了 HEAD 的移动,包括提交、分支切换、变基等操作。
  • 它可以帮助用户追踪 HEAD 的历史,即使某些提交已经被变基或合并操作修改过。
  • 输出通常包括操作的哈希值、作者、日期和操作的简短描述。
  • 这个命令对于调试、恢复丢失的提交或者理解 HEAD 的历史变化非常有用。

4. 添加和提交文件

  • 查看仓库的状态
    • git status

  • 添加到暂存区
    • git add
    • git add . 提交本目录下所有文件

  • 提交
    • git commit

  • 查看提交记录
    • git log --oneline
    • git log

一次性添加暂存和提交,-a

1
git commit -a -m 'feat:1'

5. 回退版本

1
2
3
git reset --soft
git reset --hard
git reset --mixed

Soft参数表示回退到某一个版本,并且保留工作区和暂存区的所有修改内容

hard参数表示回退到某一个版本,并且丢弃工作区和暂存区的所有修改内容

mixed参数表示回退到某一个版本,并且只保留工作区的修改内容,而丢弃暂存区的修改内容

6. 查看差异

1
git diff 
  • 查看工作区、暂存区、本地仓库之间的差异默认比较工作区和暂存区的内容
1
git diff HEAD
  • 比较工作区和版本库
1
git diff --cache
  • 比较暂存区和版本库
1
git diff 提交id1 提交id2
  • 比较两个版本之间的差异

HEAD指向分支的最新提交节点

1
git diff HEAD~ HEAD
  • 最新和上一个的差异
  • HEAD~ 表示上一个版本
  • HEAD^ 表示上一个版本
  • HEAD~2 表示HEAD之前的两个版本
1
git diff HEAD~ HEAD file1.txt
  • 指定查看某一个文件的差异
1
git diff <branch_name1> <branch_name2>
  • 比较分支之间的差异

7. 删除文件

  1. 先删除本地工作区文件,再提交暂存
1
rm file1.txt
  • 从工作区删除文件
1
git add .
  • 删除暂存区文件
  1. git rm
1
git rm file2.txt

工作区和暂存区都删除了

8. 忽略文件

应该忽略的文件

  • 系统或者软件自动生成的文件
  • 编译产生的中间文件和结果文件
  • 运行时生成日志文件、缓存文件、临时文件
  • 涉及身份、密码、口令、秘钥等敏感信息文件

将文件名写入.gitignore,即可忽略

修改.gitignore文件,忽略所有的log文件,忽略temp文件夹(以斜线结尾)

1
2
*.log
temp/
  • 空行或者以#开头的行会被Git忽略。一般空行用于可读性的分隔,#一般用作注释
  • 使用标准的Glob模式匹配,例如:
    • 星号*通配任意个字符
    • 问号?匹配单个字符
    • 中括号[]表示匹配列表中的单个字符,比如:[abc]表示ab/c
    • 两个星号*表示匹配任意的中间目录
    • 中括号可以使用短中线连接,比如:[0-9]表示任意一位数字,[a-z]表示任意一位小写字母
    • 感叹号!表示取反

9. 远程仓库

本地仓库推送远程仓库

1
git push

添加远程仓库和本地仓库关联起来

1
2
git remote add orgin git@github.com:xxxx/reponame.git
git push -u origin main

查看我们当前仓库所对应的远程仓库的别名和地址

1
git remote -v

拉取远程仓库,自动执行一次合并操作

1
git pull

fetch只获取修改,不会自动合并

1
git fetch

10. 分支

  1. 查看分支
1
git branch
  1. 创建分支
1
git branch dev
  1. 切换分支
1
git checkout dev

可能存在问题,改为

1
git switch dev
  1. 在main分支下,合并dev
1
git merge dev
  1. 查看分支图
1
git log --graph --oneline --decorate --all
  1. 删除已经合并的分支
1
git branch -d dev
  1. 删除没有合并的分支
1
git branch -D dev

11. 合并冲突

查看冲突内容

1
git diff

编辑冲突的文件,再提交,就自动合并了。

如果不想合并,使用

1
git merge --abort

12. 回退和rebase

在main上执行

1
git rebase

main分支接到dev分支上

merge:

  • 优点:不会破坏原分支的提交历史,方便回溯和查看。
  • 缺点:会产生额外的提交节点,分支图比较复杂。

rebase:

  • 优点:不会新增额外的提交记录,形成线性历史,比较直观和干净;
  • 缺点:会改变提交历史,改变了当前分支branch out的节点。避免在共享分支使用。
github flow

git常用命令
http://binbo-zappy.github.io/2024/12/16/hexo/git/
作者
Binbo
发布于
2024年12月16日
许可协议