git 提交模型
工作区 - 暂存区 - 本地仓库
代码编写及修改是在工作区 - git add 将本地修改添加到暂存区 - git commit 将暂存区中的内容提交到本地仓库 - git push 将本地仓库代码推送到远程仓库
未进行 push 的操作,本地的 commit 等操作线条是鲜绿色的,push 之后会变成暗绿色。
idea git commit之后,想撤销commit
To Cimmit:里面填写 HEAD~1 点击Reset即可撤销上次commit的内容;
下面会详细介绍Reset Type:Mixed To Commit : HEAD~1 具体是什么意思!!
` git add //添加要提交的内容 暂存区
git commit -m "提交的描述:大家最好把此次提交的信息简单描述一下" 本地仓库
执行完commit后,想撤回commit,怎么办?
git reset --soft HEAD^
这样就成功的撤销了你的commit
`
参数详解
To Commot:参数详解
HEAD^的意思是上一个版本,也可以写成HEAD~1
如果你进行了2次commit,想都撤回,可以使用HEAD~2或者HEAD^^,以此类推......
Reset Type:参数详解
首先了解:
工作区 - 暂存区 - 本地仓库
代码编写及修改是在工作区 - git add 将本地修改添加到暂存区 - git commit 将暂存区中的内容提交到本地仓库
--mixed (git reset的默认参数,即不添加参数的默认值) 意思是:不删除工作空间改动代码,撤销commit 和 撤销git add . 操作,回退到工作区
这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。
--soft
意思是:不删除工作空间改动代码,撤销commit,不撤销git add . 操作,
回退到git commit之前,此时处在暂存区。(即执行git add 命令后)
--hard 意思是:删除本地改动代码,撤销commit,撤销git add .
(三者的改变全都丢失,即代码的修改内容丢失,直接回退到某个版本;因此我们修改过的代码就没了,需要谨慎使用)
补充 hard类型,一定要慎用:
README.md 我修改了并且提交,但是还未push
README.en.md 是另外修改的文件,未提交
此时我要撤销我刚刚提交的内容 ,如下图:
但是如果你的类型选择的 Hard类型, 此时整个代码空间的代码都会被覆盖,意思就是你修改过的代码全部都没有了
可以看见, 刚刚的提交已经被撤销了,但是我本地修改的其他代码内容也被覆盖了,直接没有了,所以一定要慎用,如果你此时工作区还有其他功能未提交的代码,就都会被删除
git push 之后提交
git push 之后的提交再次回滚,回滚的内容都是在本地,没有push 之前回滚后的内容是不会同步到远程仓库中去的。
idea如何使用【Revert Commit】
Revert Commit 都会生成一个新的Revert "xxx"记录,接下来你想commit就commit,想push就push。
一.先说结论
针对任何一个代码记录都进行Revert Commit操作: ①不管此记录是commit未push,还是已经push过; ②不管此记录之后有没有其他的多次commit或push’记录 总之都会生成一个新的Revert "xxx"记录,接下来你想commit就commit,想push就push。
二.操作步骤
1.我有三个记录
这三个记录可以是只commit未push,也可以是push过,无所谓。
2.随便选择一个进行Revert Commit,我选择"test1"
3.点击Revert Commit立刻弹框如图
4.然后你点击Commit按钮,记录窗口会立即显示一个新的记录
5.这会你push就行
回滚远程仓库这三种作各有区别
git reset current branch to here
使用这种方式首先将黄色的指针头移动到 要reset 的提交,执行 push 之后,所有当前提交之后的提交全部清除。此时,如果使用的是 hard 方式本地代码无法找回。其他方式,可以按照自己的需要进行选择
commit [revert]
对home1提交点击revert commit后,本地的代码先回滚。同时生成一个新的提交,将这个提交推送到远程仓库后, 就形成了 revert "home1"这个提交。 这种方式回导致本地的代码消失不见,找回的方式是通过local history 本地操作历史来恢复本地的代码。按如图按钮,回滚本地的这次操作。这个对远程当然是没有影响的。
undo commit
这种操作方式比较友好,点击undo commit并推送到远程后,本地文件未消失,仍然是原来未提交的状态。也没有revert commit操作后再分支历史记录留下的revert “home1”
适用情况:代码修改完了,已经Commit了,但是还未push,然后发现还有地方需要修改,但是又不想增加一个新的Commit记录。这时可以进行Undo Commit,修改后再重新Commit。
如果已经进行了Push,线上的Commit记录还是会存在的
简单来说,就是撤销了你Commit的这个动作。详细解释下:
1、首先,对项目进行了代码修改,然后进行commit操作。
2、确认Commit之后(未进行push)
3、进行Undo Commit操作
执行后和未Commit之前完全一样。
Drop Commit(慎用)
未push的Commit记录:
会删除Commit记录,同时Commit中对代码进行的修改也会全部被删除
已push的Commit记录:
区别在于线上的Commit记录不会被删除 1、修改代码,然后进行Commit
2、进行Drop Commit操作后
Commit 记录被删除,代码修改也被删除。
3、已push的Commit记录
回滚提交中的一个文件
首先在本地的提交记录中将这个文件回退,这时候本地回退到的是这个文件的上一个版本,然后将上一个版本push 到远程仓库。
找回自己新增代码的方式仍然是上边的本地历史进行恢复