在Git中,回滚到之前的某一个提交(commit)是一个常见的需求,特别是在你发现最近的更改引入了错误时。下面是一些常用的命令以及相关的说明:
查看提交历史:可以使用
git log
命令来查看提交历史。每一行都显示一个commit的哈希值、作者、提交时间和提交信息。git log
回滚到指定的提交:可以使用
git reset
命令来回滚到指定的提交。--hard
选项会重置工作目录和暂存区到指定的提交。git reset --hard 692d297
请注意,使用
--hard
选项会丢失所有指定提交之后的更改,所以要谨慎使用。一般是只有直接放弃和删除时才会使用hard。如果不小心删除了,可以使用git reflog命令来查看操作的历史记录,然后找到误操作之前的版本号,再次使用git reset回退到这个版本就可以了。回滚到指定的提交,保留更改:如果你想回滚到指定的提交,保留工作区和暂存区的修改,可以使用
--soft
选项。git reset --soft 692d297
这样,所有指定提交之后的更改都会保留在工作区和暂存区中,你可以再次提交这些更改。应用场景可以是在多次无效提交后,通过此种回滚方式,可以将多次的无效提交合并成一个提交。
回滚到指定的提交,保留更改:如果你想回滚到指定的提交,但保留所有更改作为暂存的修改,可以使用
--mixed
选项。git reset --mixed 692d297
这样,所有指定提交之后的更改都会保留在工作区中。应用场景可以是在多次无效提交后,通过此种回滚方式,可以将多次的无效提交合并成一个提交。
创建一个新的提交来撤销之前的提交:可以使用
git revert
命令来创建一个新的提交来撤销之前的提交。git revert 692d297
查看指定范围的提交历史:可以使用
git log
命令的选项来查看指定范围的提交历史。git log --oneline --graph --all --decorate
回滚到指定的分支或标签:除了回滚到指定的提交,你还可以回滚到指定的分支或标签。
git reset --hard origin/master git reset --hard v1.0.0
放弃工作目录中的更改:如果你想放弃工作目录中的所有更改,可以使用
git checkout
命令。git checkout .
放弃暂存区中的更改:如果你想放弃暂存区中的所有更改,可以使用
git reset
命令。git reset
请注意,在进行任何回滚操作之前,最好先创建一个备份分支,以防万一。
git branch backup-branch
查看版本差异:HEAD代表最新版本,~表示上个版本,数字表示上第几个版本,后面加文件名就是只比较文件的差异。
git diff HEAD~3 HEAD git diff HEAD~3 HEAD file3.txt
.gitignore无法忽略部分:如果我们先添加了某些文件到git中去,后面再使用通配符要忽略某些文件。比如我们一开始添加了other.log文件,后面又想忽略它。我们需要先把它从git仓库中删除,但不要从本地磁盘上删除,就使用如下命令。参考:gitignore忽略文件
git rm --cached other.log
部署私有仓库可以使用gitlab。参考:Gitee的使用和GitLab本地化部署
最佳时间可参考:分支管理和工作流模型【完结】
Comments