首页 > git push 如何提交到 upstream ? 让 fork 知道有 commit

git push 如何提交到 upstream ? 让 fork 知道有 commit

Administrator@USER-20140 /D/website/flxx2/basic/vendor/g9901/yii2-gftp (master)
$ git remote -v
origin  git@github.com:G9901/yii2-gftp.git (fetch)
origin  git@github.com:G9901/yii2-gftp.git (push)
upstream        https://github.com/hguenot/yii2-gftp.git (fetch)
upstream        https://github.com/hguenot/yii2-gftp.git (push)

G9901/yii2-gftp 是我 fork 来自 hguenot/yii2-gftp,我现在在本地修改了,然后git push,可 hguenot/yii2-gftp 并没有收到提交。而我发现在 hguenot/yii2-gftp 是可以直接在网页上进行 pull request 然后commit,为什么不能客户端提交?

Administrator@USER- /D/website/flxx2/basic/vendor/g9901/yii2-gftp (master)
$ git push upstream
Username for 'https://github.com': G9901
Password for 'https://G9901@github.com':
remote: Permission to hguenot/yii2-gftp.git denied to G9901.
fatal: unable to access 'https://github.com/hguenot/yii2-gftp.git/': The request
ed URL returned error: 403

无法提交到 upstream ,那么原作者就无法知道有修改,无法操作合并,可问题是我在github.com的网页里面却可以提交 commit,如何才可以在我客户端提交过去。

稀里糊涂的

现在在 github.com 网页上提交了,又变成这样了: https://github.com/hguenot/yii2-gftp/pull/5

G9901 wants to merge 4 commits into hguenot:master from G9901:master


使用 git push 默认将推送到 origin 对应的远程仓库,所以 upstream 是没有的获得commit 的,如果要推送到 upstream 有两个要求,第一是你对 hguenot/yii2-gftp.git 有写的权限,也就是你加入了此项目。第二是显式的推送 git push upstream ,提示上说明你没有对 hguenot/yii2-gftp.git 写的权限。Pull/Request 是一个 fork 项目提交了修改合并的机制,适用于fork 项目对原有项目无权限的修改提交。


  1. 你的 fork 和 upstream 是不同的 repo,因此 push 到 fork 并不能让 upstream 知道;这是前提,也是 git 的基本概念之一,显然你对此很模糊

  2. 先不谈命令行,你得先知道 github 是如何处理 pull request 的(当然,你得先知道什么是 pull request,这些信息可以去看 github help)

  3. 然后去看看 git 的文档里关于 request-pull 子命令的文档,这时候你开始建立起 push to fork then let upstream know 的理论基础

  4. 不幸的是,仅仅靠 git request-pull 还不能直接完成 github 的 pull request(不是不能,而是有点复杂);幸运的是:如果你用 GUI,那么 github 有 app 可以帮你做这件事;如果你用 CLI,那么 1)mac 下 可以 brew install hub then hub/git pull-request,2)linux 下可以用 sudo apt-get install github-cli,3)windows?不清楚,或许可以求助 scoop

对于一般用户来说,学会在 web 和 app 下操作 github 就够了,玩转 cli 需要一定的技巧和探索能力。

【热门文章】
【热门文章】