Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

git使用问题 #1

Open
chenxuan0000 opened this issue Oct 12, 2019 · 0 comments
Open

git使用问题 #1

chenxuan0000 opened this issue Oct 12, 2019 · 0 comments

Comments

@chenxuan0000
Copy link
Owner

chenxuan0000 commented Oct 12, 2019

git命令定位错误commit

git bisect,将代码提交的历史,按照两分法不断缩小定位。所谓"两分法",就是将代码历史一分为二,确定问题出在前半部分,还是后半部分,不断执行这个过程,直到范围缩小到某一次代码提交。

image

git log --pretty=oneline

image

// 这里调试下最近50次提交
// Head代表最近第一次,执行命令以后,代码库就会切换到这段范围正当中的那一次提交,本例是第26次提交。
git bisect start [终点] [起点]

// 26没有问题,错误是在代码历史的后半段引入的。执行上面的命令,Git就自动切换到后半段的中点(第38次提交)。
git bisect good

// 38有问题,Git就自动切换到第26次到第38次的中点(第32次提交)。
git bisect bad

// 接下来,不断重复这个过程,直到成功找到出问题的那一次提交为止。这时,Git会给出如下的提示。
b47892 is the first bad commit

image

需求开发到一半需要切换分支修复bug

git stash

经常有这样的事情发生,当你正在进行项目中某一部分的工作,里面的东西处于一个比较杂乱的状态,而你想转到其他分支上进行一些工作。问题是,你不想提交进行了一半的工作,否则以后你无法回到这个工作点。详细的git stash API

// 储存本地修改
git stash
// 进行其他操作
xxxxxx
// 恢复继续开发
git stash pop

git rebase合并commit

  • git rebase合并请求的方法

那为什么在git push之后不宜使用这些命令呢?
主要是因为本文设计到的命令都会重新提交commit,尽管有commit msg有时候不会变,但commit对应的SHA1哈希值会被改变。如果是已经push了的commit被改变了SHA1,则会造成比较严重的混乱。

// 合并最近3次commit
git rebase -i HEAD~3
// 要合并的版本之前的版本号
git rebase -i xxxx

image

// 进入到如上编辑vim面板
i 进入vim模式,把后面的pick改为s
:wq 保存退出
// 修改commit信息
@chenxuan0000 chenxuan0000 changed the title git命令 git使用问题 Oct 14, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant