1.使用ssh key
1.ssh key验证身份
原理:
电脑上放私钥,Github账号里留下公钥。上传代码用私钥加密,Github用公钥解密。如果解开说明是配对的。
2.创建ssh key
Github帮助文档:Generating a new SSH key and adding it to the ssh-agent - GitHub Docs
-
ssh-keygen -t ed25519-sk -C "your_email@example.com"
使用cmder命令行任意目录下运行,一直回车。
注:私钥永远不要给别人看,别人可以使用你的私钥,伪造你的身份篡改你的代码。公钥可以给任何人看。如果已经生成请不要再生成因为他会让你之前的钥匙失效。
- 在github账户上传你的公钥
账号头像>Settings>SSH and GPG keys>New SSH key
- cat /c/Users/Yulingpan/.ssh/id_rsa.pub,上传公钥内容
使用命令行工具,得到公钥内容,粘贴到 GitHub。
注:id_rsa存放了私钥。id_rsa.pub存放公钥。
- ssh -T git@github.com,测试是否配对
接受github给你的公钥(yes)。出现Hi 用户名!时说明这台电脑的私钥和你的github账号公钥已经存在一对一的配对关系了。
2.将本地仓库上传至github远程仓库
1.创建新仓库
Recent Repositories(最近的仓库)-New>输入Repository name,creat
2.上传至github新仓库
使用vscode打开本地仓库新建终端。
已经有本地仓库的情况下在终端运行以下命令(从命令行推送现有存储库)。
3.其他手动上传命令(不使用提示)
git remote add origin git@xxxxxxx(remote远程的,origin起源)
在本地添加远程仓库地址。
注:orgin是远程仓库默认名称,建议不要更改。git@xxx,远程仓库sshy地址。
即,本地git仓库添加了一个对应的远程仓库,仓库名origin,仓库地址git@xxxx。
git push -u origin main(push推送)
推送本地 main分支到远程 origin仓库 的 main 分支。
注:-u origin main 的意思是设置上游分支,第一次提交到此分支的时候需要添加此参数。第一次操作之后直接使用git push(上传到远程此分支),git pull(下载远程仓库此分支代码)。
出现main -> main这类标志说明上传成功。并且上传的的是本地提交的分支,而不是我们看见的文件。
git push origin X:X
上传本地X分支到远程origin仓库X分支。
注:多分支上传,左边源头(本地):右边目标(远程)。
git checkout x/git push -u origin x与这句代码作用相同。切换到x分支,然后上传。
git pull
在我已经拥有本地仓库的前提下,只下载本地没有的那一部分变更。
4.git open,打开对应的远程仓库
在命令行下载:yarn global add git-open
下载完后可以直接打开对应的远程仓库。
3.下载远程仓库到本地
1.git clone git@xxxxx [目标路径],下载远程仓库
在命令行执行此语句,git@xxxx为ssh地址(guthub远程仓库页面>code>SSH地址,然后复制)。建议在桌面进行下载,即cmder当前pwd为Desktop。
注:当远程仓库有多分支时默认展示main分支。使用cmder打开此目录,git checkout X(其他分支)切换到X分支,就能展示其他分支的内容。
使用不同机器,要写上传新的 ssh key(一机一key)。账号所有远程仓库共享公钥,一台电脑独享自己的私钥,两两配对。
git clone下载的目录存在本地git仓库(.git目录)和最新代码。下载完后可以使用git add / git commit / [git pull] / git push,添加代码重新提交到本地,再提交至远程,更新远程仓库。 git pull(pull拉,下载):当远程代码变动时使用此命令。(例:其他同事更改了远程仓库的代码此时需要先git pull在gitpush)
2.关于clone的文件名
- git clone git@?/xxx.git
创建一个xxx目录(即为远程的仓库名),还会在当前目录下创建一个 xxx/.git 目录, 还会把 main分支的最新代码下载到当前目录里的 wheels 目录里。
(例:--将git-demo-2仓库直接克隆,文件名为仓库名-- git@github.com:yulingpan/git-demo-2.git)
- git clone git@?/xxx.git yyy
会在本地新建 yyy 目录,类似于重命名下载目录名改名为yyy。
(例:--将git-demo-2仓库克隆到yyy文件夹中,即重命名远程仓库名--
git@github.com:yulingpan/git-demo-2.git yyy )
- git clone git@?/xxx.git .
会在当前目录下创建一个 .git 目录,并把最新代码下载到当前目录。
(例:--将git-demo-2仓库克隆到zzz空文件夹中--
cd zzz
git@github.com:yulingpan/git-demo-2.git . )
4.一个本地仓库上传两个远程仓库
本地仓库添加两个远程仓库地址(remote add 两个仓库名)
推送到目标仓库的分支(push 不同仓库名)
注:一般这种多仓库情况适用于免费版和收费版,将部分功能推送至收费版。