常用命令
# 创建一个本地仓库
git init
# 查看git状态
git status
# 创建ssh key
ssh-keygen -t rsa -C <email>
# 配置ssh
ssh-keygen -t rsa
# 查看远程库信息
git remote <-v>
# 关联远程仓库
git remote add origin <url>
# 删除本地指定的远程地址
git remote remove origin
# 推送到远程仓库 [-u 关联]
git push -u origin master
# 推送当前分支,并在远程创建当前分支
git push --set-upstream origin dev
# 从远程克隆到本地
git clone -b <指定分支名> <远程仓库地址> <本地仓库名称>
# 将文件添加到暂存区
git add <file-name>
# 撤销工作区的更新
git restore <file-name>
# 撤销暂存区的内容
git restore --staged <file-name>
# 将暂存区的内容提交
git commit -m <更新说明>
# 删除文件
git rm <file-name>
# 删除远程文件,不删除本地文件
git rm -r --cached <file-name>
git commit -m <remark>
git push
# 查看当前分支操作记录
git log --pretty=oneline
# 查看所有分支的操作记录
git reflog
# 查看分支合并情况
git log --graph --pretty=oneline --abbrev-commit
# 回滚到指定版本
git reset --hard <commit id>
# 拉取远程代码,并直接与本地合并
git pull
git pull <远程主机名> <远程分支名>:<本地分支名>
# 将远程主机的最新内容拉到本地,不进行合并
git fetch origin master
# 获取最新代码到本地 ,并在master下面创建master1
git fetch origin master:master1
# 删除暂存区文件
git rm -r --cached .
# 统计文件改动
git diff --stat master origin/master
git diff <local branch> <remote>/<remote branch>
# 比较本地分支与git 主分支差异情况
git diff <local branch> <remote>/<remote branch>
# 本地与远程的差集 :(显示远程有而本地没有的commit信息)
git log master..origin/master
- git add -A 提交所有变化
- git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
- git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件
branch-分支相关
- 主分支
- master分支:存放随时可供生产环境中的部署的代码
- develop分支:存放当前最新开发成果的分支,当代码足够稳定时可以合并到master分支上去。
- 辅助分支
- feature分支:开发新功能使用,最终合并到develop分支或抛弃掉
- release分支:做小的缺陷修正、准备发布版本所需的各项说明信息
- hotfix分支:代码的紧急修复工作
# 创建分支
git branch dev
# 本地分支重命名
git branch -m <oldbranch> <newbranch>
# 切换分支
git checkout dev
# 创建并切换分支
git checkout -b dev
# 删除分支
git branch -d dev
# 强制删除未合并的分支
git branch -D dev
# 查看本地分支
git branch
# 查看远程分支
git branch -r
# 创建本地和远程分支对应的分支
git checkout -b <branch-name> origin/<branch-name>
# 查看本地和远程的所有分支
git branch -a
# 本地分支和远程分支创建链接
git branch --set-upstream branch-name origin/branch-name
# 合并分支
git merge dev <--no-ff>
# 分支合并时有冲突,中止合并
git merge --abort
# 手动解决冲突后,可通过将冲突文件添加到暂存区告诉git,冲突已解决
git add <file-name>
git commit -m <remark>
# 使用可视化工具解决冲突
git mergetool
stash-工作快照
# 为当前分支创建快照
git stash save <save message>
# 查看已保存的工作快照
git stash list
# 查看改动信息
git stash show stash@{$num} -p
# 恢复指定工作快照内容
git stash apply stash@{$num}
# 删除工作快照
git stash drop stash@{$num}
# 恢复指定工作快照内容,并删除改工作快照
git stash pop stash@{$num}
# 删除所有工作快照
git stash clear
tag-标签相关
注意,标签不是按时间顺序列出,而是按字母排序的。
# 创建标签
git tag <-a <tag-name>> <-m <tag-desc>> <commit id>
# 查看本地all标签 --list
git tag -l
# 查看远程all标签
git ls-remote --tags origin
# 删除标签
git tag -d <tag-name>
# 查看指定标签信息
git show <tag-name>
# 推送本地标签到远程
git push origin <tag-name>
# 一次性推送全部尚未推送到远程的标签
git push origin --tags
# 删除远程标签
git push origin :<tag-name>
# 切换标签
git checkout <tag-name>
alias-别名相关
- 每个仓库的 Git 配置文件都放在.git/config 文件中
- global 位置在用户主目录下的一个隐藏文件.gitconfig
# 设置命令别名
git config --global alias.<自定义别名> <具体命令>
# 配置一个 git last,让其显示最后一次提交信息
git config --global alias.last 'log -1'
# log
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
# co 表示 checkout,ci 表示 commit,br 表示 branch
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch
config-配置相关
# 查看Git配置 --list (依次是系统级别、用户级别、仓库级别)
git config -l
# 查看仓库配置(切换到具体目录下)
git config --local -l
# 查看用户配置
git config --global -l
# 查看系统配置
git config --system -l
# 编辑配置文件 --local --global --system
git config --local -e
# 设置用户邮箱
git config --global user.name <username>
git config --global user.email <email>
# 配置全局字符集编码
git config --global i18n.commitencoding utf-8
git config --global i18n.logoutputencoding utf-8
export LESSCHARSET=utf-8
# 配置全局不自动转换换行符
git config --global core.autocrlf false
# 设置能检测文件名大小写
git config --global core.ignorecase false