记录一些git的原理学习,以及工作学习中遇到的一些git的操作问题。
操作
pull request
第一次提pr
- fork原仓库
- 本地clone,两个remote,fork和origin
- checkout -b new-branch
- 修改,add,commit,push
- 在github提pr
修改提过的pr
本地仓库与远程同步
直接修改,然后push到fork的对应分支就行,会自动更新。
本地仓库与远程不同步
以下操作都在new-branch分支上
- git fetch origin
- git rebase origin/master
- 如果有冲突则解决,然后
git rebase --continue
继续rebase - push fork
rebase
修改 git 的历史 commit,你能想到几种方案? 详细介绍了rebase基本用法
object损坏
如图,我也不知道为什么突然就寄了。。。
总之进行了这些操作,虽然不知道是哪个起作用了,但总算好了:
https://blog.csdn.net/xiaoqixiaoguai/article/details/128591332
首先删除空白对象
1 | cd .git |
然后更新ref到某个版本号
1 | cd .. |
如果还不能用,继续:
1 | rm .git/index |
我到这里之后显示:
继续执行:
修复 refs/remotes/origin/master:
1
2bashCopy codegit update-ref -d refs/remotes/origin/master
git fetch origin这将删除损坏的
origin/master
引用,然后从远程仓库重新获取。修复 dangling blob:
如果
git fsck
显示了dangling blob
,你可以尝试删除这些对象:1
2bashCopy codegit reflog expire --expire=now --all
git gc --prune=now这将清理无用的 dangling 对象。
成功。
原理
merge与rebase的差异
merge:
rebase: