当前位置: 首页 > news >正文

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

然后在对应平台添加公钥:

  1. 登录GitHub/Gitee/GitLab等平台
  2. 进入Settings > SSH and GPG keys
  3. 点击New SSH key
  4. 粘贴公钥内容并设置标题

第四步,测试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)特殊注意事项

  1. 已跟踪文件的处理

    git rm --cached filename  # 停止跟踪单个文件
    git rm --cached -r dir/   # 停止跟踪整个目录
    
  2. 验证忽略规则

    git check-ignore -v filename
    
  3. 文件位置.gitignore 应放在项目根目录,也可以在不同子目录中添加额外的忽略文件

http://www.dtcms.com/a/394536.html

相关文章:

  • [已更新]2025华为杯D题数学建模研赛D题研究生数学建模思路代码文章成品:低空湍流监测及最优航路规划
  • [C++类的默认成员函数——lesson5.构造函数析构函数]
  • 第二十七章 ESP32S3 INFRARED_TRANSMISSION 实验
  • ✅ Python车牌识别计费系统 PyQt5界面 YOLOv5+CRNN 深度学习 MySQL可视化 车牌检测(建议收藏)
  • 盛水最多的容器_优选算法(C++)双指针
  • QT-串口,完结!
  • Git常用命令合集
  • Qt(模态对话框的切换)
  • QT-模型视图结构
  • C语言 C语句
  • 《理解Reactor网络编程模型》
  • Mirror Maze 镜面反射
  • 一个案例弄懂nfs
  • 在飞牛NAS使用Lucky做动态解析到域名?
  • 多实例 MySQL 部署
  • 使用批处理脚本快速切换 Claude API 实现多平台环境配置
  • SkyDiffusion:用 BEV 视角打开街景→航拍图像合成新范式
  • 免费下载适用于 Windows PC 的 Pixologic Zbrush 2026
  • 10.eNSP下载及安装教程(2025年9月21日)
  • Qt 实战 之 打包部署
  • QT-文件
  • 2001-2022年全国地级市高铁开通数据
  • TenstoRT加速YOLOv11——C++端加速
  • 面试技巧第三篇:嵌入式操作系统基础考点:任务、调度和中断
  • 简单使用Vanna
  • 【面板数据】各省环境保护支出统计数据集(2007-2023年)
  • 无需格式转换!FileOptimizer将文件体积压至极致的软件
  • 【论文速递】2025年第17周(Apr-20-26)(Robotics/Embodied AI/LLM)
  • Spring Framework 入门:传统 XML 配置启动方式详解
  • 构建AI智能体:四十、K-Means++与RAG的融合创新:智能聚类与检索增强生成的深度应用