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
hguenot/yii2-gftp
hguenot/yii2-gftp
hguenot/yii2-gftp
並沒有收到。而我發現在
hguenot/yii2-gftp 是可以直接在網頁上進行 pull request
然後
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 專案對原有專案無權限的修改提交。
你的 fork 和 upstream 是不同的 repo,因此 push 到 fork 並不能讓 upstream 知道;這是前提,也是 git 的基本概念之一,顯然你對此很模糊
先不談命令列,你得先知道 github 是如何處理 pull request 的(當然,你得先知道什麼是 pull request,這些資訊可以去看 github help)
然後去看看 git 的文檔裡關於 request-pull 子命令的文檔,這時候你開始建立起 push to fork then let upstream know 的理論基礎
不幸的是,僅僅靠
git request-pull
还不能直接完成 github 的 pull request(不是不能,而是有点复杂);幸运的是:如果你用 GUI,那么 github 有 app 可以帮你做这件事;如果你用 CLI,那么 1)mac 下 可以brew install hub
thenhub/git pull-request
,2)linux 下可以用sudo apt-get install github-cli
,3)windows?不清楚,或許可以求救 scoop對於一般使用者來說,學會在 web 和 app 下操作 github 就夠了,玩 cli 需要一定的技巧和探索能力。