Git是目前世界上最先进的分布式版本控制系统(没有之一)。在日常开发中使用到的git操作命令挺多的,在此记录一下,以备忘却之需。

一、常用操作命令
- 查看修改内容
- 查看提交的版本和提交ID
1 2 3 4 5 6 7 8 9 10 11 12 13
| git log
git log --pretty=oneline
git log --oneline
git reflog
git log --graph --pretty=oneline --abbrev-commit
|
- 版本回退及撤销commit,撤销pull
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
git reset --hard HEAD^^
git reset --hard HEAD~1
git reset --hard HEAD~2
git reset --hard [ID]
git checkout -- test.js git checkout .
git reset HEAD demo.txt git checkout -- demo.txt
|
- 删除分支
1 2 3 4 5
| git branch -D dev
git push origin --delete dev
|
- 合并分支
1 2
| git merge --no-ff -m "commit description" dev
|
1 2 3 4 5
| #这个命令用于中止当前正在进行的合并操作。 #当你尝试合并两个分支时,如果合并过程中遇到冲突,Git会暂停合并并让你手动解决这些冲突。 #如果你决定不合并这些分支,或者想要放弃当前的合并尝试,可以使用 git merge --abort 来取消合并。 #执行这个命令后,Git会撤销合并过程中所做的所有更改,将你的工作目录和索引恢复到合并之前的状态。 git merge --abort
|
1 2 3 4 5
| #这个命令用于重置当前的合并操作,但不中止合并。 #当你使用 git reset --merge 时,Git会重置你的工作目录和索引,使其与当前HEAD指针指向的提交状态一致。 #这个命令通常在解决合并冲突后使用,以确保工作目录和索引是干净的,然后你可以重新尝试合并。 #需要注意的是,这个命令不会撤销已经解决的合并冲突,它只是重置了工作目录和索引,所以你需要重新提交你的更改。 git reset --merge
|
总结:git merge --abort 用于完全放弃当前的合并尝试,而 git reset --merge 用于清理合并过程中的混乱,让你可以重新开始合并
查看、设置分支
1 2 3 4 5 6 7 8 9 10 11 12 13
| git branch
git branch -a
git branch --set-upstream-to=origin/master master
git checkout -b master
git switch -c master
|
tag操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| git tag
git tag v1.0.0
git show v1.0.0
git tag -a v0.3 -m "desc" ID
git tag -d v1.0.0
git push origin v1.0.0
git push origin --tags
git push origin :refs/tags/v1.0.0
|
- 远程仓库信息
- 关联远程仓库
1 2 3 4 5
| git remote rm origin
git remote add origin git@gitee.xxx.git
|
- 推送至远程仓库
1 2 3 4
| git push origin master
git push -u origin master
|
- 修改仓库地址
1
| git remote set-url origin git@gitlab.xxx.git
|
- 推送本地所有分支记录到远程
- 清除已经删除的远程分支记录
- 创建SSH KEY
1
| ssh-keygen -t rsa -C "yourName@163.com"
|
二、进阶用法
场景:
当你开发一个需求,你的工作进行到一半,这时有一个紧急的线上 bug 需要修复。但是又不想使用 git commit 来保存当前的代码,怎么办?
Git 还提供了一个 stash 功能,可以把当前工作现场 储藏 起来,等以后恢复现场后继续工作。
相关命令:
- 储藏代码
1 2 3 4
| git stash
# 加上描述信息 git stash save "xxx"
|
- 查看缓存的列表
- 查看详情
1 2 3 4 5 6 7
| git stash show [名]
# 例 git stash show stash@{0}
# 看详细差异 git stash show stash@{0} -p
|
- 恢复储藏的代码
1 2 3 4 5 6 7 8 9 10 11
| # 恢复后,stash 内容并不删除 git stash apply
# 恢复指定记录 git stash apply stash@{0}
# 恢复最新储藏的内容后,并删除堆中的记录 git stash pop
# 恢复指定记录,并删除 git stash pop stash@{1}
|
- 删除缓存记录
1 2 3 4 5
| # 清除单条记录 git stash drop stash@{0}
# 清除所有 git stash clear
|
- 基于缓存创建分支
1 2 3 4 5 6 7 8 9 10 11 12
| # 语法 git stash branch <branchname> [<stash>]
# 基于最新缓存创建分支 git stash branch new-branch
# 等价于 git checkout -b new-branch git stash apply
# 基于指定缓存创建分支 git stash branch new-branch stash@{2}
|
- 回退代码,又保留提交历史
具体操作:假设当前最新提交就在分支current-branch上,回退提交为prev-commit,这个回退提交可以是一次commit id,也可以是一个tag,也可以是一个分支名。
1 2 3 4 5 6
| git checkout prev-commit git diff current-branch > ~/diff.patch git checkout current-branch cat ~/diff.patch | git apply git commit -am "roll back to prev-commit" git push
|
Git 相关系列
欢迎访问:天问博客