【转】github中origin和upstream的区别
Fork,本身并不是git工具中的一個命令,也不是對git的擴展,它是在GitHub上的概念,是另一種clone方式——在服務器端的clone。
而我們通常意義上的clone,是將遠程repo 復制一份到本地。
當你從GitHub上 clone 一個 repo 到本地時,除非你已明確聲明是這個repo的contributor,否則你是不能向其pull request的,此時,該遠程的repo對于本地repo來說,就是upstream。
當你從GitHub上 fork 一個 repo 之后,再 clone forked repo 到本地,你就可以任意向其pull request,此時,遠程的 repo 就是 origin。
下面一段是來自 GitHub pages 的解釋:
When a repo is cloned, it has a default remote called origin that points to your fork on GitHub, not the original repo it was forked from.
To keep track of the original repo, you need to add another remote named upstream
git remote add upstream git://github.com/user/repo_name.git
總結下來:?
1. 如果是 upstream repo,你只可以拉取最新代碼(即 git fetch ),從而保證你本地的倉庫與源倉庫同步?
2. 如果是 origin repo,就是你自己的repo(自己創建的,或者 fork 的項目)你可以做 任何推拉操作(pull and push)?
3. 你可以通過 pull request 向 upstream repo 貢獻代碼
Referenced by?http://stackoverflow.com/questions/6286571/git-fork-is-git-clone
In terms of source control, you're "downstream" when you copy (clone, checkout, etc) from a repository. Information flowed "downstream" to you.
When you make changes, you usually want to send them back "upstream" so they make it into that repository so that everyone pulling from the same source is working with all the same changes. This is mostly a social issue of how everyone can coordinate their work rather than a technical requirement of source control. You want to get your changes into the main project so you're not tracking divergent lines of development.
Sometimes you'll read about package or release managers (the people, not the tool) talking about submitting changes to "upstream". That usually means they had to adjust the original sources so they could create a package for their system. They don't want to keep making those changes, so if they send them "upstream" to the original source, they shouldn't have to deal with the same issue in the next release.
http://stackoverflow.com/questions/2739376/definition-of-downstream-and-upstream/2749166#2749166
What is the difference between?origin?and?upstream?in github?
When a?git branch -a?command is done, some branches have a prefix of?origin(remotes/origin/..) while others have a prefix of?upstream?(remotes/upstream/..).
================
?
This should be understood in the context of?GitHub forks?(where you fork a GitHub repo at GitHub before cloning that fork locally)
- upstream?generally refers to the original?repo that you have forked
(see also "Definition of “downstream” and “upstream”" for more on?upstream?term) - origin?is your fork: your own repo on GitHub, clone of the original repo of GitHub
From the GitHub page:
When a repo is cloned, it has a default remote called?origin?that points to your fork on GitHub, not the original repo it was forked from.
To keep track of the original repo, you need to add another remote named?upstream
You will use?upstream?to?fetch from the original repo?(in order to keep your local copy in sync with the project you want to contribute to).
You will use?origin?to?pull and push?since you can contribute to your own repo.
You will contribute back to the?upstream?repo by making a?pull request.
http://my.oschina.net/uniquejava/blog/481625
總結
以上是生活随笔為你收集整理的【转】github中origin和upstream的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 每月工资怎么存合适?工薪族理财技巧!
- 下一篇: 月薪6000存钱技巧!教你如何告别死工资