GVKun编程网logo

为什么 GitHub 推荐 HTTPS 而不是 SSH?(为什么用github)

22

在本文中,我们将详细介绍为什么GitHub推荐HTTPS而不是SSH?的各个方面,并为您提供关于为什么用github的相关解答,同时,我们也将为您带来关于gitclonegithub项目https遇到

在本文中,我们将详细介绍为什么 GitHub 推荐 HTTPS 而不是 SSH?的各个方面,并为您提供关于为什么用github的相关解答,同时,我们也将为您带来关于git clone github项目https遇到的问题,其他https没有问题、git 为什么要先commit,然后pull,最后再push?而不是commit然后直接push?、git 解决 error: failed to push some refs to ''https://github.com/xxxx.git''、Git 针对 GitLab Github 配置 HTTP HTTPS SSH 代理的有用知识。

本文目录一览:

为什么 GitHub 推荐 HTTPS 而不是 SSH?(为什么用github)

为什么 GitHub 推荐 HTTPS 而不是 SSH?(为什么用github)

在 GitHub 网站上有一个链接…

https://help.github.com/articles/generating-ssh-
keys

…它说…

如果您决定不使用推荐的 HTTPS 方法,我们可以使用 SSH 密钥在您的计算机和 GitHub 之间建立安全连接。以下步骤将引导您生成 SSH
密钥,然后将公钥添加到您的 GitHub 帐户。

为什么 HTTPS 是推荐的方法?SSH 方法中是否存在某种安全漏洞,还是速度较慢?我创建了一个 SSH 密钥,这样可以缓解任何安全问题吗?

答案1

小编典典

GitHub
已多次更改他们的推荐(示例)。

看来他们目前推荐使用 HTTPS,因为它最容易在最广泛的网络和平台上进行设置,而且对于这一切的新手来说也是如此。

SSH 没有固有缺陷(如果有的话,他们会禁用它)——在下面的链接中,您会看到它们仍然提供有关 SSH 连接的详细信息:

  1. HTTPS 不太可能被防火墙阻止。

https://help.github.com/articles/which-remote-url-should-i-
use/

https:// 克隆 URL 在所有存储库(公共和私有)上都可用。这些 URL 可以在任何地方使用——即使您在防火墙或代理之后。

  1. HTTPS 连接允许credential.helper缓存您的密码。

https://help.github.com/articles/set-up-
git

很高兴知道:凭据帮助程序仅在您克隆 HTTPS 存储库 URL 时起作用。如果您改用 SSH 存储库 URL,则使用 SSH
密钥进行身份验证。虽然我们不推荐它,但如果您希望使用此方法,请查看本指南以获取生成和使用 SSH 密钥的帮助。

git clone github项目https遇到的问题,其他https没有问题

git clone github项目https遇到的问题,其他https没有问题

curl -v https://github.com/lulingling/myHtml2canvasDemo

测试后,报错如下,大神求解。

yum update 什么curl nss 已经试过无效。

http.sslverify=false  已经配置无效

git 为什么要先commit,然后pull,最后再push?而不是commit然后直接push?

git 为什么要先commit,然后pull,最后再push?而不是commit然后直接push?

情况是这样的,现在远程有一个仓库,分支就一个,是master。然后我本地的仓库是从远程的master上clone下来的。大家都是clone下来,再在自己本地改好,再commit然后pull然后push,大家都是这么做的。那么现在问题来了:

1,那我本地这个也算是个分支?还是就是一个本地仓库?

答:本地和远程的关系相当于两个分支,你感觉一样是因为你git pull 的时候已经自动给绑定好对应关系了, set-upstream..balbala

2,如果我在远程新建了个分支,然后我pull了下来,那我本地到底有分支这个说法吗?我本地的分支是不是就是那个远程新建的分支?

答:你远程新建了一个分支拉到本地的道理是一样的,属于复制了一份,但是本地分支和远程分支已经是两个东西了

3,本地仓库和本地分支有什么区别?

答:本地分支属于本地仓库里,是包含关系,一个仓库里可以有很多分支

4,commit是提交到本地仓库,然后push,这个push是把所有代码推到远程仓库,还是只是把commit的地方推到远程仓库?

答:肯定不会全量推送到远程的,是通过对比 commit 的记录,如果本地高于远程就直接把多出来的commit 给怼上去,如果本地分支的最新版本和远程的 commit 有冲突,就需要解决冲突。

5,那为什么要先commit,然后pull,然后再push,我pull了,岂不是把自己改的代码都给覆盖掉了嘛,因为远程没有我改的代码,我pull,岂不是覆盖了我本地的改动好的地方了?那我还怎么push?

答:这个先 commit 再 pull 最后再push 的情况就是为了应对多人合并开发的情况,

  1. commit 是为了告诉 git 我这次提交改了哪些东西,不然你只是改了但是 git 不知道你改了,也就无从判断比较;

  2. pull是为了本地 commit 和远程commit 的对比记录,git 是按照文件的行数操作进行对比的,如果同时操作了某文件的同一行那么就会产生冲突,git 也会把这个冲突给标记出来,这个时候就需要先把和你冲突的那个人拉过来问问保留谁的代码,然后在 git add && git commit && git pull 这三连,再次 pull 一次是为了防止再你们协商的时候另一个人给又提交了一版东西,如果真发生了那流程重复一遍,通常没有冲突的时候就直接给你合并了,不会把你的代码给覆盖掉

  3. 出现代码覆盖或者丢失的情况:比如A B两人的代码pull 时候的版本都是1,A在本地提交了2,3并且推送到远程了,B 进行修改的时候没有commit 操作,他先自己写了东西,然后 git pull 这个时候 B 本地版本已经到3了,B 在本地版本3的时候改了 A 写过的代码,再进行了git commit && git push 那么在远程版本中就是4,而且 A 的代码被覆盖了,所以说所有人都要先 commit 再 pull,不然真的会覆盖代码的

6,两个分支A和B,A合并B和B合并A,有区别吗?

答:两个互相合并的唯一区别就是 A->B 的时候 B 分支上会产生一个 merge_commit ,被改变的分支是 B ;如果现在没有发生任何改动执行 B->A ,则A和B两分支才会完全相同。

git 解决 error: failed to push some refs to ''https://github.com/xxxx.git''

git 解决 error: failed to push some refs to ''https://github.com/xxxx.git''

在github远程创建仓库后, 利用gitbash进行提交本地文件的时候出现如下错误

[root@foundation38 demo]# git push -u origin master
Username for ''https://github.com'': xuefeilong
Password for ''https://xuefeilong@github.com'': 
To https://github.com/xuefeilong/test.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to ''https://github.com/xuefeilong/test.git''
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. ''git pull'')
hint: before pushing again.
hint: See the ''Note about fast-forwards'' in ''git push --help'' for details.

  解决办法:

1: 进行push前先将远程仓库pull到本地仓库
$ git pull origin master    #git pull --rebase origin master
$ git push -u origin master

2: 强制push本地仓库到远程 (这种情况不会进行merge, 强制push后远程文件可能会丢失 不建议使用此方法)
$ git push -u origin master -f

3: 避开解决冲突, 将本地文件暂时提交到远程新建的分支中
$ git branch [name]
# 创建完branch后, 再进行push
$ git push -u origin [name]

  我使用的是直接加入参数-f,但是不推荐比较粗暴:

[root@foundation38 demo]# git push -u origin master -f
Username for ''https://github.com'': xuefeilong
Password for ''https://xuefeilong@github.com'': 
Counting objects: 13, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (13/13), 975 bytes | 0 bytes/s, done.
Total 13 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), done.
To https://github.com/xuefeilong/test.git
 + 5c057df...abfded5 master -> master (forced update)
Branch master set up to track remote branch master from origin.

  转载 自 https://blog.csdn.net/sgsgy5/article/details/83689516

Git 针对 GitLab Github 配置 HTTP HTTPS SSH 代理

Git 针对 GitLab Github 配置 HTTP HTTPS SSH 代理

配置 git 代理

配置 git 的 http https 代理

Linux 和 Windows 都适用

# gitlab 服务器在国外下载速度速度收到很大影响。下面对 gitlab 配置 http https 代理。同理也可以对 github 配置 http https 代理。
git config --global http.https://gitlab.com.proxy socks5://127.0.0.1:1080
git config --global http.https://github.com.proxy socks5://127.0.0.1:1080

# 其中 socks5://127.0.0.1:1080 换成你使用代理服务。如:
git config --global http.https://gitlab.com.proxy http://127.0.0.1:8080

配置 git 的 ssh 代理

Linux 系统

# 需要安装 openbsd-netcat 来实现转发,以 Manjaro Linux 安装为例:
sudo pacman -S openbsd-netcat
# 在用户目录下的 .ssh/ 创建 config 文件
vim ~/.ssh/config
# 详细配置如下
Host github.com
Host gitlab.com
ProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %p
HostName %h
Port 22
User git
IdentityFile  ~/.ssh/id_rsa
IdentitiesOnly yes

Windows 系统

Windows 10 带有 connect 转发工具无需手动安装。同样也是在 在用户目录下(c:\User\username\.ssh\)的 .ssh\ 创建 config 文件

Host github.com
Host gitlab.com
ProxyCommand connect -S 127.0.0.1:1080 %h %p # -H 为 HTTP
HostName %h
Port 22
User git
IdentityFile  ~/.ssh/id_rsa
IdentitiesOnly yes

今天关于为什么 GitHub 推荐 HTTPS 而不是 SSH?为什么用github的介绍到此结束,谢谢您的阅读,有关git clone github项目https遇到的问题,其他https没有问题、git 为什么要先commit,然后pull,最后再push?而不是commit然后直接push?、git 解决 error: failed to push some refs to ''https://github.com/xxxx.git''、Git 针对 GitLab Github 配置 HTTP HTTPS SSH 代理等更多相关知识的信息可以在本站进行查询。

本文标签: