Commit的几种形式

Discard change(放弃修改)

 

 

 

 

 

Undo commit (未push到远程仓库的前提下,允许Undo)

 

 

 

Revent changes in commit(已Push过到远程仓库的,只能回滚)

 

Amend commit... (这个命令修改最新的commit,包括comment和文件内容。)

 

Squash commit(我们可能会由于各种各样的原因提交了许多临时的 commit,而这些 commit 拼接起来才是完整的任务。在合并到主干的时候,往往这类 commit 显得臃肿多余。为了方便别人做 code review,我们希望合并一些不必要的 commit 使我们的分支显得干净一目了然,也方便管理。)

 

 

 

 

合并完毕后,变成了一个待提交的commit

 

 

 

 

 

 

 

 

 

 

 

 

 

Cherry-pick commit(将A分支的某个或者多个commit提交合并到B分支,可以使用cherry-pick。)

 

 

 

git reset --hard、git reset --sort

一、 在git操作中,有时候,进行了错误的提交,但是还没有push到远程分支,想要撤销本次提交,可以使用git reset –-soft/hard命令。

1、二者区别:

git reset –-soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可;
git reset -–hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容,撤销的commit中所包含的更改被冲掉;

 

 

1、git log 查询提交记录

例如下:
commit 938jnas...
commit hy3sdd...

2、git reset --hard hy3sdd

执行此命令会把最新的提交记录变为hy3sdd ,不会把代码放在暂存区

3、git push origin HEAD --force强制提交

只会会发现hy3sdd之前的本地和远程commit记录都被删除了


准备回滚到这个commit,但是不想通过Revent Commit的方式积累太多无用的Commit。

 

执行

git reset --soft 3c73249e6941bf07e9614184ba082e1eccd26c16

之后变成这样,说明本地仓库删除掉了3个commit,同时比远程仓库少了3个commit

 

 

然后把本地的commit强制提交到远程仓库分支

----------------参考开始----------------

git push origin HEAD --force强制提交

git push <remote 名字> <本地分支的名字> : <远程分支的名字>

git push origin HEAD:refs/for/master
git push 肯定是推送
origin : 是远程的库的名字
HEAD: 是一个特别的指针,它是一个指向你正在工作的本地分支的指针,可以把它当做本地分支的别名,git这样就可以知道你工作在哪个分支
refs/for :意义在于我们提交代码到服务器之后是需要经过code review 之后才能进行merge的
refs/heads 不需要

----------------参考结束----------------

remote 名字 可以通过  git  remote -v 来查看

 

 确认自己要提交的私有远程仓库是origin 远程分支是dev-changlong

git push origin HEAD:dev-changlong  --force

把本地仓库的信息强制同步到自有的远程仓库origin dev-chang分支下面去了。

 

 

 

 

posted on 2022-09-28 16:33  Neo0820  阅读(990)  评论(0编辑  收藏  举报

导航