git 使用小记
1. git reset
在使用git提交的时候可能会出现很多种问题,比如希望add的文件多了或少了,或者commit信息出现了问题,这个时候我们希望进行一个回退上一版本的操作,就需要用到git reset指令。
(1)撤销已经commit但还没push的
git reset --mixed HEAD^ / [具体版本号]
git reset --soft HEAD^ / [具体版本号]
git reset --hard HEAD^ / [具体版本号]
HEAD^:表示上一个版本,即上一次的commit,也可以写成HEAD~1 如果进行两次的commit,想要都撤回,可以使用HEAD~2
–mixed:不删除工作空间的改动代码 ,撤销commit,撤销 git add file
–soft :不删除工作空间的改动代码 ,撤销commit,不撤销 git add file
–hard:删除工作空间的改动代码,撤销commit,撤销 add file
(2)撤销已经push的commit
① git log
查看需要回退到的版本号,或者确定撤销n次,使用HEAD~n
的方式;
PS:推荐使用git log --pretty=oneline
,更加简洁直观
② 使用git reset
进行本地版本回退,使用--hard
将所有改变全部撤销;
PS:这里--mixed
或--soft
应该更好,强制回退本地和远程版本号,但是本地改动的代码不变,可以在这个基础上继续修改
③ git log
查看本地是否回退成功;
④ git push origin master --force
强制提交当前版本号;
PS: 如果master分支是protected
的话是不支持强制提交的,可以修改后进行新的提交
2. git commit --amend
在git commit的时候出现提交信息写错的情况,就可以使用git commit --amend
指令来修改,注意修改前后的信息都会记录在git reflog
中,git log
中就没有修改前的记录了。
有两种用法:
(1)
git commit --amend -m "这是修改之后的备注"
(2)
git commit --amend
进入vim编辑页面,第一行就是message信息,进行修改后保存即可。
3. git remote
有一种特殊的情况,你之前git clone的时候用的url是A,然后可能后面公司gitlab的域名修改了,这个时候本地仓库并不会自动同步更新。
git remote -v #查看所有远程仓库信息
git remote set-url [你的远程连接名] [你的远程仓库新地址] # 例如git remote set-url origin git@xxx.git