iOS Git使用笔记
2023-02-13 本文已影响0人
山杨
Git修改已经push过的commit信息:
在使用git提交代码时会出现提交信息写错的情况,并且已经push到远程服务器上了,此时修改起来就比较麻烦
步骤
- 使用
git log
命令查看历史记录:会出现最近提交记录,并且是按时间倒序展示的% git log
- 使用git rebase -i HEAD~5确定要修改的commit(其中,HEAD~5表示最近的5个提交记录,也可以改为3,查看最近的3个记录)
% git rebase -i HEAD~5 pick 1d316b0 1 pick f429786 2 pick 880cfbc 3 pick c55cf56 4 pick d10fd07 5
左边第一列表示命令(command),中间一列表示commit id,最右边一列是之前提交的message,排序是按照时间顺序,第一行是最早提交的。
- 找到需要修改的commit,按i进入编辑模式,修改前面的pick为edit,然后ESC、:wq保存并退出
注意:此时还不用修改message
- 假设需要修改的是第3条和第4条
pick 1d316b0 1 pick f429786 2 edit 880cfbc 3 edit c55cf56 4 pick d10fd07 5
- 轮流使用
git commit --amend
和git rebase --continue
修改每个edit的commit信息
git commit --amend
: 开始对某次commit信息进行编辑,保存并退出;
git rebase --continue
: 继续下一次修改,直到所有的edit都修改完出现Successfully rebased and updated xxxx
信息为止git push -f
: 强制推送到远程切记一定要加-f,否则edit的commit会添加到commit后面,而不是更新原commit
Git修改未push的commit信息:
若修改的是最新一次的commit信息:输入
git commit --amend
后,使用vim来编辑
i
进入编辑模式,esc
退出编辑模式,:wq
保存
Git的revert和reset指令:
Reverse commit和Reset commit的使用
- Reverse 的指令是用一个新的 Commit,来撤回你已经push过的 那一条Commit的内容, 所以会增加一条Commit。
在SourceTree中,如果想撤掉已经commit的code,可以右击选Reverse commit.(撤掉那条commit提交的内容,同时,新建了一个commit。
备注:这里和reset的区别是,如果需要撤掉的那条commit之后还有别人push的commit,那么使用Reverse会把之后的commit都保留下来,而reset就不会再保留之后的commit了。)- 如果想撤掉commit又不想新加一个commit的话,不要用Reverse,而是用Reset 指令(慎重使用!!!)
Reset方式有如下三种:
- soft 回退时保留源码,仅仅回退 commit,修改的文件仍然保存在暂存区,再次提交时只需要 git commit
- mixed(默认)回退时保留源码,回退 commit 同时修改的文件会置于工作区,再次提交时需要 git add
- hard 回退时清除提交的源码(危险操作),源码和commit 都会回滚到某个版本
我们一般在使用时,如果已经push了,使用revert,如果没有,就是用reset。在团队合作的共同操作一个仓库的时候, git reset 命令一定要慎重使用,在使用的时候一定要再三确认其他同学的代码是否会被重置操作而导致代码丢失,导致一些提交记录的丢失,这些都是不可逆的,一定要慎重!!!
如果有理解错误的地方欢迎大佬及时纠正。