git操作
📌 基本操作
本地拉取和推送
-
鼠标右键——>更多属性——>open Git Bash Here
-
git pull origin master
:更新本地仓库版本至最新 -
(常用)git提交本地仓库更新:
-
git add 文件名
:暂存对应文件。文件名为通配符.
的话,则将当前所在路径下的所有已修改文件暂存。 -
git status
:检查暂存区状态。 git commit -m "提交备注:描述你的修改内容"
git push -u origin 你的分支名
-
其他
-
删除新加入 .gitignore 的已追踪文件:
git rm --cached 文件路径
-
检查本地仓库的个人姓名、邮箱:
git config --list
-
添加 or 更改个人信息:
1 2
git config user.name "<你的 GitHub 用户名>" git config user.email "<你的 GitHub 用户名>"
git bash 终端操作
- 按
q
退出; - ……
😉 从零开始
一、准备
-
Github 手动创建空仓库,记下仓库 SSH 地址。
-
本地初始化 Git 仓库:
1 2
# 在你的项目文件夹路径下打开 git bash,执行: git init
二、仓库配置
配置 SSH Keys
-
本地git配置ssh公钥:在目标文件夹中打开git Bash,执行命令。
1 2 3 4
# 运行密钥生成命令,一路回车(只是文件命名、设置密码,可以跳过) ssh-keygen -C "<your_email@example.com>" -f <指定 SSH 密钥存储路径> # 存储路径举例:/c/Users/dell/.ssh/id_ed25519 # 建议直接在 generate 时指定存储路径——来自一个 copy 两遍全出错的人の建议
-
将ssh公钥配置到github仓库:
-
在本地git中执行命令,复制公钥内容。
1 2 3
# 公钥地址在生成公钥时会显示 # 复制命令的所有输出 cat <你的公钥地址(以.pub结尾)>
-
在仓库中打开“Settings——侧边栏:SSH and GPG keys”,点击 New SSH key,粘贴公钥内容。
-
-
测试ssh连接:执行命令。
1 2
# 测试能否连接到github,这样才能使用github的服务(大概) ssh -T git@github.com
当连接成功时,会显示如下消息(可能会因为网络关系较慢才显示):
Hi <username>! You’ve successfully authenticated, but GitHub does not provide shell access.
补充
-
SSH密钥生成时,会创建两个文件:
-
私钥文件:
~/.ssh/xxx_rsa
公钥文件:
~/.ssh/xxx_rsa.pub
-
-
检查&清除以前的全局配置:
-
git config --global --list
检查配置 - 本地如果已有全局设置
--global user.name
和--global user.email
,执行git config --global --unset user.name
和git config --global --unset user.email
命令清除设置。- (END):按
q
退出git。
- (END):按
-
克隆仓库
-
获取代码库ssh地址:打开代码库主页“Code——Local——SSH”,复制以
git@github.com
开头、以.git
结尾的地址。 -
在git Bash中执行以下命令。
1
git clone <你的代码库 SSH 地址>
最后,就可以快乐的pull和push了(*^▽^*)!
三、本地关联仓库
执行命令,添加远程仓库 SSH 地址:
1
git remote add origin <你的代码库 SSH 地址>
如果要检查远程仓库是否关联成功,执行命令:
1
2
3
4
git remote -v
# 关联成功的输出案例:
# origin git@github.com:username/repo-name.git (fetch)
# origin git@github.com:username/repo-name.git (push)
报错收集
fatal: not a git repository (or any of the parent directories): .git
这个错误提示表明当前目录 不是一个 Git 仓库,因为该目录中没有 .git
文件夹(它保存了 Git 的版本控制信息)。
💣 小问题合集
-
为啥 Github 的提交记录上,显示的“提交人信息”和我的 Github 账号不一样?!
🪛 修正:
1
git config user.email "<你的 GitHub 绑定邮箱>"
原因:
你邮箱填错了—— Github 靠的是 提交记录里的邮箱 来匹配你的 Github 账号绑定的邮箱。
-
我忘记写
.gitignore
,不小心把多余的文件 push 了——我要如何 不再追踪 & 彻底删除 ?🪛 修正:
-
添加 .gitignore;
-
将目标文件 移出 Git 的追踪:
1 2
git rm -r --cached <目标文件名> git commit -m "remove <目标文件名>"
-
同一账户下管理多个仓库
在我写完OS四个实验后,想顺手把OS实验代码上传Github,就想在本地同一个文件夹下管理多个远程仓库的本地clone。那同一个父文件夹下的话,能不能用同一个ssh key来管理?
尝试了将父文件夹原来已投入使用的ssh key粘贴到代码库上,但是被Github告知“公钥已被使用”——有没有解决方法?
“如果在一台服务器上使用多个仓库,则需要为每个仓库生成专用密钥对。 不能对多个仓库重复使用一个部署密钥。”
想要同一个key统管多个仓库是不可能了,但是我们可以通过配置~/.ssh/config
文件来实现“在同一文件夹下管理多个本地仓库”。
步骤:
-
生成带命令参数的不同SSH Keys
1 2
ssh-keygen -t rsa -f ~/.ssh/repo1_rsa -C "repo1 user" ssh-keygen -t rsa -f ~/.ssh/repo2_rsa -C "repo2 user"
代码解释:
- “-t rsa”:指定生成的密钥类型。
- “-f xxx”:指定生成的密钥文件路径和名称。
- “-C repo1 user”:添加密钥注释(注释通常是用来标识密钥用途的,可以是任意内容,方便区分多个密钥)。
-
配置
~/.ssh/config
(在 SSH 配置文件中配置多个 Host)在git bash中,通过记事本打开
~/.ssh/config
文件。1
notepad ~/.ssh/config # 使用 Notepad 打开
文件内原有的配置不变,在空白的地方加上新的 Host 配置。
1 2 3 4 5 6 7 8 9 10 11 12
# 原来的(全局默认)配置——因为我曾为我的 Github 账号设置了SSH Key # gitHub Host github.com HostName github.com User git IdentityFile ~/.ssh/id_rsa.github # 新添加的 Host 配置,为特定仓库设置别名 Host repo1 Hostname github.com User git IdentityFile ~/.ssh/repo1_rsa
代码解释:
- Host:在 Git 操作中使用的标识,可以是任意名字(如
repo1
、myproject
)。如果Host
名称和实际的域名一致(如github.com
),会覆盖默认的行为。 - HostName:实际的远程服务器地址。例如,GitHub 的服务器地址是
github.com
。 - User:一般都是 git。
- IdentityFile:指定用于认证的私钥路径,如
~/.ssh/repo1_rsa
。
两者的主要区别:
-
第一段:适合全局的 GitHub 配置(替代默认
id_rsa
密钥)。 - 第二段:适合为特定项目或仓库使用独立的密钥
- Host:在 Git 操作中使用的标识,可以是任意名字(如
-
使用新的ssh地址进行仓库克隆
可以通过仓库别名测试配置,确保能正常连接到远程服务器:
1 2
ssh -T repo1 ssh -T github
然后通过含有别名 Host 的“新地址”,来克隆你的新仓库。
1
git clone git@repo1:<repos1_url>
-
在本地仓库中配置你的user信息
因为全局设置被覆盖,此时直接push仓库会出现提示信息:
1 2 3 4 5 6 7 8 9 10 11 12 13
Author identity unknown *** Please tell me who you are. Run git config --global user.email "you@example.com" git config --global user.name "Your Name" to set your account's default identity. Omit --global to set the identity only in this repository. fatal: unable to auto-detect email address (...)
执行命令,在git bash中设置你的本地user信息。鉴于可能会不只在Github一个代码平台上提交,不建议设置为全局。
1 2 3 4
# 使用你注册Github时的账号个人信息 # 默认(大概)是local属性 git config user.name "Your GitHub Username" git config user.email "your-Github_email@example.com"
之后就可以正常的push代码到仓库里了!
参考文档
多代码平台的git配置:
day-day-up | 配置同时使用Gitlab、Github、Gitee(码云) 共存的开发环境
SSH Keys 配置:
多仓库管理:
让多个Github 仓库使用相同的Deploy Key - SHUHARI 的博客
Github 同一账号怎么用不同的SSH key 管理多个仓库
其他: