本地的Git如何设置配置,同时对接gitee与github
由于gitee与giehub各自的独有的优势,有时本地的Git 需要同时与两个代码仓库进行交互,故需要同时设置配置,避免ssh冲突。本文本地环境是mac
- 生成两个仓库账号 各自的私钥和公钥
密钥的路径:.ssh
如果该路径下没有文件,认为目前本机还没有生成git密钥
执行如下操作:
1 | #生成 key,将邮件地址替换为你 Gitee 或者 Github 使用的邮件地址 |
生成如下文件,其中id_rsa_gitee.pub为公钥,id_rsa_gitee为私钥:
- 将生成的公钥,配置到gitee及github各自账户下
gitee公钥设置位置如下:
github公钥设置位置如下:
用文本编辑器(如记事本、notepad++、atom等)打开公钥的 XXX.pub文件,复制内容到两个仓库账号的 公钥配置位置。
- 在.ssh目录下新建config.txt文件,编辑配置内容如下,去掉后缀保存文件名为config
1 | # gitee |
如何解决GitHub在git推送时一直要求提供用户名密码的问题
git clone
我的一个现有的demo(在Github中添加了SSH密钥),修改了一些文件,并试图 ,但它一直要求提供用户名和密码,以进行 操作?git push
终端显示要输入账号密码,还无法进行提交
1 | git push |
原因: 密码认证被删除
即使我们输入了正确的用户名和密码,Github仍然不允许推送,因为密码认证在2021年8月13日被移除。请使用个人访问令牌代替
解决办法: 使用SSH,而不是HTTPS
这个问题的主要原因是错误地使用了git clone HTTPS URL
;我们需要SSH URL
来使用SSH密钥
。解决方法是更新.git/config
文件,url 值为SSH而不是HTTPS。
进入 demo 目录,打开文件.git/config.
打开config
1 | [core] |
将url
从HTTPShttps://github.com/mkyong/spring-boot
更新为SSHgit@github.com:mkyong/spring-boot.git
。
修改如下:
1 | [core] |
完成后,再试试git push
就可以使用了
git init
git config –global user.name “your name”
git config –global user.email “your email”
git remote -v 查看远程仓库
git clone 克隆远程仓库(https[账户密码]或ssh)
git branch -a 查看所有分支
git branch -r 查看远程分支
git checkout -b dev origin/dev 创建本地分支dev,并切换到该分支
git add . 添加文件到暂存区
git commit -m “提交说明” 提交到本地仓库
git push origin master 推送本地仓库到远程仓库
git checkout master 切换到master分支
git merge dev 合并dev分支到master分支
git push origin dev 推送本地分支dev到远程仓库
回退版本处理
如果你已经将一个文件提交到了远端仓库,并希望撤销这个提交,你需要谨慎地操作,因为这会影响到项目的历史记录和可能与其他人的工作发生冲突。以下是几种可能的情况和对应的解决方案:
- 刚刚提交到远端,还没有人拉取这个提交
如果刚刚提交到远端,并且确信没有人已经拉取了这次提交,你可以通过以下步骤来撤销:
回退本地提交:
使用 git reset 命令来回退你的本地仓库到一个更早的提交。比如,要回退到前一次提交,可以使用:
1 | git reset --hard HEAD~1 |
这里的 --hard
选项会丢弃自那次提交以来所做的所有更改和提交。
强制推送回远端:
使用 git push
命令的 --force
或 --force-with-lease
选项来更新远端仓库,使其与你的本地仓库保持一致。--force-with-lease
是一个更安全的选择,因为它会在远端分支的引用没有变化的情况下才允许强制推送。
1 | git push origin your-branch-name --force-with-lease |
- 已经有人拉取了这次提交
如果已经有其他人拉取了这次提交,那么直接回退并强制推送可能会导致问题,因为这会改变历史记录,使得其他开发者的仓库与远端仓库不一致。
在这种情况下,有几种解决方案:
使用 git revert
:git revert
会创建一个新的提交,这个提交会撤销指定提交所做的更改。这不会改变项目历史记录,是更安全的选择。
1 | git revert <commit-hash> |
沟通并协调:
如果这次提交是一个错误或不应该被包含,最好的做法是与其他团队成员沟通,看看他们是否已经基于这个提交进行了工作。如果可能,最好找到一种方式来协调更改,而不是直接回退。
- 注意事项
在执行任何会改变历史记录的操作之前,确保你有一个完整的备份。
如果你在一个团队项目中工作,确保与你的团队成员沟通你的计划,以避免不必要的问题和冲突。
使用 –force-with-lease 而不是 –force,除非你真的确定远端分支没有变化。