git 操作技巧小结

Q: 如何修改已提交的commit

A:

如果commit是HEAD,则修改staged区,然后git commit --amend,此时还可以修改commit commense

如果commit不是HEAD,比如想修改 HEAD~1,HEAD~2,则需要使用rebase命令,如下:

git rebase -i HEAD~3

修改对应的 pick 为 edit,  比如修改 HEAD~2, 保存退出

当前HEAD 落在 HEAD~2 上了,然后按照常规方法进行修改。

git rebase --continue继续下一笔


Q:如何删除若干笔的commit

A:用 git rebase -i basecommit,这里的basecommit你可以选择一个所有被删除前commit前的一个

然后在编辑界面删除哪些你不需要的commit行,保存退出即可


Q:如何cherry-pick 一笔其他分支上的commit

A:

如果这笔commit是其他分支的最新commit,则 git cherry-pick other_branch

若不是最新commit,如倒数第三笔 ,则git cherry-pick other_branch~2


Q: 如何同时cherry-pick多笔?

A:git cherry-pick commit1 commit2 commit3, 好像不能 cherry-pick 一个范围内的commit

小贴士:可以用 git rev-parse 确认commit引用和 SHA1码之间的对应关系


Q: 如何查看简要的Log

A: git log --oneline

git log branch 可以查看某分支上的log

git log -3 可以查看最新的3笔记录


Q: 打补丁编译报错定位

A:

查看某文件的log:  git log -- filepath/filename

查看某文件在两笔commit上的改动 :git diff commit1 commit2 filepath/filename

查看谁修改了此文件的每一行 : git blame filepath/filename



Q:如何从当前commit删除文件?

A: git  rm --cached path/file 可以使该文件处于 untracked状态,然后在 git commit 就可以了

另外,若有多个文件要删,而文件处于不同路径,相同文件名的情况,可以用* 代替路径名,这一点 linux还是很强大的。


Q: 分支B 从分支A cherry-pick了多笔,然后分支A amend commit了,怎么快速同步这些amend 到分支B?

A:


Q: merge时遇到2进制文件冲突如何处理?

A:git checkout from_branch  -- file1 file2 filen


Q: 如何在最终提交前将多笔commit合并成一笔,并修改这一笔的comment

A: 以3笔记录为例

1. git rebase –i HEAD~3

2. 将第一笔Pick修改为reward , 即 use commit, but edit the commit message
3. 将第2,第3个pick批改为s,即 squash = use commit, but meld into previous commit

4. 然后输入":wq”退出。

5. 这时git会主动把第二,三个提交归并到第一个中去。并提示我们修改第一笔的comment.

6. git rebase --continue继续下一笔

这个FAQ在我们最后提交代码时很有用,因为我们经常会在本地多次修正和备份自己的代码。但最后提交时希望可以变得干净。


Q: 当本地有untracked或 unstaged代码时是否可以commit.

A:    放心吧,只会commit你已经 staged的代码,即执行过 git add 的代码。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值