【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!完工!

posted @ 2020-04-08 12:57  青墟  阅读(3038)  评论(0编辑  收藏  举报