前言:最近研究了一下github存储项目,提交对应不用的代码库,遇到的问题,做了一个小总结
首先是我在react配置一些文件需要执行npm run eject 生成隐藏配置文件,执行前需要将项目提交上git,后续在使用github时遇到一些问题
问题一:登录遇到的坑点
使用github提交首先在GitHub上新建一个项目然后根据提示操作会弹出一个登录框,当填写完后会发现报错
remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information.
- 远程:2021 年 8 月 13 日移除了对密码身份验证的支持。请改用个人访问令牌。
- 远程:请参阅 https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ 了解更多信息。
原因:GitHub从2021 年 8 月 13 日所有经过身份验证的 Git 操作都需要基于令牌的身份验证
解决方法:前往github的`setting`左边有一个 `Developer settings` 选择 `Personal access tokens`生成新的令牌,复制保存,回到登录登录的页面填在密码那里,需注意的是`Username填的是电子邮箱,Password填的是令牌 `
问题二:反复弹出登录框,需要登录
解决方案:找到电脑控制面板--->凭据管理器--->windows凭据--->添加普通凭据(windows凭据其实是一个系统组件,能够帮助完成本地访问时的认证工作)
问题三:ssh的使用(git是分布式的代码管理工具,远程的代码管理是基于ssh的,所以要使用远程的git则需要ssh的配置)
解决方法:
1、进入~/.ssh 生成本地ssh-keygen
ssh-keygen -t rsa -C "username@email.com"
要输入密码,可以直接回车再回车,此时会生成id_rsa,id_rsa.pub文件,查看id_ras.pub文件,并复制里面的key(ssh-rsa开头)
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC/IkVumnbHR/tqX06uZ/56XhfL2Z+PXP5wUyM5gTfKKwuXHntNFcDjZiDBcE+LsSYExGOKwSJEneO8IewwbWFL3wylv+94cVuVOB2PO3L48Iy+FQlntsGGlTZl+2HvVsdm3EnOjNlhvfgkoG6V2nGlpfADStI1ggRMbCC7K/fhZwUVFANHg0d+mZV5hbxUVxUXJ2tYtyvSsrM30Nze2SOVFa8ZCdPZYE471j0Ay8ovhn1LsHZ3GxHk7zpnAPt7X+SPcCxBZ7b1ydfy1bfRdHNYa0BHo+ANuRO51ZAb9rYeMj1Udz8RXTml68bLSokMEwRTzfviGnSjt/R0MOnmXm+m121eBO4fxWJBECzjZD3pjTJdVpkX/GV7aiFlU/K/xGlRpPP7K1V2c1T9nd7tvuoXv4iGgcLR/2KIzh6W/T3YidglWJnygY9eTekE4FC/9l99RmsCIleCWaqLpEVJhs8SUMcZ+SFqyS6Tloghy5mfAE/1uiL5guDApeAHY5+KnAc= username@email.com
2、将key复制到github的ssh key(个人账户->setting->SSH and GPG keys->new SHH key)中,点击生成
3、回到项目根目录,更改上传SSH链接
git remote set-url origin git@github.com:**********.git
注意查看.git/config 的链接有没有更改成功
4、要先拉取一遍代码,再提交,就可以了
问题四:Git配置多个公钥,对应不同的账户的代码库,出现的问题
原因:一把公钥只能被一个GITHUB帐号拥有->因此必须为不同的帐号创建公钥,push时需要本地私钥与GITHUB帐号的公钥配对,因此,要在同一台电脑上给两个属于不同帐号的仓库提交时,必须在本地创建两对公/私钥匙,分别把两把公钥给两个帐号,提交时根据要提交的仓库所属帐号选择相应的本地私钥即可
ERROR: Permission to *******.git denied to userName.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
解决方法:
1、多生成一个公钥,指定名字为:gs_id_rsa,带有pub后缀的是公钥,没有带的是私钥
ssh-keygen -t rsa -C "username@email.com" -f ~/.ssh/gs_id_rsa
2、添加到SSH agent中,两个就两个都添加
ssh-add gs_id_rsa
# 如果提示:Could not open a connection to your authentication agent,则先执行这个命令
ssh-agent bash
3、然后配置生成config文件,没有则生成config
# 账号1-github
HOST personal
hostname github.com
User git
IdentityFile ~\.ssh\id_rsa
PreferredAuthentications publickey
# 账号2-github
HOST company
hostname github.com
User git
IdentityFile ~\.ssh\gs_id_rsa
PreferredAuthentications publickey
测试 连接是否成功,`ssh -T personal`, 成功则返回
#成功则返回
Hi persona! You've successfully authenticated, but GitHub does not provide shell access
4、在项目根目录重新设置url:
git remote set-url origin xxx:xxx/xxxxxxxxx.git
//对比原来的ssh链接: git@github.com:xxxxxxxxx.git
//替换后的: xxx:xxx/xxxxxxxxx.git
就可以愉快的进行了多公钥玩耍了
Git常用操作命令:
git branch 查看本地所有分支
git status 查看当前状态
git commit 提交
git branch -a 查看所有的分支
git branch -r 查看本地所有分支
git commit -am "init" 提交并且加注释
git push origin master 将文件给推到服务器上
git remote show origin 显示远程库origin里的资源
git checkout --track origin/dev 切换到远程dev分支
git checkout -b dev 建立一个新的本地分支dev
git merge origin/dev 将分支dev与当前分支进行合并
git checkout dev 切换到本地dev分支
git remote show 查看远程库
git add .
git rm 文件名(包括路径) 从git中删除指定文件
git clone git://github.com/schacon/grit.git 从服务器上将代码给拉下来
git config --list 看所有用户
git ls-files 看已经被提交的
git rm [file name] 删除一个文件
git commit -a 提交当前repos的所有的改变
git add [file name] 添加一个文件到git index
git commit -v 当你用-v参数的时候可以看commit的差异
git commit -m "This is the message describing the commit" 添加commit信息
git commit -a -a是代表add,把所有的change加到git index里然后再commit
git commit -a -v 一般提交命令
git log 看你commit的日志
git diff 查看尚未暂存的更新