git
git配置
三个级别的配置文件:
- /etc/gitconfig,系统上每一个用户的通用配置,使用 --system 选项。
- ~/.gitconfig 或 ~/.config/git/config,只针对当前用户,使用 --global 选项。
- .git/config,当前使用的仓库。
每一个级别覆盖上一级别的配置,比如说.git/config的配置变量会覆盖 /etc/gitconfig 中的配置变量。
# 用户名、邮箱
git config --global user.name "name"
git config --global user.email "email"
# 文本编辑器,默认为vim
git config --global core.editor emacs
# 检查 Git 的某一项配置
git config <key>
git config user.name
# 列出所有配置信息
git config --list
存储库
- 本地创建
在 gitee 创建 git 仓库:edgetest
# 初始化本地存储库
mkdir edgetest
cd edgetest
git init
# 添加远程库,origin为默认的远程库名字
git remote add origin http
# 第一次使用ssh,生成.ssh/id_rsa.pu添加到gitee
git remote add origin ssh
ssh-keygen -t rsa -C "email"
# 删除远程库
git remote rm origin
# 查看远程库,-v 显示详细的url
git remote
git remote -v
# 添加,提交
git add <filename> / git add .
git commit -m "message"
# or
git commit -a -m "message"
# 如果远程库不为空
git pull --rebase origin master
# push到远程,-u将origin仓库的master
# 设置为本地仓库当前分支的upstream
git push [remote-name] [branch-name]
git push -u origin master
- clone
git clone xx
命令
# 查看提交历史记录
git log
# 最近两次,-p查看提交所带来的改动
git log -p -2 / git log -2
# 查看某一次提交的详细信息
git show sha1-ID
# log
git log --pretty=oneline/brief/short
# 查看状态
git status
git status -s / git status --short
# 状态
?? 未暂存
A 已add
MM 左边的是修改了并放入了暂存区,右边的是修改了但是还没放入暂存区
D 已从本地存储库中删除
### git diff
# working和暂存区域快照(staging)之间的差别
git diff [filename]
# 仅仅比较统计信息
git diff --stat
# 已经暂存起来的文件(staged)和上次提交时的快照之间(HEAD)的差异
git diff --cached / git diff --staged
# working和HEAD的差别
git diff HEAD []
# working和master分支
git diff master []
# 两个历史版本之间的差异
git diff <SHA1> <SHA2>
git mv <filename> <filename>
git rm <filename>
# 命令历史
git reflog
# 不想提交一直在做的工作,先去做别的
# 可以把当前工作的改变隐藏起来
# 存起来
git stash
# 查看已存在更改的列表
git stash list
# 从堆栈中删除更改并将其放置在当前工作目录中
git stash pop
# 恢复后,stash内容不删除,用git stash drop来删除
git stash apply <stash name>
# 删除本地文件,找回
# 撤销修改
git checkout <filename>
# 从分段区域撤消更改
git checkout head -- <filename>
# .git/refs/heads/master文件存储HEAD指针的提交ID
# unstage
git restore --staged <file>
git reset HEAD <file>
# 丢弃工作区的修改
git checkout -- filename
# 删除文件
git rm filename
# 撤回删除
git checkout -- filename
## 分支
# 查看分支
git branch
# 创建一个新的分支
git branch <branch name>
# 切换
git checkout <branch name> / git switch <branch name>
# 创建and切换
git checkout -b <branch name> / git switch -c <branch name>
git checkout -b <branch name> origin/<branch>
# 删除
git branch -D <branch name>
# 重命名
git branch -m old new
# 切换到上一个
git branch -
# 同时显示本地仓库和远程仓库的分支信息
git branch -a
# reset
git reset HEAD <file>
git reset --hard HEAD^
git reset --hard HEAD~2
git reset --hard "commit ID"
## tag
# tag head
git tag -a 'name' -m 'message' HEAD
# tag commit
git tag -a 'name' -m 'message' SHA1-ID
# 将标签推送到远程存储库
git push origin tag <tag name>
# list
git tag -l
# delete
git tag -d <tag name>
# 创建最新提交的修补程序
git format-patch [commit id]
# 命令在当前工作目录中创建.patch文件
# 使用这个补丁来修改文件
# 修改本地文件而不创建提交
git apply <patch name>
# 修改文件并创建提交
git am <patch name>
# 对上一次的提交进行修改时
git commit –amend
# 将分支dev合并到当前分支中,自动进行新的提交
git merge <branch name>
# 压缩历史
git rebase -i HEAD^2