在执行 git merge/rebase 的时候,有可能出现合并冲突。
这个时候,git会自动进入冲突合并状态(这个时候是一个脱节的checkout)。
这时,需要手工处理冲突。确认解决了冲突后,执行git add (相当于svn的 svn resolved,这个会让svn的用户不习惯), 所有的冲突解决完成后(已经对所有的冲突文件执行了git add), 使用了git commit -m'merged',(对于rebase 需要使用 git rebase --continue)那么git 将完成合并,并返回到合并前的checkout的分支去(不再是一个脱节的checkout)。
初学git的人,因为弄不清楚怎么使用,常常出现很多悬挂的commit(使用 git fsck --lost-found查看悬挂的commit)。不过这个不是什么问题,悬挂的commit因为过期(好像是30天), 最终被git gc给收走。如果想马上收走的话,可以执行:
git reflog expire --expire-unreachable=0 --all
git gc --prune=0
不过,不建议马上收走,因为不马上收走,让你有机会从错误的操作中恢复过来(比如错误的删除了一个分支,错误了reset了一个提交等)。况且悬挂的commit不会产生什么问题的,除了占用些磁盘空间外。
悬挂的commit是指,版本库中任何分支也无法到达的commit.
阅读(7169) | 评论(0) | 转发(0) |