Git的使用——Git命令、密钥/私钥、文件推送/提交、分支增删改查、文件回滚、.gitignore文件忽略
文章目录
- 一、Git SSH 密钥配置
- 1.生成并上传密钥
- 2.多账户配置方法
- 3.常见问题排查
- 二、推送文件
- 1.首次推送
- 2.日常推送
- 3.常见问题及解决方案
- 三、分支操作
- 1.创建新分支并推送文件
- 2.删除分支并回滚
- 四、常用操作说明
- 1.`.gitignore`文件
- 1)忽略特定文件
- 2)忽略目录
- 3)精确控制忽略范围
- 4)排除例外
- 5)系统文件
- 6)特殊注意事项
在本地使用Git需要提前下载Git环境(下载网站 Git - Downloading Package),下载完成后还要检查是否将下载后的Git的文件路径添加到系统环境变量中。下面是命令速查:
命令/名词 | 英文 | 核心概念 | 典型使用场景 |
---|---|---|---|
克隆 | git clone | 将远程仓库完整复制到本地,创建一个与远程关联的本地仓库 | 首次获取远程仓库代码时使用,会自动关联远程仓库(默认名为 origin ) |
拉取 | git pull | 从远程仓库获取最新代码并自动合并到当前本地分支(等价于 git fetch + git merge ) | 多人协作时,同步他人提交的最新代码到本地 |
推送 | git push | 将本地分支的提交推送到远程仓库对应的分支 | 本地完成修改并提交后,将代码同步到远程仓库,供他人查看或协作 |
获取 | git fetch | 从远程仓库获取最新代码到本地(但不自动合并),需手动执行 git merge 合并 | 希望先查看远程更新再决定是否合并,或需要处理复杂冲突时 |
提交 | git commit | 将暂存区的修改提交到本地仓库,生成一个新的提交记录 | 本地完成部分功能开发后,保存当前修改状态(需先 git add 将文件加入暂存区) |
暂存 | git add | 将工作区的修改添加到暂存区,准备提交 | 修改文件后,标记哪些文件需要纳入下一次提交 |
分支 | git branch | 独立的代码开发线,可在不影响主分支的情况下进行功能开发或修复bug | 开发新功能、修复bug时,创建单独分支,完成后合并到主分支 |
切换分支 | git checkout | 切换到已存在的分支,或创建并切换到新分支(-b 参数) | 从主分支切换到功能分支进行开发,或切换到历史版本查看代码 |
合并分支 | git merge | 将一个分支的修改合并到当前分支 | 功能开发完成后,将功能分支的代码合并到主分支 |
撤销提交 | git revert | 创建一个新的提交,用于抵消指定提交的修改(不删除原提交历史) | 需撤销已推送到远程的提交,且不想改写历史(适合多人协作) |
重置提交 | git reset | 将当前分支重置到指定提交,可选择保留或丢弃后续修改(会改变提交历史) | 撤销本地未推送的提交,或彻底删除错误提交(谨慎使用,尤其是已推送的提交) |
一、Git SSH 密钥配置
注意事项:
- 私钥安全:不要共享私钥文件,定期更换密钥
- 密码保护:为私钥设置强密码
- 密钥轮换:建议每年更换一次SSH密钥
- 审计密钥:定期检查平台上的SSH密钥列表,删除无用密钥
1.生成并上传密钥
第一步,查看现有密钥:
ls -al ~/.ssh # 查看现有密钥
# 生成的文件,在C:\Users\用户名\.ssh路径下
# id_rsa(私钥)
# id_rsa.pub(公钥)
# id_ed25519(Ed25519算法密钥)
第二步,生成新密钥对:
ssh-keygen -t rsa -b 4096 -C "邮箱地址" # 生成RSA密钥(适用于大多数场景)
ssh-keygen -t ed25519 -C "邮箱地址" # 生成Ed25519密钥(更高安全性)
命令选项 | 解释 |
---|---|
-t | 指定密钥类型(rsa/ed25519) |
-b | 指定密钥长度(RSA建议4096) |
-C | 添加注释(通常使用邮箱) |
-f | 指定密钥保存路径(默认~/.ssh/id_rsa ) |
各系统配置步骤略有差别
macOS生成新密钥对:
# 1. 生成密钥
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"# 2. 添加到钥匙串(避免重复输入密码)
ssh-add --apple-use-keychain ~/.ssh/id_rsa
Windows生成新密钥对:
# 1. 使用 Git Bash 生成密钥
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"# 2. 启动SSH Agent并添加私钥
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa
Windows可通过控制面板启用OpenSSH客户端:控制面板 > 程序 > 启用或关闭Windows功能 > OpenSSH客户端
Linux生成新密钥对:
# 1. 生成密钥
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"# 2. 自动加载密钥(编辑~/.bashrc或~/.zshrc)
echo 'eval "$(ssh-agent -s)"' >> ~/.bashrc
echo 'ssh-add ~/.ssh/id_rsa' >> ~/.bashrc
source ~/.bashrc
第三步,添加公钥到Git平台,首先复制公钥内容:
# RSA公钥
cat ~/.ssh/id_rsa.pub# Ed25519公钥
cat ~/.ssh/id_ed25519.pub
然后在对应平台添加公钥:
- 登录GitHub/Gitee/GitLab等平台
- 进入
Settings > SSH and GPG keys
- 点击
New SSH key
- 粘贴公钥内容并设置标题
第四步,测试SSH连接
# 测试GitHub连接
ssh -T git@github.com# 测试Gitee连接
ssh -T git@gitee.com
# 成功响应示例:
Hi username! You've successfully authenticated...
至此,生成并上传密钥成功。
2.多账户配置方法
第一步,生成多个密钥
# 工作账户密钥
ssh-keygen -t rsa -b 4096 -C "work_email@example.com" -f ~/.ssh/id_rsa_work# 个人账户密钥
ssh-keygen -t rsa -b 4096 -C "personal_email@example.com" -f ~/.ssh/id_rsa_personal
第二步,配置SSH config文件
nano ~/.ssh/config
# 默认账户
Host github.comHostName github.comUser gitIdentityFile ~/.ssh/id_rsa# 工作账户
Host github-workHostName github.comUser gitIdentityFile ~/.ssh/id_rsa_work# 个人账户
Host github-personalHostName github.comUser gitIdentityFile ~/.ssh/id_rsa_personal
第三步,使用指定账户克隆仓库
# 使用工作账户克隆
git clone git@github-work:your_username/repo.git# 使用个人账户克隆
git clone git@github-personal:your_username/repo.git
3.常见问题排查
连接被拒绝
# 连接被拒绝,查看详细连接日志
ssh -vT git@github.com
权限问题
# 权限问题,确保私钥文件权限正确
chmod 600 ~/.ssh/id_rsa
清除缓存的密钥
# 清除缓存的密钥,删除已知主机缓存
ssh-keygen -R github.com
二、推送文件
1.首次推送
第一步,在项目根目录下执行命令。首先初始化本地仓库,下面命令会创建一个隐藏的.git文件夹,用于Git管理版本控制。
git init
第二步,添加本地文件到本地仓库的暂存区:
git add . # 添加所有文件(推荐)
git add filename.txt # 添加单个文件
第三步,检查文件的状态,既哪些文件被添加/修改:
git status
第四步,将本地仓库暂存区的文件提交到本地仓库,提交信息应清晰描述本次修改的目的。
git commit -m "提交描述,例如:添加新功能或修复bug"
第五步,将本地仓库关联远程仓库,首次关联使用:
git remote add origin git@github.com:用户名/仓库名.git # SSH方式
git remote add origin https://github.com/用户名/仓库名.git # HTTPS方式
第六步,检查关联是否成功:
git remote -v
第七步,推送本地仓库的代码到远程仓库,首次推送需要设置上游分支:
git push -u origin main # 推送至main分支(GitHub默认)
git push -u origin master # 推送至master分支(传统默认)
-u
参数:建立本地分支与远程分支的关联,后续可直接用 git push
。
2.日常推送
第一步,添加本地文件到本地仓库的暂存区:
git add . # 添加所有文件(推荐):
git add filename.txt # 添加单个文件
第二步,检查文件的状态,既哪些文件被添加/修改:
git status # 查看哪些文件被添加/修改
第三步,提交到本地仓库,提交信息应清晰描述本次修改的目的。
git commit -m "提交描述,例如:添加新功能或修复bug"
第四步,因为已经关联了远程仓库,这里只检查关联是否成功:
git remote -v
第五步,推送代码到远程仓库
git push # 简化命令,需已设置上游分支
可以使用下面命令强制推送所有更改的文件
git add .
git push -f origin main
3.常见问题及解决方案
远程仓库已存在未合并的更改
git pull origin main # 先拉取远程更新,合并后再推送
忘记关联远程仓库
git remote add origin <远程仓库URL>
权限问题(SSH/HTTPS)
- SSH:需提前配置公钥到GitHub账户。
- HTTPS:推送时需输入GitHub用户名和密码(或访问令牌)。
三、分支操作
1.创建新分支并推送文件
创建并切换到new-feature分支
git checkout -b new-feature
推送分支到远程
git push -u origin new-feature
总流程如下:
git init # 初始化仓库
git add . # 添加文件
git commit -m "描述" # 提交本地
git remote add origin <URL> # 关联远程
git push -u origin main # 推送代码
2.删除分支并回滚
第一步,打开终端(命令行界面)使用cd
命令切换到你的Git仓库所在文件夹,例如:
- Windows:打开Git Bash(安装Git后自带)或PowerShell。
- macOS/Linux:打开终端(Terminal)。
cd /path/to/your/repository
第二步,查看提交历史,确认要删除的提交,即确认需要回退到的提交。查看完后按q
键退出查看。
git log --oneline
- 按 Enter 键 向下滚动一行
- 按 空格键 向下滚动一屏
- 按
b
键 向上滚动一屏 - 按
/
键 后输入关键词可搜索提交记录
第三步,将本地仓库回退到目标提交,2表示回退2条提交,也就是回到倒数第3条提交的内容。
git reset HEAD~2
# 或使用commit ID的方式
# git reset <commit-a的哈希值>
第四步,强制推送到远程仓库,若主分支是main
,则替换为git push origin main --force
,将本地的变更强制推送到远程仓库,覆盖远程的提交历史:
git push origin master --force
# 主分支为main时
# git push origin main --force
- 强制推送(
--force
)会改写远程仓库的历史,仅在确定不会影响其他协作者或这是个人仓库时使用。 - 操作前建议备份代码,避免误操作导致数据丢失。
四、常用操作说明
1..gitignore
文件
.gitignore
文件用于指定 Git 版本控制系统应忽略的文件和目录。这些文件不会被跟踪、暂存或提交到仓库中。一般在项目根目录下创建,创建命令如下:
touch .gitignore
注意事项:
- 尽早创建
.gitignore
文件 - 将
.gitignore
本身加入版本控制 - 定期检查是否有新文件需要忽略
- 使用全局
.gitignore
文件处理用户特定文件(如编辑器配置)
1)忽略特定文件
# 忽略单个文件
secrets.txt
config.ini# 忽略特定类型文件
*.log
*.tmp
2)忽略目录
# 忽略整个目录(包括子目录)
node_modules/
.idea/
.vscode/
3)精确控制忽略范围
规则 | 作用范围 | 示例说明 |
---|---|---|
logs/ | 忽略所有路径下的 logs 目录 | 忽略 logs/ 和 src/logs/ |
/logs/ | 仅忽略根目录下的 logs 目录 | 仅忽略 logs/ |
**/logs/ | 明确表示忽略所有路径下的目录 | 同 logs/ |
4)排除例外
# 忽略 public 下所有 .txt 文件
public/*.txt# 但不忽略 public/readme.txt
!public/readme.txt
5)系统文件
# macOS
.DS_Store# Windows
Thumbs.db
6)特殊注意事项
-
已跟踪文件的处理:
git rm --cached filename # 停止跟踪单个文件 git rm --cached -r dir/ # 停止跟踪整个目录
-
验证忽略规则:
git check-ignore -v filename
-
文件位置:
.gitignore
应放在项目根目录,也可以在不同子目录中添加额外的忽略文件