在从URL克隆中存在两种方式,一种是SSH,一种是HTTPS。
采用HTTPS的方式总是出现无限输入密码的问题,希望大牛在下方评论下解决方案。
SSH keys
SSH key 可以让你在你的电脑和Code服务器之间建立安全的加密连接。 先执行以下语句来判断是否已经存在本地公钥:
cat ~/.ssh/id_rsa.pub
如果你看到一长串以 ssh-rsa或 ssh-dsa开头的字符串, 你可以跳过 ssh-keygen的步骤。
提示: 最好的情况是一个密码对应一个ssh key,但是那不是必须的。你完全可以跳过创建密码这个步骤。请记住设置的密码并不能被修改或获取。
你可以按如下命令来生成ssh key:
ssh-keygen -t rsa -C"xxxxxx@xxxx.com"
这个指令会要求你提供一个位置和文件名去存放键值对和密码,你可以点击Enter键去使用默认值。
用以下命令获取你生成的公钥:
cat ~/.ssh/id_rsa.pub
输入密码 此密码为生成密钥的时候设置的密码 一般不输入 敲两下回车(如果输入了密码后面克隆的时候就要你输入这个密码)
复制这个公钥放到你的个人设置中的SSH/My SSH Keys下,请完整拷贝从ssh-开始直到你的用户名和主机名为止的内容。
如果打算拷贝你的公钥到你的粘贴板下,请参考你的 *** 作系统使用以下的命令:
Windows:
clip <~/.ssh/id_rsa.pub
Mac:
pbcopy <~/.ssh/id_rsa.pub
GNU/Linux (requires xclip):
xclip -sel clip <~/.ssh/id_rsa.pub
Applications
Eclipse
如何在Eclipse中添加ssh key: https://wiki.eclipse.org/EGit/User_Guide#Eclipse_SSH_Configuration
Tip: Non-default OpenSSH key file names or locations
如果,不管你有什么理由,当你决定去用一个非默认的位置或文件名去存放你的ssh key。你必须配置好你的ssh客户端以找到你的ssh私钥去连接Code服务器,对于OpenSSH客户端,这个通常是在~/.ssh/config类似的位置配置的:
#
# Our company's internal GitLab server
#
Host my-git.company.com
RSAAuthentication yes
IdentityFile ~/my-ssh-key-directory/company-com-private-key-filename
以上步骤是转自阿里云
我用的是 sourceTree 2.0.2 版本,不需要再sourceTree中设置
接下来就是复制你的地址在sourceTree中从URL克隆
在这时候出现了错误
错误总结
error: Malformed value for push.default: 当前
error: Must be one of nothing, matching, simple, upstream or current.
解决方案:终端输入git config –global push.default matching
fatal: bad config file line 14 in /Users/tiny/.gitconfig
解决方案:git config --global user.name "your name”
git config --global user.email "your email"
这里可以看出是一个.gitconfig隐藏文件出现了问题,可以试着在终端输入:
显示文件:defaults write com.apple.finder AppleShowAllFiles -bool true
隐藏文件:defaults write com.apple.finder AppleShowAllFiles -bool false
注:输入两个指令后需要重启电脑才能生效
显示隐藏文件后就可以打开.gitconfig文件,根据上面的解决方案查看对应改变。
之后不出意外就应该可以讲项目down到本地了。
如果有其他系列问题,欢迎评论或私信告诉我,我会在第一时间更改。
祝大家工作顺利,没有bug。
首次登陆后sourcetree会默认登陆账号和密码,换账号后如何修改请看下面:删除C:\Users\%USERNAME%\AppData\Local\Atlassian\SourceTree 目录下的passwd文件, 能移除掉保存的密码。
同样:
删除C:\Users\%USERNAME%\AppData\Local\Atlassian\SourceTree 目录下的userhosts文件, 能移除掉保存的用户名
两个目录是固定的可以直接拷贝(这些文件夹都是隐藏的)
1、在系统的C:\Users\Administrator\AppData\Local\Atlassian\SourceTree文件夹(此位置固定)中有一个accounts.json的文件,没有的话新建一个。
2、复制以下内容到account.json文件中,保存退出从新登陆即可跳过注册。
[
{
"$id":"1",
"$type":"SourceTree.Api.Host.Identity.Model.IdentityAccount, SourceTree.Api.Host.Identity",
"Authenticate":true,
"HostInstance": {
"$id":"2",
"$type":"SourceTree.Host.Atlassianaccount.AtlassianAccountInstance, SourceTree.Host.AtlassianAccount",
"Host": {
"$id":"3",
"$type":"SourceTree.Host.Atlassianaccount.AtlassianAccountHost, SourceTree.Host.AtlassianAccount",
"Id":"atlassian account"
},
"BaseUrl":"https://id.atlassian.com/"
},
"Credentials": {
"$id":"4",
"$type":"SourceTree.Model.BasicAuthCredentials, SourceTree.Api.Account",
"Username":"",
"Email":null
},
"IsDefault":false
}
]
记录下通过Sourcetree关联本地项目上传Github过程。
1. Github创建新repository,这里演示包含.gitignore文件的情况。
2. 打开Sourcetree, 新建-->添加已经存在的本地仓库
点击创建
点击进入项目,设置
远程仓库 -->添加
复制Github上的地址点击确定
通过拉取 *** 作发现远程分支为main, 本地分支为master
直接拉取会报错
尝试修改本地仓库为main, 再次拉取仍然报错
该错误 fatal: refusing to merge unrelated histories, 通过在终端输入命令git pull origin main --allow-unrelated-histories 解决
执行完成后,sourcetree中记录显示
点击推送到远端仓库
报如下错误
意思是自从 21 年 8 月 13 后不再支持用户名密码的方式验证了,需要创建个人访问令牌(personal access token)。
解决方法: 在github上生成令牌,步骤:Settings->Developer settings->Personal access tokens->Generate new token 的方式得到令牌
再执行命令
git remote set-url origin https://<令牌>@github.com/<用户名>/<repo>.git
再次在Sourcetree中提交, 即可成功
查看结果, 至此完成:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)