Egit笔记(二)

二、远程仓库的使用

1、首先要注册github账号

2、添加SSH Key

本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以要创建SSH Key


首先要在本地生成公钥私钥,可以通过git命令生成,前提要安装git,git命令如下:

ssh-keygen -t rsa -C youremail@example.com,邮箱改成自己的邮箱


生成过后,公钥路径C:\Users\用户名\.ssh\id_rsa.pub

打开eclipse,会看到它会自动扫描到



登录账号后,点击settings->SSH and GPG keys,再点击new SSH key,将id_rsa.pub文件中的东西全部复制到key里



3、新建远程仓库

github主页点击new repository来新建远程仓库,建好后如下显示:


记得要把远程地址复制一下,SSH后面的地址就是连接到远程仓库的URI

4、eclipse中的配置

进入window->preference->Team->Git->Configuration

配置user settings(见egit笔记一)

配置Repository settings

简单的办法就是在.git的config文件中添加

[branch "master"]
       remote = origin
       merge = refs/heads/master
[remote "origin"]  
    url = git@github.com:lxjcumt/testrepo.git  
    fetch = +refs/heads/*:refs/remotes/origin/* 

添加完后应该有如下显示:


5、推送(push)主分支到远程主分支

右键仓库点击push


显示如下:


点击next,会连接到远程仓库(有时会因为连接github太慢出现超时)


选择原分支和目标分支,点击add


点击finish,本地仓库就会推送到远程仓库


打开github,会发现仓库里有了创建的项目


6、从远程pull最新版本

假如远程仓库修改了版本,而本地没有跟着更新的话,本地向远程push的时候就会被rejected,这时就需要从远程pull最新版本

成功后显示如下:


pull过程,也可以被fetch+merge取代

7、冲突解决

当将本地版本和远程版本合并时,若同时修改了同一个文件,就会发生冲突。

比如本地和远程同时修改了hello.java文件,

本地修改为:

package javapro;


public class hello {


public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("本地修改");


}


}

远程修改为:

package javapro;


public class hello {


public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("远程修改");


}


}

先从远程fetch远程主分支:

右键仓库->fetch->finish

目前还没有合并,所以history显示如下,此时本地主分支分出了一个远程分支。本地版本号是c239849,fetch下来的远程版本号是2500350


然后合并两个分支,右键仓库->merge,显示如下:


点击merge,显示冲突:




本地源文件被修改为如下:


<<<<<HEAD下面的是本地冲突内容,=======是分割线,>>>>>>refs/remotes/origin/master是远程冲突内容。

项目文件图标也会有红色标记,如下图:



项目右键->team->merge tool


显示如下,选择第二个选项:


就会显示如下图:


可以看到左边是本地版本,可以修改,右边是远程版本,不能修改。

将左边修改如下:


打开源文件就会发现源文件hello.java也被修改了,此时再将项目add to index,在git staging窗口进行commit

此时两者已经合并,如下图:


此时就可以向远程仓库进行push合并后的版本了。


tips:对于二进制文件的冲突,你肯定不想通过编辑二进制文件来解决冲突,那是不可能完成的事情。
你要做的就是:要么选择对方的修改,要么选择自己的修改。

但是我不知道怎么在eclipse上操作,所以可以用命令行

你可以用git checkout的--theirs--ours选项。

git checkout --theirs YOUR_BINARY_FILE
// git checkout --ours YOUR_BINARY_FILE

或者 

冲突二进制文件剪切到桌面,修改commit到本地,pull,再从桌面剪切回去,commit,push(如果选择别人的文件就不用剪切回去了)

或者

push的时候选中Force Update强制覆盖





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值