Git版本中文件的状态
- untracked
以前版本库中没有的文件,没有通过git add 添加到版本库的文件; - Unstaged
通过git add添加到版本库后又修改的文件; - Staged
所有通过git add 添加的文件;
修改提交记录
查看提交内容
加入你刚刚盲目的使用 git commit -a,你并不记得这个提交实际包含的内容,你可以通过下面的命令展示最近一次的提交的内容:
(master)$ git show
或者
$ git log -n1 -p
修改提交信息
你可以通过如下命令修改一条还没有push的提交信息:
$ git commit --amend
这条命令会打开一个默认编辑器然后编辑提交信息或者直接使用
$ git commit --amend -m 'xxxxxxx'
如果提交信息已经push了,只能通过上面的方法修改提交信息的同时push的时候添加force参数
修改提交记录里面的邮箱和作者
$ git commit --amend --author "New Authorname <authoremail@mydomain.com>"
从提交记录里面删除一个文件
git checkout HEAD^ myfile
git add -A
git commit --amend
删除或修改最近一次提交
$ git commit --amend
$ git reset HEAD^ --hard
$ git push --force-with-lease [remote] [branch]
删除或修改最近一次提交
$ git reset HEAD^ --hard
$ git push --force-with-lease [remote] [branch]
如果记录还没有提交到远程,将git指针重置为之前的状态(暂存区保存更改)
(my-branch*)$ git reset --soft HEAD@{1}
这个只对你还没有提交记录有效,如果你已经提交了记录,唯一安全的命令是git revert ,这个命令会新增一条提交记录用于删除之前的提交记录。push的时候加上–force-with-lease(缩写为-f)是件很危险的事,会不可挽回的修改你的提交记录,如果还有其他人在一起协作,可能扰乱别人的工作,一定要慎用。
删除任意提交(commit)
SHA1_OF_BAD_COMMIT表示想要删除的commit号
$ git rebase --onto SHA1_OF_BAD_COMMIT^ SHA1_OF_BAD_COMMIT
$ git push -f [remote] [branch]
撤销 git reset –hard
(master)$ git reflog
你将会看到一个你过去提交(commit)的列表, 和一个重置的提交。 选择你想要回到的提交(commit)的SHA,再重置一次:
(master)$ git reset --hard SHA1234
git reflog : 可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)
git log : 不能察看已经删除了的commit记录