git reset
1.使用git add .添加了所有修改文件到暂存区之后在commite到本地之前想撤销add操作可以使用1
git reset HEAD <file>
将某个文件从暂存区拿出来。
2.已经commite了提交到了本地但是还没有push到远端,这时候发现有个文件不能提交到远端可以使用1
git reset -soft/--mix/--hard <commite id>
会将本地仓库回退到commite id这个版本(可以是上一次commite的版本)。reset后的参数代表了是否保留本地代码的修改,具体可以查询网络。git reset命令的使用
选项 | git reset的影响 | ||
---|---|---|---|
选项 | HEAD | 索引(暂存区) | 工作目录(源代码) |
–soft | 是 | 否 | 否 |
–mix | 是 | 是 | 否 |
–hard | 是 | 是 | 是 |
HEAD:表示当前git指针指向的位置
索引:表示add之后去到的暂存区
工作目录:表示代码文件的改动
提交C1 –> 提交C2
总结就是:soft后git指针会指向C1的提交,而C2修改的文件还是add状态,修改内容不会丢失,对现有的版本改动最小;mix后(git reset默认操作)git指针会指向C1提交,C2修改的文件不是add状态(需要重新add)不在暂存区,文件修改内容不丢失;hard后git指针指向C1提交,C2修改文件不在暂存区,文件修改丢失,完全恢复到C1提交的状态.hard慎用