提交到历史记录
- 提交:
git commit -m "提交信息"
- 修正最新提交:
git commit -amend
(生成新的commit替换旧的commit)
签出( checkout )指定的 commit
和reset区别:
- reset:在移动 HEAD 时会带着它所指向的 branch 一起移动
- checkout:只有HEAD移动
重置 HEAD 以及它所指向的 branch 的位置的 --hard:重置位置的同时,清空工作目录的所有改动; --soft:重置位置的同时,保留工作目录和暂存区的内容,并把重置 HEAD 的位置所导致的新的文件差异放进暂存区。 --mixed(默认):重置位置的同时,保留工作目录的内容,并清空暂存区。
使用:
- 丢弃最新提交:
git reset --hard 目标commit
- 丢弃非最新提交:使用git rebase
把工作目录的内容全部放在你本地的一个独立的地方
- 暂存:git stash
git stash -u
:暂存包含没有被 track 的文件
- 取暂存:git stash pop
增加一个新的提交,把之前提交的内容抹掉
- 撤销:
git revert HEAD^
- 合并:
git merge 分支
- 取消合并:
git merge --abort
查看历史中的多个 commit
- 查看详细改动:
git log -p
- 查看大致改动:
git log --stat
查看具体某个 commit
- 要看最新 commit:
git show
; - 要看指定 commit:
git show commit的引用或SHA-1
- 如果还要指定文件:
git show 文件名
查看未提交的内容
- 查看工作目录和暂存区的区别:
git diff
- 查看工作目录和上一条 commit 的区别:
git diff HEAD
- 查看暂存区和上一条 commit 的区别:
git diff --staged
或git diff --cached
merge合并会导致历史出现分叉,会让人觉得混乱而难以管理,所以可以用rebase 变基:给你的 commit 序列重新设置基础点
流程:(假如分支branch1)
- git checkout branch1
- git rebase master
- git checkout master
- git merge branch1
撤销提交:
git rebase -i 目标commit
git rebase --onto 目标commit 起点commit(注意:rebase 的时候会把起点排除在外) 终点commit
查看 Git 仓库中的引用的移动记录。例如可以用来找回被删除的branch(在系统回收时间之前可用)
- git reflog