git基本使用总结

git基本操作

配置用户信息

1
2
git config --global user.name "Your Name"
git config --global user.email "xxxx@xxx.com"
1
git config --global init.defaultBranch main # 设置默认分支名

github默认分支名为main,所以设置默认分支名为main
这样在使用git init初始化仓库时,分支名就是main了,而不是master

配置git代理

1
2
git config --global http.proxy http://127.0.0.1:10808   # 10808为代理端口
git config --global https.proxy http://127.0.0.1:10808

socks5代理

1
2
git config --global http.proxy socks5://127.0.0.1:10809   # 10809为代理端口
git config --global https.proxy socks5://127.0.0.1:10809

取消代理
1
2
git config --global --unset http.proxy
git config --global --unset https.proxy

设置git默认编辑器

1
git config --global core.editor vim  # vim为编辑器
1
2
git config --global core.editor "code --wait" # vscode为编辑器
git config --global core.editor "code --wait --new-window" # vscode为编辑器,新窗口打开
1
git config --global --unset core.editor # 取消编辑器
1
2
git config --global --edit  # 查看使用的编辑器,使用什么打开什么便是默认编辑器
git config --local --edit
1
git config --global --list  
1
2
3
4
5
6
7
[gui]
[user]
name = ttiee
email = xxxxx
//在这里添加编辑器的配置
[core]
editor = code --wait //vscode

连接远程仓库

1
ssh-keygen -t rsa -C "Your Email"

复制id_rsa.pub中的内容到github的SSH and GPG keys中

1
2
3
4
5
6
7
8
# create a new repository on the command line
echo "# test" >> README.md
git init # 初始化git仓库
git add README.md # 添加文件到暂存区
git commit -m "first commit" # 提交到本地仓库
git branch -M main # 修改分支名
git remote add origin git@github.com:ttiee/test.git # origin为远程仓库名,ttiee为自己的github用户名,test为自己的仓库名
git push -u origin main # 推送到远程仓库
1
2
3
4
# …or push an existing repository from the command line
git remote add origin git@github.com:ttiee/test.git # 连接远程仓库
git branch -M main # 修改分支名
git push -u origin main # 推送到远程仓库

重新使.gitignore生效

1
2
3
4
git rm -r --cached .  # 删除本地缓存
git add . # 添加所有文件到暂存区
git commit -m "update .gitignore" # 提交到本地仓库
git push -u origin main # 推送到远程仓库

tag相关操作

1
2
3
4
5
6
7
git tag -a v1.0 -m "version 1.0"  # 创建标签
git tag # 查看标签
git show v1.0 # 查看标签信息
git tag -d v1.0 # 删除标签
git push origin v1.0 # 推送标签到远程
git push origin --tags # 推送全部标签到远程
git push origin :refs/tags/v1.0 # 删除远程标签\
1
git push origin --delete v1.0    # 删除远程标签 (2)

分支相关操作

1
2
3
4
5
6
7
git branch dev  # 创建分支
git checkout dev # 切换分支
git checkout -b dev # 创建并切换分支
git branch # 查看分支
git merge dev # 合并分支
git branch -d dev # 删除分支
git log --graph # 查看分支合并图

远程仓库相关操作

1
2
3
git remote -v   # 查看远程库信息
git remote add origin <url> # 添加远程仓库
git push -u origin master # 将本地仓库推送到远程仓库

远程拉取

1
2
git pull    # 拉取远程仓库
git pull origin master # 拉取远程仓库master分支

撤销修改

1
2
git checkout -- <file>  # 撤销修改
git reset HEAD <file> # 撤销暂存区修改

其他git知识

gitignore

生成.gitignore文件

1
touch .gitignore

1
2
3
4
5
6
# 此为注释 – 将被 Git 忽略
*.a # 忽略所有 .a 结尾的文件
!lib.a # 但 lib.a 除外
/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/ # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

gitmessage

创建.gitmessage文件

1
touch .gitmessage

1
git config --global commit.template .gitmessage  # 全局配置gitmessage
1
git config commit.template .gitmessage    # 当前仓库配置gitmessage

修改.gitmessage文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# <类型>:(影响范围) <主题> <JIRA?>

# <body>

# <footer>

# 类型字段包含:
# feat: 新功能 (feature )
# fix: 修复bug
# doc: 文档 (documentation )
# style: 格式化 ESLint调整等 (不影响代码运行的变动 )
# refactor: 重构 (即不是新增功能,也不是修改bug的代码变动 )
# test: 增加测试
# 影响范围:
# 用于说明 commit 影响的范围,比如修改的登录页、账户中心页等
# 主题:
# commit目的的简短描述,不超过50个字符
# JIRA:
# 如果有对应的jira 请附上jira号
# Body 部分是对本次 commit 的详细描述,可以分成多行
# Footer用来关闭 Issue或以BREAKING CHANGE开头,后面是对变动的描述、
# 以及变动理由和迁移方法

git commit时会自动打开提交信息模板,按照模板填写
保存退出后,git commit会自动使用模板中的信息
不用每次git commit -m “message”了

1
2
3
4
5
6
7

### git submodule

```bash
git submodule add <url> <path> # 添加子模块
git submodule init # 初始化子模块
git submodule update # 更新子模块

git配置别名

1
2
3
4
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch

git配置颜色

1
git config --global color.ui true

git配置忽略文件大小写

1
git config --global core.ignorecase false

git配置文件路径

1
git config --global core.excludesfile ~/.gitignore

git配置换行符

1
git config --global core.autocrlf false

git配置编辑器

1
git config --global core.editor vim

git配置差异分析工具

1
git config --global merge.tool vimdiff

git基本命令

git init

初始化一个git仓库,生成.git文件夹

1
git init

git add

将文件添加到暂存区

1
git add <file>

git commit

将暂存区的文件提交到本地仓库

1
git commit -m "message"

1
git commit -a -m "message"  # 跳过暂存区直接提交

git status

查看当前仓库状态

1
git status

git diff

查看文件修改内容

1
git diff <file>

git log

查看提交日志

1
git log

git reset

回退版本

1
git reset --hard HEAD^

git reflog

查看命令历史

1
git reflog

git checkout

撤销修改

1
git checkout -- <file>

git rm

删除文件

1
git rm <file>

git remote

添加远程仓库

1
git remote add origin <url>

git push

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

1
git push -u origin master

git clone

克隆远程仓库

1
git clone <url>

git branch

查看分支

1
git branch

git checkout

切换分支

1
git checkout <branch>

git checkout -b

创建并切换分支

1
git checkout -b <branch>

git merge

合并某分支到当前分支

1
git merge <branch>

git branch -d

删除分支

1
git branch -d <branch>

git log —graph

查看分支合并图

1
git log --graph

git stash

保存工作现场

1
git stash

git stash list

查看工作现场列表

1
git stash list

git stash apply

恢复工作现场

1
git stash apply

git stash drop

删除工作现场

1
git stash drop

git stash pop

恢复并删除工作现场

1
git stash pop

git remote -v

查看远程库信息

1
git remote -v

git push origin —delete

删除远程分支

1
git push origin --delete <branch>

git tag

创建标签

1
git tag <tagname>

git tag -a

创建带有说明的标签

1
2

git tag -a <tagname> -m "message"

git tag -s

用PGP签名标签

1
git tag -s <tagname> -m "message"

git tag -d

删除标签

1
git tag -d <tagname>

git push origin

推送标签到远程

1
git push origin <tagname>

git push origin —tags

一次性推送全部尚未推送到远程的本地标签

1
git push origin --tags

git push origin :refs/tags/

删除远程标签

1
git push origin :refs/tags/<tagname>

git config —global alias.

配置别名

1
git config --global alias.<aliasname> <command>