[已解决]如何修改人家贡献的PR,不想先合并再修改
https://tighten.co/blog/adding-commits-to-a-pull-request/
Google 搜到一个帖子操作起来更简单。
Cloud2016
我想修改https://github.com/cosname/cosx.org/pull/1019里面文章的内容,但是没看明白你们上面讨论的东西。
我从这里git fetch origin refs/pull/771/head:patch-2
开始执行就报错了。
$ git fetch origin git@github.com:cosname/cosx.org/pull/1019/head:patch-1
fatal: invalid refspec 'git@github.com:cosname/cosx.org/pull/1019/head:patch-1'
没琢磨出来refs是什么意思,于是照着https://tighten.com/blog/adding-commits-to-a-pull-request/又鼓捣了一下,我是这么操作的:
#克隆仓库到本地
git clone git@github.com:cosname/cosx.org.git
#为了查看别人提交的PR,增加一个remote?
git remote add XiangyunHuang git@github.com:cosname/cosx.org.git
#查看分支目录
git remote -v
#看到了
`XiangyunHuang git@github.com:cosname/cosx.org.git (fetch)`
`XiangyunHuang git@github.com:cosname/cosx.org.git (push)`
#又抓取了什么?
git fetch XiangyunHuang
```
remote: Enumerating objects: 10258, done.
remote: Counting objects: 100% (936/936), done.
remote: Compressing objects: 100% (616/616), done.
remote: Total 10258 (delta 597), reused 525 (delta 289), pack-reused 9322
Receiving objects: 100% (10258/10258), 9.49 MiB | 16.00 KiB/s, done.
Resolving deltas: 100% (7973/7973), done.
From github.com:cosname/cosx.org
* [new branch] beamer-down -> XiangyunHuang/beamer-down
* [new branch] master -> XiangyunHuang/master
* [new branch] scihub -> XiangyunHuang/scihub
* [new branch] 鏇存柊澶氬閿欏埆瀛?缂栧彿 -> XiangyunHuang/鏇存柊澶氬閿欏埆瀛?缂栧彿
```
但是好像并没有把我想改的内容抓到本地,而是只是把cosname/cosx.org
的内容抓到了本地。
- 已编辑
yihui
在运行下面这步之前,我是不是漏了什么常识性操作?或者我是不是还应该先学点git常识?
usethis::pr_fetch(1019)
我直接在RStudio里面执行,报错了,错误如下:
由于我也很迷,不知道还应该提供点什么参考信息,附上我电脑上现在装了git那个文件夹的目录:
在单击git-bash.exe后弹出来那个黑色窗口执行以后也是报错:
$ usethis::pr_fetch(1019)
bash: syntax error near unexpected token `1019'
本来我想当个普通青年的,因为给了我一个什么权限以后,就可以直接去修改稿件中的 index.rmd 文档,然而我现在需要照着三水大人所言重新上传一部分数据,以及修改一个 index.html 文档,所以还是得琢磨下怎么把内容抓到本地来修改。哈哈,还好审稿的tc君还没审,我还可以继续漫长卡关。
- 已编辑
yuanfan 你这个 D 盘下的 R/Git 目录看得我好晕,文件们怎么会乱成如此这般一锅粥咧……本来我打算睡觉去了,这一锅粥看得我又清醒了。你好像把至少三样东西杂糅到同一个文件夹下了:git 软件(git-bash.exe 等)、cosx.org 库(cosx.org 文件夹)、cosx.org 库下的文件和文件夹(content 等文件夹)。
首先,Git 不用和某个 Git 库放在一起,安装的时候按默认路径装就可以了(当然,修改安装路径也行,只是别和 Git 库混在一起)。
然后,克隆库;如果你在 Github 上正确配置了 SSH 公钥,那么用 git@github.com:cosname/cosx.org.git
地址克隆。如果不会配置,那明天我再看看用 https 协议是怎么配置密码的(相应地用 https://github.com/cosname/cosx.org.git
地址克隆)。我自己一直都是用 SSH 钥匙的,但我不熟悉 Windows 下的 SSH 配置。
最后,假设上面的库克隆到了单独的文件夹下,那么进入那个文件夹,打开 cosx.Rproj,再运行 usethis::pr_fetch(1019)
应该就可以了。它是 R 代码,不能在 git-bash 窗口中运行。
yuanfan 或者我是不是还应该先学点git常识?
只要你以前曾经从本地成功向 Github 提交过任何更改,那么就说明你的 Git 配置都是好的,也不需要任何其它 Git 知识了。感觉你好像通常都是在 Github 网站界面上直接操作的。
yuanfan 我直接在RStudio里面执行,报错了,错误如下:
报错可能是因为你打开的并不是一个正常克隆下来 Git 库。否则这个 Git 库应该会有远端地址(而你打开的没有,Git 不知道你的库的远端地址,所以无法从远端拉取记录)。
突然感觉 Git 对我来说是最难解释清楚的技术问题,尤其是 Windows 下,分分钟让我有种黔驴技穷、穷途末路、路见不平拔刀自刎的感觉……
- 已编辑
yihui
我的git配置应该是好的,但只有一点是好的,打开rstudio是能连上github上面我的账号的。大约一周多以前卡关的时候,我照着网上搜来的信息瞎改了一些东西,你所述的SSH配置,我这边长这样,但不知道是不是好使的:
虽然我是2021年开始写博客,但是其实我建博客前前后后卡了半年多(因为不会科学上网,用不了netlify,后来改用vercel),只有第一次把各种文件一股脑传到github上是git commit然后push,后来2021年1月底春节期间打算学习git,瞎操作把博客整崩了,又瞎操作一通恢复以后就不用命令了,全都是“Add files via upload”。所以说,我写我缺乏常识不是表示我自卑,也不是菲薄自己,哈哈,是真得觉得缺乏常识。但我也不知道缺乏些什么常识。哈哈,好绕。
如你所说,我之前确实抓取过cosx.org库到本地,现在进入这个文件夹,里面有个cosx.Rproj,单击一下直接就打开了Rstudio,执行你给的代码报错如下:
Error in libgit2::git_remote_fetch : Authentication failure
这个错看字面意思是说身份验证失败,这一通绕回来,好像还是我哪里配置的不对。
如果你在 Github 上正确配置了 SSH 公钥,那么用
git@github.com:cosname/cosx.org.git
地址克隆。
好在 git-bash 和普通 bash 一样可以用history
看历史代码,我翻到了这条git clone git@github.com:cosname/cosx.org.git
,这应该就是当初我克隆cosx.org库的那条,不过我执行完这段以后才发现应该要指定克隆到本地的文件目录。而且后面我瞎操作想要切换分支的时候出问题了,我克隆了两次,所以现在那个目录如此混乱。但至少是不是说明我还是正确配置了SSH钥匙?
看到了。
$ ssh -T git@github.com
Warning: Permanently added the ECDSA host key for IP address '140.82.113.3' to the list of known hosts.
Hi earfanfan! You've successfully authenticated, but GitHub does not provide shell access.
- 已编辑
突然感觉 Git 对我来说是最难解释清楚的技术问题,尤其是 Windows 下,分分钟让我有种黔驴技穷、穷途末路、路见不平拔刀自刎的感觉……
冷静点。即使益辉是大神,很想要帮我解决问题,但是也留给我这个菜鸟一点消化理解的时间。到点就去睡吧。一口气解释不清楚没关系的啊喂。
这波等我搞清楚我是缺了哪些常识,我一定勤勤恳恳写一个超级新手入门级的博客来解释我遇到的这些问题和答案。
不是黔驴技穷,应该是鄂驴。
还有一个小问题,如下:
This is a list of SSH keys associated with your account. Remove any keys that you do not recognize.
为何把“SSH keys”翻译成SSH 公钥?虽然我英文菜,但是刚好这句话里面的单词我都认识,我看的时候脑子里翻译的是SSH 钥匙。仅仅从这一小点来看,益辉解释不清楚的原因其实也是因为,菜鸟如我并不知道一些 git 这个工具的领域内一些默认的常识。
- 已编辑
所谓的「常识」部分可以看看 Git 中文帮助文档 的前四章。
- 已编辑
其实我觉得现在的审稿制度可能应该双向进行,现在的PR模式可能把很多编辑的责任转嫁到了作者身上,导致要给主页投稿,还得安装一堆blogdown的依赖,还要在本地编译历史所有的历史投稿,感觉不合理
我提议作者自己搞个Repo装单一一篇文章Rmd和所需的内容,而编辑再负责将内容整合进主站。这样作者可以把更多精力专注于内容而不是诸如这篇帖子讨论的git怎么用的细节上…
tctcab 现有投稿指南其实没考虑过 Rmd 文档的投稿的,如果是md文档投稿的话,那么其实可以在线编辑PR都不用把仓库拖到本地。只不过我们目前并不运行 blogdown 去编译 Rmd 文档,所以还是需要投稿时先生成 html 或 md 才能看到预览来方便审稿。因此其实不装blogdown都可以投稿的,只是需要一个编译好的文件。
不过加个 GitHub Action 来编译应该也不困难,这样 Rmd 投稿就可以自动生成预览了,审稿也会方便些。只不过这样我们就得要求作者用 renv 包来锁定调用的包了,否侧 Rmd 文档用GHA也会因为缺少必要的包而编译失败,这样还不如本地编译成 html 或 md 推送过来方便。只不过这篇文章本身的零部件就不少,所以看起来麻烦了点。
作者当然可以搞一个只有一篇Rmd的repo交给编辑来处理,编辑这边转给审稿人,但这样就不如在线审稿方便透明了。当然,具体到 git,确实是有点门槛的,特别是涉及要改别人的 PR 这种。
- 已编辑
伙伴们,我还在坑底……
我今天把 git 卸载重新安装,在安装 git 那个文件夹以外新建了一个目录存放克隆下来的库。
然后重新生成了 id_rsa 和 id_rsa.pub 这两个文件,并且把 id_rsa.pub 中的内容复制粘贴放到了 github 账户中,检查了一下我在 github 网页上设置的钥匙,内容和 rstudio 上的 public key 内容确实是一样的。
奇怪的是,怎么之前设置的钥匙是绿色的(源于id_ed25519.pub文件),今天这个钥匙是灰色的?而且 rstudio 的 Tools -> global options -->Git/SVN 选项下自动填入了SSH RSA keys,都没给我机会填那个绿色的钥匙。
所以当我再一次把cosname/cosx.org克隆下来,进入我本地的cosx.org文件夹下,打开cosx.Rproj,在rstudio中输入usethis::pr_fetch(1019)
还是报错了:
√ Setting active project to 'D:/R/myGit/cosx.org'
√ Checking out PR 'cosname/cosx.org/#1019' (@XiangyunHuang): '投稿:探索定西市的 Sci-Hub 流量之谜 袁凡'.
Error in libgit2::git_remote_fetch : Authentication failure
湘云给的常识书也看了,但还是没明白咋回事。网上搜到一个答案:https://stackoverflow.com/questions/26953071/github-authentication-failed-github-does-not-provide-shell-access照着在cosx.org目录下执行git remote set-url origin git@github.com:cosname/cosx.org.git
然后再去rstudio中抓1019也还是报一样的错。