首页 > 技术文章 > git

jiaoyaxiong 2020-05-28 10:29 原文

现在将版本退回到合并前,也就是回退一个版本
git reset --hard head^

 

 

reset --hard:重置stage区和工作目录:
工作目录的被追踪的文件将会被还原,但是工作不露未被track 的文件将不受影响


这就是--soft 和 --hard 的区别:--hard 会清空工作目录和暂存区的改动,*而 --soft则会保留工作目录的内容,并把因为保留工作目录内容所带来的新的文件差异放进暂存区。

 

 


总而言之,可以使用--soft合并commit节点。

 

个人理解:

Hard 模式 清空缓存区和工作区
Soft 模式 不清空缓存区和工作区 —可以合并commits
Mixed 模式,不清空工作区,清空了缓存区 — 比soft 模式多了add


git diff 命令显示已写入缓存与已修改但尚未写入缓存的改动的区别。git diff 有两个主要的应用场景。
* 尚未缓存的改动:git diff

 


Git diff 是 git status 的详细


个人理解:
Git diff 尚未加入缓存区的改动
Git diff —cached 加入缓存区的改动


git reset HEAD 命令用于取消已缓存的内容。


Git mv


Git rm

 



除非你将分支推送到远端仓库,不然该分支就是 不为他人所见的:
git push origin <branch>

 

**# 删除 untracked files
git clean -f
# 连 untracked 的目录也一起删掉
git clean -fd

 


git stash apply

 

总的来说,git stash命令的作用就是将目前还不想提交的但是已经修改的内容进行保存至堆栈中,后续可以在某个分支上恢复出堆栈中的内容。这也就是说,stash中的内容不仅仅可以恢复到原先开发的分支,也可以恢复到其他任意指定的分支上。git stash作用的范围包括工作区和暂存区中的内容,也就是说没有提交的内容都会保存至堆栈中。

 

将堆栈中的内容应用到当前目录,不同于git stash pop,该命令不会将内容从堆栈中删除,也就说该命令能够将堆栈的内容多次应用到工作目录中,适应于多个分支的情况。

 

 


 


所以未tracked 的文件最好在stash 之前 add 一下

 

推荐阅读