git撤销更改的门道

程序员小迷 2024-04-23 16:14:14

1.git checkout -- 文件

撤销对工作区某文件的修改。

git checkout .

撤销本地所有修改的、没有提交的文件的修改,都返回到原来的状态。

2.git reset --hard [commit]

将工作区和暂存区的内容强制修改为commit时本地代码库的状态。

3.git reset --mixed  [commit]

将暂存区的内容强制修改为commit时本地代码库的状态,工作区的内容不变。

4.git reset --soft  [commit]

将本地代码库的内容修改为commit时的状态,暂存区和工作区的内容不变。

5.git revert [commit]

1)当commit为常规commit,非merge commit时

将选择的某一次提交撤销,撤销后会生成一个新的commit,撤销掉的提交记录仍然存在。

2)当commit为merge commit时

merge commit代表有多个分支进行了合并,若直接使用 git revert <commit id>,git 也不知道到底要撤销哪一个分支上的内容。这时需要指定一个 parent number 标识出"主线",主线的内容将会保留,而另一条分支的内容将被 revert。

从 git show <commit id>命令的结果中可以看到,merge commit 的 parent 分别为 a111111 和 b222222,其中 a111111 代表 master 分支,b222222 代表 另一个 分支。需要添加 -m 选项以代表这次 revert 的是一个 merge commit。-m 选项接收的参数是一个数字,数字取值为 1 和 2,也就是 Merge 行里面列出来的第一个还是第二个,其含义用来保留哪个分支。

例如:

git revert -m 1 ab82453

微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

欢迎关注。助您在编程路上越走越好!

0 阅读:0