zoukankan      html  css  js  c++  java
  • 【git操作】如何在两个git客户端间同步代码

    问题描述

    公司git服务器因为断电挂掉了,自己又分别在win与linux两个环境下进行了代码的编写,现在就是需要将win上编写的代码,合并到linux环境下。

    操作方法

    通过在网上查找方法,决定使用git bundle来进行代码的合并。

    win下生成bundle文件

    首先确定win下需要合并的commit:
    git log
    这里我需要将最近的4条commit生成bundle文件,这里指定分支为master分支:
    git bundle create master_bundle -4 master
    就是就生成了buddle文件。
    然后对所生所的bundle文件进行检验:
    git bundle verify master_bundle
    确认没有问题之后,将master_bundle文件拷贝到linux环境下。

    linux下应用bundle

    将bundle文件放置到代码路径上一级,进行合并操作:
    git fetch ../master_bundle master:master

    我在这里出现了两个问题:

    1、首先需要将代码分支切换到其他分支(非所需要的分支,这里为master),不然会继续操作报如下的错误:

    fatal: Refusing to fetch into current branch refs/heads/masters of non-bare repository

    2、由于linux下还有其他的提交,导致合并失败:

    ! [rejected] master-> master(non-fast-forward)

    解决方法是:
    首先基于linux环境master提取一个备份分支:
    切换到master分支
    git checkout master
    创建临时分支
    git checkout -b master_tmp
    然后将后继提交的commit撤销:
    git reset --hard commit号
    执行上述的合并操作,

    [jesse@jesse workspace]$ git fetch ../master_bundle master:master
    From ../master_bundle
    7cc3597..bcc8870 master -> master

    完成之后,再将临时分支,合并到master分支,如果有冲突,解决冲突:
    切换到master分支
    git checkout master
    合并操作
    git merge --no-ff master_tmp

    这样,就可以将win下的代码合并到linux下的。

    最后的话

    git还是非常灵活的工具,自己知道的也是九牛一毛,还需要继续学习,上述解决问题的方法,应该还是有最优解,以后有时间了,还是要再继续优化一下。
    有问题还是多查git手册
    以后要多写点博客记录下工作与学习,学会分享。
    嗯,继续干活了。。。

    参考链接资料:

    git-bundle
    git线下传输仓库

  • 相关阅读:
    Spring MVC+Spring +Hibernate配置事务,但是事务不起作用
    Spring MVC 上传文件
    早安日语1
    Spring MVC学习初篇
    Eclipse中查看JDK源码设置
    Eclipse常见设置及快捷键使用总结(更新中)
    Java中boolean型变量的默认值问题
    [转载]浅析Java中的final关键字
    Eclipse中Outline里各种图标的含义
    [转载]深入理解JAVA的接口和抽象类
  • 原文地址:https://www.cnblogs.com/JesseTsou/p/8907147.html
Copyright © 2011-2022 走看看