Git 学习记录

Git CMD 和 Git Bash

  • Git CMD 是让 Git 在 Windows CMD 里执行命令,也可以执行 Windows 原生命令。
  • Git Bash 是模拟 Linux 终端环境,支持 Linux 命令。

Git 基础配置

配置 Git 用户信息

 git config --global user.name "你的用户名"
 git config --global user.email "你的邮箱"

说明:

  • --global 表示对当前电脑所有仓库生效。
  • user.nameuser.email 是每个提交的作者信息,记录在 commit 中。

查看当前配置

 git config --list

创建和管理仓库

在 GitHub 上新建仓库

  1. 登录 GitHub,点击右上角“+”,选择“New repository”。
  2. 填写仓库名称,点击“Create repository”。
  3. 复制远程仓库地址,例如:
 https://github.com/你的用户名/你的仓库名.git

克隆远程仓库

 git clone [email protected]:用户名/仓库名.git

或 HTTPS:

 git clone https://github.com/用户名/仓库名.git

本地项目上传流程

假设本地已有项目目录 my_project/

 cd my_project             # 进入项目目录
 git init                  # 初始化 Git 仓库
 git add .                 # 添加所有文件
 git commit -m "首次提交"   # 本地提交
 git branch -M main        # 将默认分支改名为 main(推荐)
 git remote add origin https://github.com/你的用户名/你的仓库名.git  # 添加远程仓库
 git push -u origin main   # 推送到 GitHub 并设置上游分支

以后更新项目的流程

 git add .                  # 添加改动文件
 git commit -m "更新说明"    # 提交改动
 git push                   # 推送到远程仓库

快速创建新项目并上传示例

 mkdir new_project && cd new_project
 echo "# My Project" > README.md
 git init
 git add .
 git commit -m "init"
 git remote add origin https://github.com/你的用户名/你的仓库.git
 git push -u origin main

Git 常用操作与状态管理

查看仓库状态

git status

查看提交历史

git log

简洁版:

git log --oneline --graph --all

撤销操作

  • 撤销暂存:
git reset HEAD <文件名>
  • 撤销工作区修改(恢复到最后一次提交):
git checkout -- <文件名>
  • 修改最后一次提交信息:
git commit --amend

删除分支

  • 删除本地分支:
git branch -d <分支名>
  • 强制删除未合并本地分支:
git branch -D <分支名>
  • 删除远程分支:
git push origin --delete <分支名>

分支管理

创建分支

git branch <分支名>

切换分支

git checkout <分支名>
git switch <分支名>

创建并切换分支

git checkout -b <分支名>

合并分支

git merge <另一个分支>

在当前分支执行,合并另一个分支内容到当前分支。

变基操作

git rebase <另一个分支>

使当前分支基于另一个分支的最新提交重新应用,保持提交历史线性。


处理远程冲突

当 push 被拒绝,提示:

error: failed to push some refs

通常是远程有新的提交,本地未同步。

解决方法:

git pull origin main --rebase
git push origin main

强制推送的风险

⚠️ 强制推送命令:

git push -f

会覆盖远程历史,使用前需确认风险,避免覆盖他人工作。


.gitignore 文件

用于忽略不想提交的文件,如:

*.log
node_modules/
.env

Git SSH 连接配置流程

生成 SSH Key

ssh-keygen -t ed25519 -C "备注信息"

参数说明:

  • ssh-keygen:生成 SSH 密钥对。
  • -t ed25519:密钥算法类型,推荐使用 ed25519。
  • -C:注释,便于识别。

默认保存在 ~/.ssh/id_ed25519,可用 -f 自定义文件名:

ssh-keygen -t ed25519 -C "备注" -f ~/.ssh/自定义文件名

添加公钥到 GitHub

  1. 查看公钥内容:
cat ~/.ssh/id_ed25519.pub

或自定义路径:

cat ~/.ssh/自定义文件名.pub
  1. 登录 GitHub:
  • 头像 → Settings → SSH and GPG keys → New SSH key
  • 填写 Title,粘贴公钥内容,保存。

修改远程仓库地址为 SSH 格式

查看远程地址:

git remote -v

修改为 SSH 地址:

git remote set-url origin [email protected]:你的用户名/你的仓库名.git

配置 SSH 使用自定义密钥(可选)

编辑或创建 ~/.ssh/config 文件:

Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/自定义密钥文件名

测试 SSH 连接

ssh -T [email protected]

成功显示:

Hi 你的用户名! You've successfully authenticated, but GitHub does not provide shell access.

失败则显示 Permission denied (publickey),需检查配置。

推送代码

git add .
git commit -m "首次提交"
git push origin main

若远程已有内容,先拉取再推送:

git pull origin main --rebase
git push origin main

SSH 多账户配置(进阶)

配置多个 SSH Key:

Host github-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_personal

Host github-work
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_work

克隆或推送时用对应别名:

git clone git@github-personal:用户名/仓库.git

SSH Key 权限设置

私钥权限要正确:

 chmod 600 ~/.ssh/id_ed25519

权限过宽可能导致 SSH 拒绝使用密钥。


设置默认推送分支

首次推送时用:

 git push -u origin main

以后只需:

 git push

GPG 签名(进阶)

用于保证提交身份真实性:

 git commit -S -m "message"