git - 命令速查
常用命令记录,速查速记...
初始化仓库提示命令
创建新版本库
git clone https://gitlab.xxx.com/test/xxx.git
touch README.md
git add README.md
git commit -m "add README"
项目已存在
cd existing_folder
git init
git remote add origin https://gitlab.xxx.com/test/xxx.git
git add .
git commit -m "Initial commit"
已存在版本库
cd existing_repo
git remote rename origin old-origin
git remote add origin https://gitlab.joyame.com/test/sixdu_u2.git
提交本地仓库后撤销
# 查看提交记录
$ git log
# 回退到指定版本
$ git reset --hard <commit-id>
全局配置
# --global 参数:表示机器上所有的仓库都会使用这个配置
# 设置全局用户名和邮箱
# 因为 git 是分布式版本控制系统,机器需要自报家门
$ git config --global user.name "Your Name"
$ git config --global user.email "emai@example.com"
# 设置 git 命令行颜色
$ git config --global color.ui true
# 配置别名
# https://www.liaoxuefeng.com/wiki/896043488029600/898732837407424
$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
# 忽略特殊文件
# https://www.liaoxuefeng.com/wiki/896043488029600/900004590234208
本地仓库
创建本地仓库
# 创建本地目录
$ mkdir git_notes
$ cd git_notes
# 初始化目录
# 该目录下会自动创建 .git 隐藏目录
$ git init
$ ls -al
.git
提交文件到本地仓库
# 新建文件
$ cd git_notes
$ echo "git notes" > readme.md
# 1. 提交暂存区
# 添加单个文件到本地仓库
$ git add readme.md
# 添加目录下所有文件到本地仓库
$ git add .
# 2. 提交到分支
# 将暂存区的所有文件提交到当前分支
$ git commit -m "first commit readme.md"
其他命令
# 查看状态比如当前目录下文件是否添加仓库,是否提交等等
$ git status
# 查看文件最新修改的内容与之前版本的不同
$ git diff readme.md
# 查看所有提交记录
# 显示版本号、分支、提交的备注信息、提交人、日期
$ git log
# 仅显示版本号、分支、提交的备注信息
$ git log --pretty=oneline
# log 页面,按 q 返回到命令行
# 查看历史命令,通常用来查看未来版本号
$ git reflog
撤销修改
# 将文件恢复到最近一次 add 或 commit 的状态
# -- 代表当前分支
$ git checkout -- readme.md
删除文件
$ git rm readme.md
$ git commit -m "remove readme.md"
回退版本
# 回退上一版本
$ git reset --hard HEAD^
# 回退上上个版本
$ git reset --hard HEAD^^
# 回退到前 100 个版本
$ git reset --hard HEAD~100
# 回退到指定版本,commit_version 通过 git log 查看
# 版本号不写全也可以,多写几位保证唯一
$ git reset --hard {commit_version}
远程仓库
配置通过 ssh 连接远程仓库(使用 https 可以忽略)
# ssh 速度快,https 速度慢且需要输入口令
# 1. 创建 SSH Key
$ cd ~/.ssh
$ ssh-keygen -t rsa -C "lan_yangbi@163.com"
# 一路回车,得到公钥和私钥
$ ll
id_rsa
id_rsa.pub
# 2. 将公钥信息配置到 github
# 进入 github 页面 -> 点击头像 -> settings -> SSH and GPG keys -> SSH keys -> New SSH key
# Title:随意填写
# Key:从 id_rsa.pub 内复制粘贴过来
# 点击 Add SSH key
# 配置好之后,就可以向 github 提交
克隆仓库
$ git clone git@github.com:lanyangbi/lanyangbi.github.io.git
关联远程仓库
# orgin 代表的是远程仓库,这是默认叫法
$ git remote add origin git@github.com:lanyangbi/lanyangbi.github.io.git
# 查看远程仓库
$ git remote
origin
# 查看详细信息
$ git remote -v
origin https://github.com/lanyangbi/lanyangbi.blog.git (fetch)
origin https://github.com/lanyangbi/lanyangbi.blog.git (push)
# 取消关联
$ git remote rm origin
提交内容到远程仓库
# 首次提交时加上 -u 代表关联分支,后续就可以不用了
$ git push -u orgin master
$ git push orgin master
查看当前分支
# * 代表当前分支
$ git branch
* dev
master
# 查看全部分支,q 退出
$ git branch -a
创建并切换分支
# 创建分支后切换
$ git branch dev
$ git checkout dev
# 也可以使用一条命令 -b 表示创建并切换到新分支
$ git checkout -b dev
合并指定分支到当前分支
# 当在 dev 有文件修改后
# 需要先切换到 master 分支然后合并
$ git checkout master
$ git merge dev
删除分支
# 当分支合并到 master 后,分支就可以删除啦
$ git branch -d dev
冲突解决
保存工作区
$ git stash
Saved working directory and index state WIP on dev: f52c633 add merge
# 查看保存的工作区
$ git stash list
# 恢复工作区
$ git stash apply
# 恢复后,需要手动删除该工作区
$ git stash drop
# 恢复的同时,删除工作区
$ git stash pop
# 可以保存多个 stash,恢复指定 stash
$ git stash apply stash@{0}
复制特定提交到当前分支
# 可以将修改 bug 后提交的修改复制到当前开发分支,避免重复劳动
$ git cherry-pick {commit_version}
强制删除未合并过的分支
$ git branch -D dev
创建标签
# 创建标签
$ git tag v1.0
# 对指定 commit 打标签
$ git tag v1.1 f52c633
# 创建带有说明的标签
$ git tag -a v1.2 -m "version 1.2 released" 1094adb
查看标签
# 查看标签
$ git tag
# 查看标签信息
$ git show v1.0
推送标签到远程仓库
#推送指定标签
$ git push orgin v1.0
# 推送全部标签
$ git push orgin --tags
删除标签
# 删除本地标签
$ git tag -d v1.0
# 删除远程仓库标签
$ git push orgin :refs/tags/v1.0