githttps模式需要设置私钥么

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了githttps模式需要设置私钥么相关的知识,希望对你有一定的参考价值。

参考技术A githttps模式需要设置私钥。Git使用https协议,每次pull,push都要输入密码,相当繁琐。使用git协议,然后使用ssh密钥。这样可以省去每次都输密码。Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。

github的使用

本地安装git

https://code.google.com/p/msysgit/downloads/list

生成sshkey

输入 ssh-keygen ,按enter,多按几次enter 公钥生成在 C:\\Documents and Settings\\xxx\\.ssh 目录中,找到目录 ,里面有id_rsa.pub文件,用记事本打开,然后把里面的东西 全选复制。

有公钥和私钥

并在github上配置sshkey(目的是使本地和线上的github能互相通信)

github上新建一个项目

https://github.com/yanghaize/yourbook.git

在项目目录里执行

安装 Git 之后,你要做的第一件事情就是去配置你的名字和邮箱,因为每一次提交都需要这些信息:

git config --global user.name "bukas"
git config --global user.email "bukas@gmail.com"

首次提交代码

echo "# yourbook" >> README.md
git init //初始化自己的仓库
git add . //添加文件到本地创库
git commit -m "first commit"//添加本次提交的注释
git remote add origin https://github.com/yanghaize/yourbook.git//将本地创库和git创库链接
git push -u origin master   //把本地 master 分支 推送到 服务器的master分支上,如果服务器没有此分支,就 新建 此分支。这也是 在服务器上新建分支的一种方法/将本地代码上传到服务器

首先,git要求使用者必须提供自己的身份标识,为此我们需要在git bash中执行以下命令:
git config --global user.name  \'aa.Tessst\'
git config --global user.email  fsc@sina.com

提交失败的例子:
1.
error: pathspec \'composer\' did not match any file(s) known to git. error: pathspec \'composer.lock\' did not match any file(s) known to git. error: pathspec \'vendor\' did not match any file(s) known to git. 解决方法:git rm -r --cached .

2.
![rejected]  master->master(fetch first)  
error:failed to push some refs to \'https://github.com/xxx/xxx.git\'


 


最后执行git pull,然后再执行push就可以了:



 


原因是:刚才在网站上改了README.md文件,添加了一些项目的说明,然后使用Git客户端再次提交的时候,需要先更新服务器上的变化,然后才能提交,也就是先更新再提交。


3.

! [rejected] master -> master (non-fast-forward)(有推荐视频)

问题(Non-fast-forward)的出现原因在于:git仓库中已经有一部分代码,所以它不允许你直接把你的代码覆盖上去。于是你有2个选择方式:

1,强推,即利用强覆盖方式用你本地的代码替代git仓库内的内容

$ git fetch

$ git merge

这2句命令等价于

  1. $ git pull
  1. $ git pull  

可是,这时候又出现了如下的问题:


上面出现的 [branch "master"]是需要明确(.git/config)如下的内容
[branch "master"]
remote = origin

merge = refs/heads/master

这等于告诉git2件事:

1,当你处于master branch, 默认的remote就是origin。

2,当你在master branch上使用git pull时,没有指定remote和branch,那么git就会采用默认的remote(也就是origin)来merge在master branch上所有的改变

如果不想或者不会编辑config文件的话,可以在bush上输入如下命令行:

    1. $ git config branch.master.remote origin
    2. $ git config branch.master.merge refs/heads/master


之后再重新git pull下。最后git push你的代码吧。

 

我的解决方法是:

先执行git pull

然后再执行 git push --force origin master 替换原先的git push -u origin master


直接 用 git pull 将项目 从 github 上 同步 下来

有两种方法:

1、当git clone之后,直接git pull它会自动匹配一个正确的remote url

是因为在config文件中配置了以下内容:

1 [branch "master"] 2 remote = origin 3 merge = refs/heads/master

表明:

1.git处于master这个branch下时,默认的remote就是origin;

2.当在master这个brach下,使用指定remote和merge的git pull时,使用默认的remote和merge。

建议:用第二种 方法,因为 如果 是 git clone的 项目,当 执行 git push 时,因为 在 git  config里 url  是 只读方式

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git://github.com/xxx/xxx.git
//git@github.com:XXX/XXX.git 这才是 读写方式

 

 

以上是关于githttps模式需要设置私钥么的主要内容,如果未能解决你的问题,请参考以下文章

带有 SSL 证书的 cURL 失败:错误 58 无法设置私钥文件

GIT生成公钥和私钥

openssl rsa 可以用私钥加密 公钥解密吗

rsa 公钥 私钥 生成 需要些啥参数

hbuilder打包ios需要的私钥和profile文件和私钥证书怎么获得

SSH私用私钥登陆