引言
本博文记录一些常用的git命令
本博文仅供本人学习记录用~
首先需要电脑配置安装了git
- 对于windows,可到官网下载
安装完成后,在桌面上点击右键,出现下图所示的图标,则表示安装成功:
下载GitHub仓库
git clone --recursive https://github.com/{仓库名}
重新初始化
rm -rf .git
拉取远程新的分支
git pull origin <分支名>:<分支名>
推送GitHub仓库
push到已有仓库并创新新分支
- 初始化 Git 仓库(如果尚未初始化)
git init
- 添加远程仓库
git remote add origin https://github.com/{仓库名}.git
- 创建并切换到新分支(如分支名a100)
git checkout -b a100
- 添加并提交更改
git add .
git commit -m "Initial commit on branch a100"
- 推送到远程仓库
git push -u origin a100
更改默认分支
如下图所示
更改push的链接
仓库重命名后导致原本的本地代码无法push,这是因为本地 Git 配置中记录的远程仓库地址(Remote URL)失效了。可以直接在 VS Code 的集成终端里通过简单的 Git 命令来更新这个映射地址,完全不需要重新 clone 代码。
# 远程主机名称
git remote -v
# 输入以下命令修改远程映射链接,将 <new_url> 替换为新链接:
git remote set-url origin <new_url>
注意对于电脑1是强制推送(force push)了一个全新的 git 历史,而电脑2保留的是旧的 R-C-Group/VGGT-SLAM 的历史,两者的提交历史不兼容:
# 1. 先确认 remote 已经指向新地址
git remote -v
# 2. 拉取远端新历史(允许不相关历史合并)
git fetch origin
# 3. 强制重置本地到远端状态(直接放弃旧历史,以远端为准)
git reset --hard origin/main # 如果分支是 master 就换成 origin/master
同时推送两个github仓库
# 查看当前的 remote 配置
git remote -v
# 添加一个新的 remote(指向仓库 2)
git remote add second-repo git@github.com:yourName/repo2.git
接下来验证配置应该是有两个不同的remote的
git remote -v
# origin git@github.com:yourName/repo1.git (fetch)
# origin git@github.com:yourName/repo1.git (push)
# second-repo git@github.com:yourName/repo2.git (fetch)
# second-repo git@github.com:yourName/repo2.git (push)
日常分别push两个仓库:
git push origin main
git push second-repo main
- 如果想要一键同时更新,则应该为一个 Remote 配置多个 Push URL(请注意,拉取永远只有一个,因此实际上仓库2是备份用的):
git remote -v
# 原本默认显示如下:
# origin git@github.com:yourName/repo1.git (fetch)
# origin git@github.com:yourName/repo1.git (push)
# 添加第二个仓库的 Push URL
git remote set-url --add --push origin git@github.com:yourName/repo2.git
# 注意:一旦手动设置了 push URL,Git 就会覆盖默认的 push 行为,所以需要把第一个仓库的地址也显式地加回来。
# 重新添加第一个仓库的 Push URL:
git remote set-url --add --push origin git@github.com:yourName/repo1.git
# 再次运行 git remote -v,你应该能看到一个 fetch 地址和两个 push
# origin git@github.com:yourName/repo1.git (fetch)
# origin git@github.com:yourName/repo2.git (push)
# origin git@github.com:yourName/repo1.git (push)
重新生成并配置 ssh key
ssh-keygen
- 对于windows:进去我的电脑,C盘,自己用户名那个文件夹,找到.ssh文件夹。
- 对于ubuntu:根据运行后输出的结果,一般在
.ssh/***.pub内 - 对于mac:在终端运行
cat /Users/电脑用户名/.ssh/id_rsa.pub
然后找到.pub结尾的,也就是id_rsa.pub,就是公钥。在进入自己的github,个人设置界面,找到SSH key那栏,new ssh key。添加好再push。
下面输入命令,验证是否配置成功
ssh -T git@github.com
注意,如果重新配置了ssh key会导致远程服务器每次打开都需要输入密码。因此操作如下:
- 将id_rsa.pub上传到服务器上;在本地电脑上运行:
ssh-copy-id -i "SSH公钥的文件地址" -p <port> <username>@<server_ip>
# 注意要用git bash
# 该操作会在服务器~/.ssh中生成authorized_keys文件,并将本地电脑id_rsa.pub中的内容复制到该文件中。
# ⭐因此你也可以先ssh登录自己的账户,再手动创建~/.ssh/authorized_keys文件(没有后缀),并复制公钥到该文件中,实现同样的效果。
- PS: 除了ssh链接服务器有时还可以通过远程电脑桌面,配置如下,注意链接时用户名要确保输入正确(可能是域名\用户名,注意是
\):
# 在目标电脑上启用远程桌面
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name "fDenyTSConnections" -Value 0
# 配置防火墙允许 RDP
Enable-NetFirewallRule -DisplayGroup "远程桌面"
DNS解析失败
报错:
Could not resolve hostname github.com: No address associated with hostname
然后重新生成并配置 ssh key也还是不行。
下面看看ping会发现ping github.com发现是链接不上的,但是用HKU-VPN却是可以的
应该就是DNS问题,接下来先试试刷新DNS缓存
ipconfig /flushdns
把github ip加入到系统的hosts文件就行
通过链接查看到最新的ip是140.82.112.4
在文件C:\Windows\System32\drivers\etc\hosts中加入(先用管理者模式打开记事本,然后文件选择打开hosts文件)
140.82.112.4 github.com
然后再次测试
ssh -T git@github.com
|
|
ssh防火墙
有时会出现明明已经在github添加了ssh key但还是连不上。 或者每次都要重新添加才可以连上一段时间又断掉。则可能是防火墙的问题。
先查看细节,运行下面链接命令
ssh -vT git@github.com
若出现防火墙或网络中间设备干扰SSH连接的情况,可以通过编辑SSH配置文件来解决。
通过vscode或者记事本打开C:\Users\Kwan_\.ssh\config:
Host github.com
Hostname ssh.github.com
Port 443
User git
IdentityFile "C:\Users\Kwan_\.ssh\id_ed25519" # 根据你的密钥文件调整
IdentitiesOnly yes
添加用户及邮箱
对于新服务器或者电脑的vscode配置,在提交代码的时候可能报没有邮箱或用户名,用下面命令更新即可
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
Github误删仓库恢复
对于不小心删错的仓库,在90天内有恢复的功能。在github主页设置内,如下图所示。
PS:刚刚删除的仓库似乎要隔段时间才会显示~
清除Git 代理设置
有时出现能ping通,但是仍然没法pull,有可能是因为本地终端开启了代理,导致它尝试通过代理去访问IP,结果代理服务器找不到这个某个地址(如内网情况),就会返回 502。
可通过下面清除代理:
unset http_proxy
unset https_proxy