代码库数据统计
列出所有文件
默认只能查看已跟踪的文件,无法查看Untrack文件
git ls-files
查看指定目录下的文件
git ls-files packages/core
查看未跟踪的文件
git ls-files packages/core -u
查看目录下文件的代码行数
git ls-files packages/core | xargs wc -l
分支回滚后代码合并出现问题
git reset
- 删除指定的
commit - 再次
merge老分支时,被reset的commit还会被引入 - 将
HEAD指针后移
git revert
- 用一次新的commit来回滚之前的commit
- 再次
merge老分支时,被reset的commit不会被引入 HEAD指针继续往前走,新的commit内容和要revert的内容相抵消
解决git revert操作后merge代码被冲掉的问题
将revert的所产生的commit再revert一次
因为
git revert是用新的commit来覆盖旧的commit,因此旧的commit等于不会被采用了。如果两个分支(假设是master和A分支)先merge再用revert回滚,之后又将A合并到master,就会发现在master分支上,A分支第一次合并之前的修改大部分不见了。这是因为从时间的发生顺序来看,A分支第一次合并之前的修改发生在revert之前, revert抛弃了A第一合并之前的修改,那么再合并Git就认为你永远抛弃了A第一次之前的修改。
git revert
默认情况下,git revert拒绝恢复merge commit,因为revert commit 的实际含义不明确。假设 HEAD 实际上是一个merge commit 。
如果想恢复merge commit,必须指定merge 的父节点作为主干,也就是说你想恢复到哪个时候。
通常这将是父数字1,例如,如果你在master,并没有 git 合并不想要,然后决定恢复不想要的合并。第一个父节点是预合并主节点,第二个父节点是不需要的节点。
git revert -m 1 HEAD