背景:
我fork了阿里巴巴 dubbo 项目的代码到自己的github账户下,然后从自己的github下 clone了代码到本地磁盘。
这个时候阿里巴巴的dubbo项目有新代码提交了,我想把这些新代码同步到我自己的github下fork出来的仓库里面去。
用命令行来做的话,就三个步骤(先已经把自己github仓库下的dubbo项目clone到本地磁盘了)。
1、首先要先确定一下本地仓库关联了那些远程仓库
git remote -v // 不使用命令,直接去.git/下查看 config 文件也可以。
2、如果只能看到你自己github上远程仓库的的两个源(fetch 和 push),那就需要添加fork时的原repo的源,也就是阿里巴巴dubbo项目本来的远程仓库:
git remote add upstream URL // 这里的upstream是一个名字,可以自定义的,只要能表达出你要关联的远程仓库地址即可。 // URL 是目标远程仓库地址。 // 完整的语法为 git remote add <name> <URL> 比如我现在想关联到阿里巴巴的dubbo开源项目的远程地址可以这样来做: git remote add alibaba https://github.com/alibaba/dubbo.git 以后想从阿里巴巴的dubbo项目仓库地址pull代码或者push代码到阿里巴巴的dubbo项目可以这样来做。 git pull alibaba master // 拉代码 git push alibaba master // 推代码 (当然,前提需要有权限)
再次查看
git remote -v
然后你就能看到upstream了。(自定义了名字叫upstream,自定义名字为alibaba,看到的就是alibaba)
3、如果想与主repo合并,执行以下命令:
git fetch upstream git merge upstream/master 思考,难道不可能直接执行 git pull upstream 吗?
下面我拿dubbo开源项目来实际操作一遍。
首先我已经fork了dubbo的源代码到我自己的仓库,地址是:
https://github.com/xigua366/dubbo.git
dubbo项目本身的仓库地址是:
https://github.com/alibaba/dubbo.git
第一步,clone自己fork的dubbo项目到本地磁盘,我放到D:\githubcode下。
$ git clone https://github.com/xigua366/dubbo.git
第二步、查看远程仓库信息。
git remote -v
这个时候只能看到自己github仓库下的两个源(fetch 和 push),默认的远程仓库地址代号都叫做origin。
所以需要添加阿里巴巴dubbo项目本身的仓库地址源(这里我自定义这个远程仓库地址为upstream,可以任意定义的,自己能分得清就行)
git remote add upstream https://github.com/alibaba/dubbo.git
并在此查看关联的远程仓库信息,会发现多了dubbo项目本身的仓库地址源
执行合并,将 upstream上的最新代码合并到本地磁盘的代码中来,然后自己commit,然后如果没有冲突就push到origin 远程仓库中,有冲突就先解决冲突,再commit,再push到自己github的远程仓库中去。
因为我这的fork下来的dubbo已经是最新的了,没什么改动,所以merge的时候提示我 Already up-to-date,意思就是我我的自己的代码已经是最新的了。
如果不是最新的,就会有内容。
其它想说的:
我: 对应一个本地git仓库,可以同时指向多个远成仓库的。 origin 这个名字只是默认的。 : 嗯嗯,可以自定义的 我: 周六我以为upstream这个单词就表示原作者的github仓库。 我: 哈哈 其实我定义 abc 也可以的。 我: origin 也好,upstream也好都是平等的。 我: 仅仅是不同的单词。 我: 懂了,懂了,哎,以前用svn多了。。 我: git remote rm origin git remote add yx https://github.com/alibaba/dubbo.git 我: 执行这两个命令,可以把默认的origin改掉。 改成 yx 我: 额 这样的话,我干嘛叫 upstream ,直接改成 alibaba 不就好了。
我: 如果关联了多个远程仓库,那么以后push代码或者pull代码的时候不能简单的使用git push了或者git pull了吧? 我: 一定要指明远程仓库的名字。 比如 git push alibaba master ? : 嗯嗯,是的 我: 瞬间感觉打通了任督二脉。 以前天天用工具在界面操作。 我: 经过测试,发现并不是这样,如果origin 这个名字存在的话,默认还是找origin代表的远程分支的。
我: 除非把origin名字改掉,才需要明确指定。 : 是的,存在多个远程仓库时,push需要明确仓库和分支,否则会push到默认的
现在把origin 改成 yx试试:
结果证明,origin只是默认的远程分支,没有了默认的远程分支时,无论pull还是push都必须指明remote(远成仓库)才能操作成功。
2017-11-22 补充: 其实并不是origin这个单词就是默认的,而是-u参数决定的。
比如:
参考资料: https://segmentfault.com/q/1010000002590371
相关推荐
该脚本是本人写的一个小脚本,只要有对方的用户名可以方便快捷获取该账号在github中的start和fork数,欢迎大家下载;
给 Fork me on GitHub 换个风格.zip,A fresher "Fork me on GitHub" callout.
git最为常用的简单指令,已分类好,标注用途,适合用来当一下手册
使用GitHub进行Go命令的自我更新机制 是一个Go库,可为命令行工具提供自更新机制。 Go不提供安装/更新工具稳定版本的方法。 默认情况下,Go命令行工具已更新: 使用go get -u ,但是不稳定,因为构建了存储库的...
> = v2.0.0运行npm install&npm test以确保没有任何损坏 安装版本1.1.0,无npm test npm install merge-github-fork@1.1.0 -g 或运行npm test最新版本,以确保合并后没有损坏(显然,仅适用于具有通过测试套件的...
github fork仓库对原始仓库修改未合并的查询。方便快速的找到小码哥fork某仓库之后修改修改合并合并到主仓库的变更。可以使用学习心仪项目在其他同道中人的手中做的改变。爱屋及乌,学习一下别人怎么搞的。 对抗!!...
cli-github, 用于 命令行的漂亮的GitHub客户端 CLI GitHub A fancy GitHub client for command line.. . . . ::... . . . , , LLCCCCCCLL,,. . , , CCCCCCCC
使用eclipse或git命令行将项目托管到github
gh 是一个用 Go 语言开发的 Github 命令行客户端。
吉拉夫jiraf是基于Atlassian Jira和GitHub的工作流的命令行帮助器。 注意:jiraf是beta版。 请报告任何问题。设置安装npm install -g jiraf授权创建Atlassian API令牌:导航至并记下您的用户名,单击API令牌并为您...
contributors-命令行工具,用来获得一个或是更多 github 仓库的贡献者
GitHub Fork存储库同步 为什么? 目前,Github没有简单,直接的方法来自动将派生与原始存储库同步。 依存关系 Python 用 执行 curl -sL bit.ly/repo-sync | bash 或者 bash <( curl -sL bit.ly/repo-sync ) 在...
git-stat:用于从github获取统计信息的命令行应用程序
go-github-selfupdate:一个Go库提供命令行工具的自我更新机制
它将拉取请求,问题和其他GitHub概念带到您已经使用git和cod gh的地方的终端-GitHub CLI工具gh是命令行上的GitHub,现在可以在beta中使用。 它将拉取请求,问题和其他GitHub概念带到已经使用git和代码的位置旁边的...
从命令行调用GitHub API的Bash命令 设置-使用您的信息编辑github.cfg 用法 # Create a GitHub repo >./githubcreate my-repo-name "Some Description" # Add collaborator >./githubaddcollaborator my-repo-name ...
在 GitHub 上创建新仓库 提交你的第一个修改 Fork 一个仓库 Fork 一个示例仓库 同步你的 Fork 仓库 检索其他仓库来 Fork 社会化 Follow 一个人 Watch 一个项目 其他你可以做的事 图形化工具 GitHub for Windows ...
您可以不通过进行安装而使用github-fork-ribbon-css。 将以下代码复制到页面的<head>中: < link rel =" stylesheet " href =" ...
iotdb github仓库
命令行实用程序,用于更新GitHub提交状态并为拉取请求启用必需的状态检查。 对于CI环境而言,设置更特定的提交和构建状态非常有用,包括设置目标URL(代表构建状态的页面URL或已部署应用程序的URL)。 注意:使用...