GIT
git 日志方面命令
- git log -p 查看每个commit提交的细节(-p -> –patch)
- git log –stat 查看简要统计,统计出来的是哪些文件修改哪些几处 -> 方便查看在哪个commit中修改了哪个文件。
- git show 查看当前的commit的提交内容细节(-p 是可以查看全部) ,也可以利用 git show “SHA-1(commit的sha-1值)” 查看具体的一个commit的具体细节,还可以利用 git show “SHA-1” “file name(文件名)” 查看具体的文件的修改详情
git 修改对比(diff)
- git diff –staged(与 git diff –cache 命令作用相同)(显示暂存区和上一条提交之间的不同, 相当于输入 git commit之后的修改)
- git diff (没有参数) 显示工作目录和暂存区之间的不同(相当于输入git add . 之后的提交)
- git diff HEAD (显示工作目录和上一条提交之间的不同) (HEAD 可以换成其他commit,这样可以看到和其他commit的不同)
git rebase
- 合并时,不会出现分叉的情况,merge会出现分叉
- 如果要rebase master分支,则应该先切换到其他分支,然后 git rebase master 避免将master分支上原有的commit给干掉,造成push不成功
- git rebase 目标基础点(比如master) 与merge 命令相反
git 提交错误修改
git commit –ament (修改上一次提交的内容) [比如: 上一次commit的内容有错误,那么直接把文件修改,然后 git add . 然后 git commit –ament 这样就会重新创建一个新的commit 来替换掉 上一次的commit,这样做的好处就是不用为了修改一点点错误就增加一个commit]
git rebase -i (-i -> –interactive) 交互式rebase, 用于修改非最新一次commit的内容,就是你发现错误的commit不是最新的一个,而是之前的commit,这个时候就需要用到这个东西了。
- 首先 git rebase -i HEAD^^ [一个 ^ 表示一次commit, 这里两个 ^^ 表示对于当前HEAD 回退两次,比如git log 依次出现的顺序是1,2,3 那么 ^^ 之后,回到的是 3, 这里也可以用~来表示 比如回退两个 git rebase -i HEAD~2]
- 然后回退之后会出现一个界面,这个界面会列出前面几次的commit, 这个commit的顺序是正序的,也就是最先提交的在最上面,最后提交的在最下面,找到你要修改的commit 然后将 pick改为edit,然后保存,退出(这个界面还有其他命令,都在下方列出)[如果不想要之前的某次commit,那么直接删掉那条记录,然后保存文件就好了]。
- 最后,修改文件 然后 git add . git commit –amend git rebase –continue
- 也可以使用 git rebase –onto 目标起点 目标终点 分支
出错的代码已经push到远端了
分两种情况(1) push的内容在自己的分支上,那么你可以直接修改,然后重新推上去,如果你是删掉当前commit在推送的话,由于两边commit不一致,会让你先pull,不过这个时候你可以直接忽略它,强制推送
git push origin branch1 -f (-f 是 --force 的缩写,意为「忽略冲突,强制 push」。)
(2) 出错的内容已经合并到master了,这种情况下就不要删掉之前的commit了 ,老老实实,重新建立一个新的commit来提交吧
git reset 作用
- git reset –hard branch //git reset命令除了可以撤销当前提交之外,还可以切换分之,reset就是把当前HEAD移动到其他branch或者commit上
- hard参数:重置工作目录-> 当前工作目录的所有内容会被完全重置为和HEAD的新位置相同的内容,换句话说就是未提交的内容都被擦除了(不管是否放在了暂存区)。
- soft参数: 保留工作目录和暂存区中的内容,把差异放入暂存区
- 不加参数:默认使用–mixed (保留工作目录,并且清空暂存区),就是commit了的会被保留,放在暂存的被清空,变成没有暂存
git stash
暂存当前目录, git stash pop 把暂存的放回来
git reflog
找回刚刚删除的分支,利用git reflog找到最后一次删除分支的commit记录,然后 git checkout commit(SHA-1值) 然后 git checkout -b branch 就可以找回刚刚删除的branch,不过这个只适合刚删除不久的,因为没有用的commit会被git回收机制自动删掉。
git reflog branch 查看具体的branch的HEAD移动历史。
git ignore
git忽略文件 https://git-scm.com/docs/gitignore
git 其他
- git tag
- cherry-pick
- git config
- git flow