Chinaunix首页 | 论坛 | 博客
  • 博客访问: 905461
  • 博文数量: 201
  • 博客积分: 8078
  • 博客等级: 中将
  • 技术积分: 2162
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-20 17:22
文章分类

全部博文(201)

文章存档

2013年(3)

2012年(11)

2011年(34)

2010年(25)

2009年(51)

2008年(77)

分类: WINDOWS

2010-12-26 20:28:46

在执行 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.
阅读(7118) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~