比较暂存区和HEAD所含文件的差异
要想比较暂存区和HEAD文件的差异,可以使用下面的命令:
git diff --cached
git diff --staged
这里的HEAD是指,最后一次的commit
比较工作区和暂存区所含文件的差异
git diff # 比较的是工作区和暂存区(所有文件)的区别
git diff -- readme.md # 指定文件
第一个命令比较的所有命令的差异
第二个是指定文件的差异
如何让暂存区恢复成HEAD一样的状态
git reset HEAD # 暂存区恢复成HEAD
让工作区的文件恢复成暂存区
git checkout -- index.html
当文件添加到暂存区中,又对文件进行了修改。但是,修改后不满意,使用上面的命令,即可恢复成暂存区的状态。
取消暂存区部分文件的修改
上面将暂存区恢复成HEAD一样的状态,但是,基本上是所有文件都恢复了,要想恢复一部分文件,可以使用如下命令。
git reset HEAD -- c.txt
后面文件可以拼接多个。
消除最近的几次提交
git reset 有三个参数
--soft #这个只是把HEAD指向的commit恢复到你指定的commit,暂存区工作区不变
--hard #这个是把HEAD,暂存区,工作区都修改为你指定的commit的时候的文件状态
--mixed #这个是不加时候的默认参数,把HEAD,暂存区修改为你指定的commit的时候的文件状态,工作区保持不变
根据上面三个命令,可以根据自己的需求,随意使用。
案例:领导说,你这个设计还没之前的好,然后,你回去就立马把这个东西恢复成之前的样子。但是后面领导发现,其实设计的也是别有意蕴。决定采纳。这时的你,不是肠子都悔青了么?没关系,git还是提供后悔药这个功能的。
git reflog #查看命令历史, 记录每次的命令。
git reset --hard commit_id #然后进行你想找回的commit
所以说上面的命令不仅可以恢复,还能找回,这就是git智能的地方。
比较不同提交文件的差异
现在基本上都是分支开发,主干合并的开发模式。所以,你想比较一下别人分支上的文件,和自己分支上的文件有哪些区别,则可以使用下面的命令。
git diff master v2.0 #比较分支中所有文件
git diff master v2.0 -- 文件名 #比较分支中的指定文件
如果想比较两个commit之间的差异,就使用下面的命令:
git diff commit_1 commit_2 # 比较commit中所有文件
git diff commit_1 commit_2 -- 文件名 #比较commit中的指定文件
删除文件
删除文件的命令很简单,就和文件重命名一样
git rm 文件名
基于堆栈开发
什么叫堆栈开发呢?这个名字是我自己的定义的。意思就是,在不影响整个项目环境的情况下。对某个文件进行调整。
可以理解为临时修复线上的bug。命令如下:
git stash #存放在不影响工作区的环境
git stash list #查看,相当于堆栈
git stash apply #拿出内容,并放入工作区,但是在堆栈中还存在。
git stash pop #拿出内容,同时堆栈中的也消失。
git stash pop stash@{2} #如果stash内容多,可以按序号取出指定的
上面图片展示的就是,将当前的工作区放入stash中,然后list命令可以查看stash中存放了哪些东西。
此时,暂存区的空间是干净的。现在对某个文件进行修改,然后提交到暂存区。然后将stash中的文件拿出来进行比对。
如何指定不需要git管理的文件
这个就是对.gitignore文件的使用了。至于怎么使用,通过下面给出的链接了解吧。
https://blog.youkuaiyun.com/xmyzlz/article/details/8592302
将git仓库备份
想将git备份到本地,也很容易,就几个命令
--bare表示不带工作区的仓库
git clone --bare /d/git/gitrunning/.git one.git #哑协议做备份
git clone --bare file:///d/git/gitrunning/.git two.git #智能备份
git remote -v #查看是否有远端
git remote add two file:///d/git/back/two.git #与远端仓库关联
git push two #将本地的东西提交到远端
git push --set-upstream two master #将本地的分支推送到远端
我不过是一条鱼 在深海沉溺
你的声音使我着迷
于是我拨开海底丛生的荆棘
妄想一触你的身影
直到光明消失殆尽
直到连摆尾的力气都失去