git的一些记录

1. 从一个git仓库迁移到另外一个git仓库

  • 从原地址克隆一份裸版本库,比如原本托管于 GitHub。
    git clone --bare git://github.com/username/project.git
    –bare 创建的克隆版本库都不包含工作区,直接就是版本库的内容,这样的版本库称为裸版本库。

  • 然后到新的 Git 服务器上创建一个新项目,比如 GitCafe。

  • 以镜像推送的方式上传代码到 GitCafe 服务器上。
    cd project.git
    git push --mirror git@gitcafe.com/username/newproject.git
    –mirror 克隆出来的裸版本对上游版本库进行了注册,这样可以在裸版本库中使用git fetch命令和上游版本库进行持续同步。

  • 删除本地代码
    cd …
    rm -rf project.git

  • 到新服务器 GitCafe 上找到 Clone 地址,直接 Clone 到本地就可以了。
    git clone git@gitcafe.com/username/newproject.git
    这种方式可以保留原版本库中的所有内容

2. git cherry-pick

cherry-pick的作用是,将某次或者某几次的提交,在另一个分支上进行重演。

  • 在自己的分支上切新的分支
  • 选择逐一cherry-pick还是合并commit
  • 合并commit方法:
    • git log查看commit信息
    • git reset到需要合并的前一个
    • 再提交一次commit(合并以前的commit会丢失)
  • 另一种合并commit方法 (https://blog.csdn.net/yuanfang_way/article/details/78970709):
    • git rebase -i HEAD~3
  • 到master分支上拉最新的再切新的分支
  • cherry-pick合并的commit
  • push一把就可以提pr了

3. git rebase or git merge

  • merge会造成多一次的commit提交记录,并且提交记录是按照各个提交时间排列的。
  • rebase不会造成多一次的committ提交记录,并且b分支的所有commit顶到最顶端。
  • merge操作只需要解决一次冲突,但对这个分支的纯洁性是有毁灭性的,如果merge发现冲突过多,回滚起来麻烦。
  • rebase操作则可能基于某个文件解决多次冲突,如果发现冲突过多,随时可以abort 恢复原来的状态

https://www.jianshu.com/p/4b769b934472?utm_campaign

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值