Easton's Blog Easton's Blog
首页
  • 编程语言

    • Python
  • 框架

    • Django
  • Mdn (opens new window)
  • HTML
  • CSS
  • JavaScript
  • Mysql
  • PostgreSQL
  • Elasticsearch
  • MongoDB
  • Redis
  • 服务器命令
  • Docker
  • GIT
  • 摄影
  • 草稿
  • 归类方式

    • 分类
    • 标签
    • 归档
  • 关于博客

    • 博客教程
    • 友情链接
    • 关于
导航站
GitHub (opens new window)

Easton Yang

爱生活😊爱学习
首页
  • 编程语言

    • Python
  • 框架

    • Django
  • Mdn (opens new window)
  • HTML
  • CSS
  • JavaScript
  • Mysql
  • PostgreSQL
  • Elasticsearch
  • MongoDB
  • Redis
  • 服务器命令
  • Docker
  • GIT
  • 摄影
  • 草稿
  • 归类方式

    • 分类
    • 标签
    • 归档
  • 关于博客

    • 博客教程
    • 友情链接
    • 关于
导航站
GitHub (opens new window)
  • Git

    • Git基础知识
    • Git常用命令
      • 高频命令
        • mv
        • add
        • branch
        • checkout
        • commit
        • push
        • pull
        • tag
        • log/reflog
        • reset
        • merge
        • rm
        • stash
        • config
        • 作用区域
        • --system
        • --global
        • --local
        • config 命令
        • 常用的手动配置项
      • 其他命令
    • Git开发规范
    • Git各种回退
    • Git文件名大小写导致的坑
    • GitHub好玩的用法
  • 工具
  • Git
eastonyangxu
2023-05-09
目录

Git常用命令推荐

# 高频命令

# mv

# 重命名 a.py 为 A.py
git mv -f a.py A.py
1
2

# add

把工作区内容加入到暂存区,为下一次提交做准备。

# 添加指定的的单个文件
git add one.py

# 添加 当前目录及子目录下 所有新增或改动的文件
git add .

# 添加 当前目录及子目录下 以.py文件结尾的文件
git add *.py
1
2
3
4
5
6
7
8

# branch

分支相关的操作。

# 查看本地所有分支,及详情(-v)
git branch -v

# 查看远程所有分支(-r),及详情(-v)
git branch -rv

# 查看 本地和远程所有(-a)分支,及详情(-v)
git branch -av

# 创建新分支 new_branch (基于当前分支)
git branch new_branch

# 创建新分支 new_branch (基于指定 a 分支)
git branch new_branch a
git log a
git log new_branch # 可以看到 分支a 和 分支new_branch 的日志信息是一样的

# 删除分支 -d / -D(强制删除),没有merge的分支使用 -d 会报错。
git branch -d new_branch

# 修改分支名
git branch -m <old-branch-name> <new-branch-name>

# 本地分支关联远程分支
git branch --set-upstream-to origin/<branch-name>

# 基于标签建立分支,如果报错先执行:git fetch (同步最新的远程信息到本地)
git branch <new-branch> <tag-name>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

# checkout

切换分支等操作。

# 切换到 a 分支,如果 a 分支不存在会报错
git checkout a

# 新建并切换到 a 分支(基于当前分支),若果 a 分支已经存在会报错
git checkout -b a # 等同于 git branch a && git checkout a

# 新建/覆盖 并切换到 a 分支(基于当前分支),若果 a 分支已经存在会被当前分支覆盖(慎用)
git checkout -B a

# 基于本地 b 分支新建并切换到 a 分支,若果 a 分支已经存在会报错
git checkout -b a b

# 基于远程某个分支新建并切换到新分支,如果失败先执行:git fetch (同步最新的远程信息到本地)
git checkout -b <remote-branch-name> origin/<remote-branch-name>

# 抛弃暂存区(add 后)的修改(慎用)
git checkout -f

# 抛弃工作区所有修改(modified)的文件(慎用)
git checkout .
# 抛弃工作区指定修改(modified)的文件(慎用)
git checkout - <file-name>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# commit

提交。

# 提交 add 到暂存区的改动
git commit -m 'commit-message'

# 本次提交合入到上次提交中,本次提交会改变commit-id
git commit --amend
# 本次提交合入到上次提交中,本次提交会改变commit-id,新提交信息会覆盖上次的提交信息
git commit --amend -m '<commit-msg>'
1
2
3
4
5
6
7

# push

推送本地仓库到远程仓库。

# 推送当前分支 new_branch 到远程仓库 new_branch 分支
git push origin new_branch

# 强制推送(-f),会用本地分支覆盖远程分支(慎用)
git push -f origin new_branch

# 本地分支关联远程分支,关联以后在推送可以不用输入分支
git push --set-upstream origin new_branch
git push # 此时等同于 git push origin new_branch

# 删除远程分支(慎用,不要错删了别人的分支,可以去远程仓库页面中手动删除)
git push --delete origin <branch-name>
1
2
3
4
5
6
7
8
9
10
11
12

# pull

将远程仓库代码拉到本地仓库。最后会执行merge操作。

# 将远程分支 new_branch 拉到本地 当前 分支
git pull origin new_branch

# 强制拉(-f),会用远程分支覆盖本地分支(慎用)
git pull -f origin new_branch
1
2
3
4
5

# tag

标签相关操作,标签名 最好不要跟分支名 相同,防止部分操作有冲突。

# 为当前分支所在的提交记录打上轻量标签
git tag <lightweght-name>

# 为某次具体的提交记录打上轻量标签
git tag <lightweght-name> <commit SHA-1 value>

# 为当前分支所在的提交记录打上附注标签
git tag -a <anotated-name> -m <tag-message>

#列出所有的标签名
git tag

# 删除某个标签,本质上就是移除 .git/refs/tags/ 中对应的文件
git tag -d <tag-name>

# 显示标签对应提交记录的具体信息
git show <tag-name> # 或者 git log <tag-name>

# 推送某个标签到远程仓库
git push origin <tag-name>

# 推送所有标签到远程仓库
git push origin --tags

# 删除远程仓库中的某个标签(慎用)
git push --delete origin <tag-name>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

# log/reflog

查看日志信息

# 查看当前分支的历史提交信息
git log

# 查看指定分支的历史提交信息
git log <branch-name>

# 查看 当前分支 操作的日志信息,包括merge的过程
git reflog

# 查看 指定分支 操作的日志信息,包括merge的过程
git reflog <branch-name>
1
2
3
4
5
6
7
8
9
10
11

# reset

回滚相关操作

# --mixed(默认):恢复到工作区(add前)
# --soft:恢复到暂存区(commit前,add后)
# --merge:
# --hard:放弃 已提交和工作区的更新(modified的所有文件),新增的文件(未 add)不会放弃。
# --keep:放弃 已提交,保留当前工作区 新增/更新(如果更新的文件在已放弃的提交里面,会报错)

# 放弃修改,回退到上次提交
git reset --hard

# 恢复到工作区,add前
git reset --mixed HEAD^

# 回滚到指定提交commit前add后
git reset --soft <commit-id>

# 回滚到上上个版本,并且保留工作区的修改
git reset --keep HEAD~2

# 将当前分支与远程分支状态保持一致
git reset --hard origin/<branch-name>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# merge

合并分支

# 当前分支在master,合并 a 分支到master,
# 如果有冲突需要解决冲突,有冲突的文件前面有(both modified),解决冲突后重新提交
git merge a
1
2
3

# rm

删除相关操作,新增的文件(未 add)未被git跟踪,不能被操作。

# 删除文件,如果文件有更新会报错
git rm <file-name>

# 强制删除文件
git rm -f <file-name>

# 将文件恢复到工作区,add前
git rm --cached <file-name>

# 递归删除目录下的所有文件
git rm -r <dir-name>

# 将所有文件恢复到工作区,add前
git rm -r --cached .
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# stash

缓存相关操作

笔记

使用场景:在当前分支 branch1 修改了代码,但是临时有个问题需要切换到 branch2 修复紧急 bug, 这时就可以先 git add .(把所有改动加入到暂存区) 然后执行 git stash save 'stash-msg' (把改动加入到缓存区), 然后切换到 branch2 修改 bug,修改完 bug 以后切回到 branch1,然后执行 git stash pop (把改动恢复到工作区),然后继续工作即可。

# 查看缓存区列表
git stash list

# 查看缓存详细信息,查看最近一条记录
git stash show
# 查看指定(索引为2)
git stash show stash@{2}

# 把暂存区代码加入到缓存区
git stash save '<stash-msg>'

# 删除最后一条记录
git stash drop
# 删除指定(索引为1)
git stash drop stash@{1}

# 把暂存区代码恢复到工作区,并且删除暂存区该条记录,恢复最后一条
git stash pop
# 恢复指定一条(索引为2),并且删除缓存区该条记录
git stash pop stash@{2}
# 恢复但不删除最后一条记录
git stash apply
# 恢复但不删除指定一条(索引为2)
git stash apply stash@{2}

#清空缓存区所有记录
git stash clear
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

# config

git配置

# 作用区域

# --system

笔记

系统级配置文件含有系统里每位用户及他们所拥有的仓库的配置值。 其位置为 git 的安装目录下的/etc/gitconfig,即如果 git 的安装目录为D:\Git,则配置文件地址为D:\Git\etc\gitconfig。 优先度最低,其配置值可被全局级配置和本地级配置的值覆盖。一般我们很少会使用系统级的配置。

# 查看系统级配置
git config --system -l

# 编辑系统级配置
git config --system -e
1
2
3
4
5
# --global

笔记

全局级配置文件包含当前系统用户的拥有的仓库配置值,每个系统用户的全局级配置相互隔离。 全局级别的配置默认保存在当前系统用户的主目录下的 .gitconfig 文件内。 Windows 通常保存在C:\Users\xxxx\.gitconfig,Linux 为/home/xxx/.gitconfig。 优先度比系统级高,可覆盖系统级的配置值。全局级的配置平时使用得比较多,比如设置账号和邮箱

# 查看全局配置
git config --global -l

# 编辑全局配置
git config --global -e
1
2
3
4
5
# --local

笔记

本地级别的配置保存在当前仓库下面的 .git\config 文件内,通常 .git 文件夹是隐藏的, Window 要在文件管理器的文件夹选项中打开显示隐藏文件夹才可以看到。这里的配置仅对当前仓库有效,不影响其他的仓库。 优先级别最高,如果全局级别或系统级别的配置里出现了同一配置项,则以本地级别配置内容为准

# 查看本仓库配置
git config --local -l

# 编辑本仓库配置
git config --local -e
1
2
3
4
5

# config 命令

# --add 新增/更新 配置,如果不选择作用区域,默认添加到 --local 区域
git config --global --add user.name "my_name" # 全局中添加 user.name=my_name 的配置

# 显示指定配置项的值
git config user.name

# --unset 删除配置,如果不选择作用区域,默认添加到 --local 区域
git config --global --unset user.name # 删除全局中的 user.name 配置

# -e 编辑配置,如果不选择作用区域,默认添加到 --local 区域
git config -e # 编辑本地仓库配置

# -l 查看配置列表,如果不选择作用区域,默认显示所有
git config -l # 把所有配置输出到终端
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 常用的手动配置项

#配置用户名和邮件
git config --global user.name "eastonyangxu"
git config --global user.email "easton_00@163.com"
#windows支持长路径,要不然代码路径太长会报错
git config --global core.longpaths true
#windows默认下载git代码,没有显示链接link属性问题
git config --global core.symlinks true
#windows下载代码编码格式,不会进行转换,提交不转换(默认安装会转换成windows)
git config --global core.autocrlf false
# Git 默认文件名不区分大小写,设置为 false 以后才会区分大小写。设置区域在当前项目即可(默认就是当前项目区域)
git config core.ignorecase false
# Git Base 支持显示中文,如果乱码了需要设置字符编码为 utf-8。我这里没有乱码所以先不给出解决方案,可以在网上查找。
git config --global core.quotepath false
1
2
3
4
5
6
7
8
9
10
11
12
13

# 其他命令

# 需要查看某个命令的文档,例如查看reset的用法
git reset -h

# 克隆远程仓库到本低
git clone <url>
# 克隆指定分支到本地
git clone -b <branch-name> <url>

# 初始化本地仓库
git init

# 查看本地工作区状态
git status

# 更新远程分支信息到本地
git fetch
# 更新远程某一个分支信息到本地
git fetch origin <branch-name>

# 拉取某一个提交到本分支
git cherry-pick <commit-id>

# 合并其他分支到本分支
git merge <branch-name>

# 撤销工作区代码
git restore .

# 查看修改的代码
git diff
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#Git
上次更新: 2023/05/12, 18:12:03
Git基础知识
Git开发规范

← Git基础知识 Git开发规范→

最近更新
01
攻略制作要点
07-18
02
摄影主题拍摄
07-18
03
延时摄影剧本
07-18
更多文章>
Theme by Vdoing | Copyright © 2023-2024 Easton Yang | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式