【Git远程协作】Pull Request成功,并解决报错error: cannot spawn sh: No such file or directory
第一次帮别人写文档,有点不会
按照贡献说明来,先Fork了主仓库,然后通过复制仓库的http链接,
在Github Desktop上进行了快速的git clone一键式操作。
如需下载Github Desktop,我的是win-x64版本,请看👉 GitHubDesktop for Windows 、Atom最新版下载或者👉安利二十个程序员必备的软件,款款都是精品
不过我这边是错误的操作:应该复制git地址才行,不然得输入密码的。
因为git地址匹配你本地的密钥,是安全的。但http地址没有经过公开密钥密码体制验证,所以在你写完代码想git push上传代码的时候,就会非常麻烦,要输账号,要输密码。
输不对就停止不动了,就得自己ctrl+c停止当前进程,再重新git push,试对为止。很烦,我早就不记得我的gitee的Username和Password了
D:\GitHub Project\awescnb-docs-guo>git add .
D:\GitHub Project\awescnb-docs-guo>git commit -m "青墟修改"
[master ddc289f] 青墟修改
29 files changed, 12743 insertions(+), 12725 deletions(-)
D:\GitHub Project\awescnb-docs-guo>git push
error: cannot spawn sh: No such file or directory
Username for 'https://gitee.com': 用户名隐藏
Password for 'https://用户名隐藏@gitee.com':【在这里我按了ctrl+C终止】
fatal: could not read Password for 'https://用户名隐藏@gitee.com': No error
D:\GitHub Project\awescnb-docs-guo>git pull
Already up to date.
D:\GitHub Project\awescnb-docs-guo>git push
error: cannot spawn sh: No such file or directory
Username for 'https://gitee.com': 【在这里我按了ctrl+C终止】fatal: could not read Username for 'https://gitee.com': No error
D:\GitHub Project\awescnb-docs-guo>set GIT_SSH=G:\Git\usr\bin\ssh.exe
D:\GitHub Project\awescnb-docs-guo>git push
error: cannot spawn sh: No such file or directory
Username for 'https://gitee.com': fatal: could not read Username for 'https://gitee.com': No error
D:\GitHub Project\awescnb-docs-guo>git push -f
error: cannot spawn sh: No such file or directory
Username for 'https://gitee.com': 用户名隐藏
Password for 'https://用户名隐藏@gitee.com':
D:\GitHub Project\awescnb-docs-guo>git push -f 【这里强制推送也没用,因为我用的是http地址】
error: cannot spawn sh: No such file or directory
error: cannot spawn sh: No such file or directory
Username for 'https://gitee.com': 【在这里我按了ctrl+C终止】fatal: could not read Username for 'https://gitee.com': No error
关键步骤:
git配对远程仓库的origin分支
D:\GitHub Project\awescnb-docs-guo>git remote set-url origin git@gitee.com:用户名隐藏/awescnb-docs.git
git配对成功,因为本地的密钥是吻合远程的
D:\GitHub Project\awescnb-docs-guo>git push
Enumerating objects: 87, done.
Counting objects: 100% (87/87), done.
Delta compression using up to 4 threads.
Compressing objects: 100% (41/41), done.
Writing objects: 100% (44/44), 50.07 KiB | 1.52 MiB/s, done.
Total 44 (delta 24), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-3.8]
To gitee.com:用户名隐藏/awescnb-docs.git
efbfaba..ddc289f master -> master
然后我fork过来的仓库已经变动了,再去找原博主的仓库,
在他的仓库里点pull request,就可以开始PR协作了。【没截图】
最后我发出了PR请求,因为原博主说我可以随便合并,所以我点击了绿色按钮:合并
于是我的代码成功合并到了原博主的master里
不懂可以问,可以在“投喂”或者“留言板”里问。
方法来自【git和jupyter使用小技巧】👉 https://todebug.com/Tips/
如果你还没有克隆你的仓库,那你直接使用ssh协议用法:
git@github.com:yourusername/yourrepositoryname
克隆就行了。
【非常建议,从远程仓库克隆,要用ssh方式clone】
🔯本文最重要的解决BUG方法
如果已经使用https协议克隆了,那么按照如下方法更改协议:
git remote set-url origin git@github.com:yourusername/yourrepositoryname.git
可以解决因为用https来clone而产生的报错error: cannot spawn sh: No such file or directory
原因可以回看上文
如果你偏要用https协议来克隆
那可以进行如下操作,来帮助你省的每次都得填账号密码
git push 免密码
通用情况
1.使用文件创建用户名和密码
文件创建在用户主目录下:
touch .git-credentials【这是创建一个.开头的隐藏文件】
vim .git-credentials
https://{username}:{password}@github.com
记得在真正输入的时候是没有大括号的。
2.添加git config内容
git config --global credential.helper store
执行此命令后,用户主目录下的.gitconfig文件会多了一项:[credential]
helper = store
重新git push
就不需要用户名密码了。
Done!完工!