Git之道

git add之后,想撤销add

git add . //添加所有文件

执行完add后,想撤回add,怎么办?
解决办法

git reset HEAD

git commit之后,想撤销commit

写完代码后,我们一般这样

git commit -m "本功能全部完成"

执行完commit后,想撤回commit,怎么办?
解决办法

git reset --mixed HEAD^

这样就成功的撤销了你的commit

注意,仅仅是撤回commit操作,您写的代码仍然保留。

reset参数说明
HEAD^的意思是上一个版本,也可以写成HEAD~1

如果你进行了2次commit,想都撤回,可以使用HEAD~2

至于这几个参数:
–mixed
意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。

–soft
不删除工作空间改动代码,撤销commit,不撤销git add .

–hard
删除工作空间改动代码,撤销commit,撤销git add .

注意完成这个操作后,就恢复到了上一次的commit状态。

commit注释写错了,只是想改一下注释

顺便说一下,如果commit注释写错了,只是想改一下注释,只需要:

git commit --amend

此时会进入默认vim编辑器,修改注释完毕后保存就好了。

代码已提交入库,leader审核后发现代码有问题,leadr不abandon代码

修改好代码后,执行git add,然后

git commit –amend –no-edit

最后

git push origin HEAD:refs/for/master

当我们想要对上一次的提交进行修改时,我们可以使用git commit –amend命令。git commit –amend既可以对上次提交的内容进行修改,也可以修改提交说明。

代码已提交入库,leader审核后发现代码有问题,leader 将你提交的所有代码 abandon掉

首先通过git reset …将代码回退到你代码提交之前的版本
然后修改出问题的代码
最后执行add,commit,push

git add ***
git commit -m "****"
git push origin HEAD:refs/for/master

git添加空目录

为了保证项目结构完整,要提交空的文件夹 , 但是git默认是忽略空目录的,这时候我们只需要在git 根目录下执行如下命令

find . -type d -empty -exec touch {}/.gitignore \;

就可以上传空的文件夹了,本质上是在空目录里建立了一个.gitignore文件,等文件夹中新建了文件再把它删掉即可。

git add忽略某些文件的方法

对于未入库文件

使用命令:touch .gitignore 创建.gitignore文件
在文件中写入需要忽略的文件(如:*.diff),或者不遵循忽略原则的特例(文件前加“!”)
(注:只对untracked files有效)

对于已入库的文件

使用命令:

git update-index --assume-unchanged FILENAME       路径+文件名

若以后不想忽略该文件的修改,则输入命令:

git update-index --no-assume-unchanged FILENAME   

最后可以通过

git status    

查看状态中是否有效忽略了。

保存本地的修改,拉取服务器上的最新代码

 git status
 git stash list
 git stash save "save rpc"
 git pull
 git stash list
 git stash pop

git stash用法

(1)git stash save “save message” : 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。

(2)git stash list :查看stash了哪些存储

(3)git stash show :显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}

(4)git stash show -p : 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show stash@{$num} -p ,比如第二个:git stash show stash@{1} -p

(5)git stash apply :应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1}

(6)git stash pop :命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1}

(7)git stash drop stash@{KaTeX parse error: Expected 'EOF', got '}' at position 4: num}̲ :丢弃stash@{num}存储,从列表中删除这个存储

(8)git stash clear :删除所有缓存的stash

git放弃本地某个文件或所有文件的修改

放弃某个文件的修改
使用 “git checkout – <文件>…” 丢弃工作区的改动

git checkout -- apps/domain/metric/service/team_indicator_val.go

放弃本地所有文件的修改

git reset --hard HEAD

Git如何将一个分支上的修改转移到另一个分支上

【背景】
写了代码准备提交了,忽然发现写在了错误的分支上!怎么把这些修改转移到正确的分支上去呢?

例如需要在dev分支上开发,现在代码全都写在了master分支上

【解决办法】
未commit操作时

git add .
git stash              //把暂存区内的修改存储起来
git checkout dev       //切换到正确的分支
git stash pop          //将存储的修改取出来

已commit操作时

git reset --soft HEAD^      // 撤回到刚刚commit之前的状态
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值