`
xigua366
  • 浏览: 103092 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

github下fork后如何用命令行同步源仓库的新更新

阅读更多

 

背景:

 

我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参数决定的。

比如:

git push -u origin master 第一次执行push时加了 -u 参数,那么就意味着把origin这个远程仓库作为默认的了。 如果执行 git push -u albaba master 那么 alibaba 这个远程仓库就是默认的了,git并不是认origin这个单词的。

 

 

参考资料: https://segmentfault.com/q/1010000002590371 

  • 大小: 34.8 KB
  • 大小: 43.7 KB
  • 大小: 50.3 KB
  • 大小: 52.4 KB
  • 大小: 81.4 KB
  • 大小: 149.8 KB
0
0
分享到:
评论

相关推荐

    github的使用入门

    - 同步(sync)本地仓库与 GitHub 仓库,实现代码更新。 **5. 添加 README 文件:** - README 文件通常用于介绍项目的背景、功能及使用方法等信息。 - 在本地仓库根目录下创建 README.txt 或 README.md 文件。 - ...

    github的使用手册(基础篇)

    在GitHub上创建新仓库是使用该平台的第一步,之后的代码提交、版本控制和协作都是围绕仓库进行的。仓库支持公有和私有两种状态,公有仓库可以让全世界的开发者看到和参与你的项目,而私有仓库则更加适合闭源的商业...

    Github使用手册

    GitHub for Windows和GitHub for Mac提供了图形化的操作界面,方便用户在不使用命令行的情况下完成仓库的fork、提交、同步等操作。这些图形化工具大大降低了版本控制的使用门槛,使得那些不熟悉Git命令行的用户也能...

    Windows桌面安装github.rar

    同时,GitHub Desktop还支持拉取(Pull)和合并(Merge)操作,帮助您同步远程仓库的更新到本地。 GitHub Desktop不仅限于个人使用,还支持团队协作。您可以通过“分享”功能将本地仓库推送到一个新的GitHub仓库,...

    git客户端fork安装包

    2. **快速克隆与同步**:通过Fork,你可以一键克隆远程仓库到本地,同时支持快速同步更新,确保本地代码库始终与远程保持一致。 3. **分支管理**:Fork提供了强大的分支管理功能,可以方便地创建、切换和合并分支。...

    GitHub-Desktop-220

    4. **日常操作**:进行文件编辑后,可以在GitHub Desktop中查看改动,然后提交并推送至远程仓库。 5. **协作与分享**:如果你的项目是公开的,其他用户可以fork和贡献代码,你可以在GitHub Desktop中查看并合并他们...

    GitHub win32安装

    7. 当你在本地做出更改并准备好共享时,可以点击“推送到GitHub”,这将把你的更改同步到远程仓库,其他团队成员或社区成员就可以看到和访问这些更新。 8. 除了GitHub Desktop,你还可以使用Git命令行工具进行更...

    GitHub for Mac 客户端

    2. **实时同步**:与GitHub服务器保持实时连接,更新和提交状态即时可见。 3. **简化操作**:通过拖放操作添加文件,一键完成提交和推送,适合不熟悉Git命令的用户。 4. **代码审查**:在客户端内处理Pull Request,...

    GitHubDesktop

    5. **同步更新**:只需点击一下,即可拉取远程仓库的最新改动,合并到本地,避免了手动执行`git pull`命令的繁琐。 6. **可视化冲突解决**:当合并时出现冲突,GitHubDesktop会提供可视化工具帮助用户解决。 7. **...

    Python开发工具合集之Github

    你可以创建一个公开或私有的仓库,将Python项目上传到这个仓库中,这样其他开发者就可以访问、 fork(复制)你的项目,并提交pull request(拉取请求)来提出代码更改建议。此外,GitHub的Issue功能使得项目维护者和...

    git可视化工具-Fork(mac版)

    - **同步操作**:一键同步远程仓库的最新变更,支持快速拉取、推送和强制推送。 - **暂存区管理**:可以逐个或批量选择文件添加到暂存区,方便进行部分提交。 - **代码编辑**:内置代码编辑器,支持语法高亮,...

    玩转git与github.pptx

    - **Fork与Pull Request**:Fork是指将他人的仓库复制到自己的账户下,之后可以通过发送Pull Request的方式提出修改建议,供原项目维护者审查和合并。 - **标签管理**:通过`git tag`命令创建标签,也可以直接在...

    github windows

    在左侧的“+”按钮下,可以创建新仓库或克隆现有仓库。 **6. 推送与拉取代码** 当你在本地进行了修改并提交后,可以点击“同步”按钮将更改推送到远程GitHub仓库。同样,如果你想获取最新的远程代码,可以选择...

    GitHub 教程简介:基本视觉指南.pdf

    - **应用场景**:当你希望同步远程仓库的最新变化到本地时,可以使用拉取操作。 ### 三、GitHub 在团队协作中的应用 #### 1. 创建个人副本 - 当团队成员需要参与到一个项目中时,第一步是通过叉取的方式创建一个...

    Git-1.9.4-preview20140929和GitHub

    安装Git后,开发者可以利用其强大的命令行工具进行版本控制操作,如初始化仓库(`git init`)、添加文件到仓库(`git add`)、提交更改(`git commit`)、查看历史(`git log`)、分支管理(`git branch`和`git ...

    Teste-GIT:测试 Github 终端和客户端存储库同步

    8. **仓库同步**:在本地终端和GitHub之间同步仓库,确保所有开发者的代码更新都得到及时整合。这涉及到`git pull`从远程仓库获取更新,以及`git push`将本地更改推送到远程仓库的过程。 9. **版本分支管理**:Git...

    fork-fest:GitHub脚本为您更新所有分叉!

    标题中的“fork-fest”可能是指一个关于在GitHub上处理分叉(fork)的活动或者工具,它旨在帮助用户更有效地管理和更新他们在GitHub上的所有分叉项目。分叉是GitHub上的一个重要概念,允许用户复制其他用户的仓库以...

    Git使用详解结合GitLab和GitHub

    【Git使用详解结合GitLab和GitHub】 Git是一个强大的开源分布式版本控制系统,由Linus Torvalds为Linux内核开发而创建。与传统的集中式版本控制系统(如CVS和Subversion)不同,Git采用分布式模式,每个开发者的...

    github是一个基于 Git 版本控制系统的代码托管平台.docx

    2. **创建新仓库**:登录后,可以通过主页上的“New”按钮来创建一个新的代码仓库。命名时,可以根据项目性质和个人喜好选择是否将其设为公开。 3. **Clone 仓库**:使用命令行工具(如Git Bash),执行`git clone ...

    For_learning:只是为了通过命令行学习有关git和github的知识

    6. **工作流程**:在本地修改代码后,使用`git add`添加改动,`git commit`提交变更,然后用`git push`将更改推送到GitHub: ``` git add . git commit -m "提交信息" git push origin master ``` 7. **分支...

Global site tag (gtag.js) - Google Analytics