Git操作指令汇总
配置操作指令
# 配置用户信息
git config --global user.name "XXX"
git config --global user.email "XXX@XX.com"
# 设置git使用的默认的文本编辑器
git config --global core.editor vscode
# 差异分析工具
git config --global merge.tool vimdiff
# 查看配置信息
git config --list
创建版本库
# 在当前目录创建版本库
git init
# 在指定目录创建版本库
git init <directory>
修改文件
# 添加到暂存区
git add xxx.js xxx.md
# 添加所有文件
git add .
# 查看文件是否有未提交的
git status
# 比较文件
git diff xxx.js
# 尚未缓存的改动
git diff
# 缓存的改动
git diff --cached
# 查看已缓存的和未缓存的所有改动
git diff HEAD
# 显示摘要,而不是整个diff改动
git diff --stat
# 提交文件
git commit -m "提交备注"
# 合并写法 省略add步骤
git commit -am "提交备注"
# 取消已缓存的内容
git reset HEAD
# 取消已缓存的某个文件
git reset HEAD xxx.js
# 退回到某个版本
git reset --mixed <commit>
# 移除某个文件
git rm <file>
# 移除之前提交到暂存区的文件
git rm -f <file>
# 把文件从暂存区移除但是不影响工作目录的文件
git rm --cached <file>
# 递归删除 可以删除一个文件夹中的所有文件和目录
git rm -r <目录名>
# 移动 重命名一个文件
git mv <file1> <file2>
# 撤销操作
# 撤销前一次的操作
git revert HEAD
# 撤销前一次提交操作,并以默认的 Revert "xxx" 为提交原因
git revert HEAD --no-edit
# 撤销多次操作
git revert -n HEAD
拉取代码
# 在当前目录拉取代码
git clone [git仓库地址]
# 在指定目录拉取代码
git clone [git仓库地址] <directory>
分支管理
# 创建分支
git branch <branchname>
# 切换分支
git checkout <branchname>
# 重命名分支
git branch -m <branchname> <newbranchname>
# 合并分支
git merge
# 列出分支
git branch
# 删除分支
git branch -d <branchname>
# 合并分支的一条或几条提交记录到当前分支末梢
git cherry-pick 170a305
查看提交历史
# 查看提交历史
git log
# 查看历史记录的简洁版
git log --oneline
# 查看历史中的分支情况 (使用--graph参数) 显示为拓扑图结构
git log --graph --oneline
# 逆向显示日志(使用--reverse参数)
git log --reverse --oneline
# 查找指定用户的提交日志 (使用--author参数)
git log --autor liushijing3
# 指定日期 (使用--since和--before 或--until 和--after)
git log --oneline --before={3.weeks.ago} --after={2010-04-18}
创建特有标签
# 创建特殊的tag
git tag -a <tagname> -m "标签备注信息"
远程仓库
配置远程仓库和本地的连接:
# 添加远程仓库(可以使用一个简短的名字以便以后调用)
git remote add [shortname] [url]
# 查看当前的远程库
git remote
# 查看每个别名的实际链接
git remote -v
# 从远程仓库下载分支与数据
git fetch
# 从远端仓库提取数据并尝试合并到当前分支
git merge
# 推送分支到远程仓库中
git push [alias] [branch]
# 例如:
git push origin master
# 强制提交(使用--f参数)
git push origin master --f
# 删除远程仓库
git remote rm [shortname]
工作进度栈
把正在开发过程中的进度保存到栈中,然后可以先发布昨天测试的代码。
# 把工作进度入栈
git stash
# 查看栈中的列表
git stash list
# 显示栈中的一条记录
git stash show stash@{0}
# 移除栈中的一条记录
git stash drop stash@{0}
# 移除栈中的最新工作进度
git stash pop
# 从栈中检出其中一条记录,但不从栈中移除
git stash apply stash@{0}
# 把当前栈中最近一次记录检出并创建一个新分支
git stash branch new_branch
# 清空栈中的所有记录
git stash clear
# 为当前修改或删除的文件创建一个自定义的栈并返回一个 ID,此时并未真正存储到栈里
git stash create
# 将 create 方法里返回的 ID 放到 store 后面,此时在栈里真正创建了一个记录,但当前修改或删除的文件并未从工作区移除
git stash store xxxxxx