Git常见操作与指令

目录

基础配置

ssh配置

查看当前 SSH 密钥列表

bash 复制代码
ls -la ~/.ssh/			# Linux

Windows下路径为:

plain 复制代码
C:\Users\你的用户名\.ssh\

例如,如果你的用户名是 Alice,完整路径就是:

plain 复制代码
C:\Users\Alice\.ssh\

注意路径格式:Windows 上可以用斜杠 / 或双反斜杠 \,不要用单反斜杠 \,否则会被当作转义字符。

可以看到类似:

plain 复制代码
id_rsa_github      id_rsa_github.pub
id_rsa_gitlab      id_rsa_gitlab.pub
id_rsa_gitee       id_rsa_gitee.pub
config             known_hosts

测试当前 SSH 连接

bash 复制代码
ssh -T git@github.com      # 测试 GitHub
ssh -T git@gitlab.com      # 测试 GitLab
ssh -T git@gitee.com       # 测试 Gitee

如果输出 Permission denied 或 Hi xxx! You've successfully authenticated,就能判断当前用的是哪个账户。

配置 SSH Config 多账户

步骤 1:为每个平台生成独立密钥(如果还没做)
bash 复制代码
# GitHub 个人账号
ssh-keygen -t rsa -C "personal@email.com" -f ~/.ssh/id_rsa_github

# GitLab 公司账号
ssh-keygen -t rsa -C "work@company.com" -f ~/.ssh/id_rsa_gitlab

# Gitee 账号
ssh-keygen -t rsa -C "gitee@email.com" -f ~/.ssh/id_rsa_gitee

-f 指定文件名,避免覆盖默认密钥

步骤 2:将公钥添加到各平台

将对应文件里的完整内容复制,添加到对应的平台中。切记是 .pub 后缀的才是需要上传的公钥.

步骤 3:创建/编辑 SSH 配置文件
bash 复制代码
# Linux目录
vim ~/.ssh/config

写入以下内容(这是核心配置),以下为示例:

plain 复制代码
# GitHub 个人账号
Host github-personal
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_github
    IdentitiesOnly yes

# Gitee 账号
Host gitee
    HostName gitee.com
    User git
    IdentityFile ~/.ssh/id_rsa_gitee
    IdentitiesOnly yes

# 公司私有 GitLab
Host gitlab-company
    HostName gitlab.company.com
    User git
    IdentityFile ~/.ssh/id_rsa_company
    IdentitiesOnly yes

参数解释:

Host后跟自定义别名,后续用这个名字代替 github.com

HostName:真实服务器地址

User git 不可更改

IdentityFile:指定该主机使用的私钥,不带.pub后缀

IdentitiesOnly yes:只使用指定的密钥,防止 SSH 客户端提供默认密钥导致冲突

步骤 4:修改仓库的 Remote URL

原来的地址:

bash 复制代码
git remote set-url origin git@github.com:username/repo.git
git remote set-url origin git@gitee.com:username/repo.git
git remote set-url origin git@gitlab.company.com:username/repo.git

改为使用 Host 别名:

bash 复制代码
# Github 个人账户
git remote set-url origin git@github-personal:username/repo.git

# Gitee 个人账户
git remote set-url origin git@gitee:username/repo.git

# GitLab 公司私有
git remote set-url origin git@gitlab-company:username/repo.git
步骤 5:测试并拉取
bash 复制代码
# 测试连接
ssh -T github-personal
# 应输出:Hi username! You've successfully authenticated...

# 拉取代码
git pull origin main

本地配置用户信息

bash 复制代码
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

设置全局用户名和邮箱,会出现在每次 commit 记录中。 --global 表示对当前用户所有仓库生效,若只想对当前仓库生效则去掉 --global

查看配置

bash 复制代码
git config --list
git config user.name

仓库操作

当前目录初始化仓库

bash 复制代码
git init

在当前目录创建一个新的 Git 仓库,生成 .git 隐藏目录

克隆远程仓库

bash 复制代码
# 不指定本地目录时,默认本地目录名称为远程仓库名称
git clone https://github.com/user/repo.git
# 指定本地目录名
git clone https://github.com/user/repo.git my-folder

将远程仓库完整复制到本地,包括所有分支和历史记录;git clone 后的url根据自己仓库实际情况修改

日常工作

查看状态

bash 复制代码
git status

查看工作区(Working Directory)和暂存区(Staging Area)的状态,显示哪些文件被修改、新增或删除

添加文件到暂存区

bash 复制代码
git add filename.txt          # 添加单个文件filename.txt
git add .                     # 添加当前目录所有变更
git add src/                  # 添加整个目录src/
git add -p                    # 交互式选择代码块(hunk)添加

将工作区的修改放入暂存区(Stage),准备提交。-p 模式可以精确选择要暂存的代码片段。

提交更改

bash 复制代码
git commit -m "feat: add user login feature"
git commit -m "fix: resolve null pointer exception" -m "Detailed description here"

将暂存区的内容保存到本地仓库,生成一个 commit 快照。"引号内内容根据自己实际情况修改"

快速提交

bash 复制代码
git commit -am "docs: update README"

-a 自动将所有已跟踪(tracked)的修改加入暂存区并提交。注意:不会包含新增(untracked)的文件。

查看提交历史与差异

查看提交历史

bash 复制代码
git log
git log --oneline             # 简洁模式,一行一个 commit
git log --graph --oneline --all  # 图形化显示所有分支历史
git log -3                    # 最近 3 条记录
git log --author="Alice"      # 按作者筛选

查看 commit 历史,包含 hash、作者、时间和提交信息。

查看文件修改内容

bash 复制代码
git diff                      # 工作区 vs 暂存区
git diff --staged             # 暂存区 vs 最新 commit(--cached 同义)
git diff HEAD~1               # 与上一个 commit 对比
git diff branch-a branch-b    # 对比两个分支

查看代码差异。HEAD~1 表示当前 commit 的前一个版本.

分支管理

查看分支

bash 复制代码
git branch                    # 本地分支
git branch -a                 # 所有分支(含远程)
git branch -vv                # 显示分支与远程追踪关系

创建、切换分支

bash 复制代码
git branch feature-x          # 创建分支(不切换)
git checkout feature-x        # 切换到已有分支
git checkout -b feature-x     # 创建并切换(常用)
git switch feature-x          # 新命令,更安全的切换
git switch -c feature-x       # 创建并切换(推荐新写法)

合并分支

bash 复制代码
git checkout main
git merge feature-x           # 将 feature-x 合并到当前分支(main)
git merge --no-ff feature-x   # 禁用快进合并,保留分支历史

--no-ff 会生成一个 merge commit,即使可以快进合并,便于保留 feature 分支的存在痕迹。

删除分支

bash 复制代码
git branch -d feature-x       # 删除已合并的分支
git branch -D feature-x       # 强制删除(未合并也会删)
git push origin --delete feature-x  # 删除远程分支

撤销与回退

撤销工作区修改

bash 复制代码
git checkout -- filename.txt  # 丢弃工作区修改(危险)
git restore filename.txt      # 新命令,同上

将文件恢复到最近一次 commit 或 add 的状态,未提交的修改会丢失。

撤销暂存区

bash 复制代码
git reset HEAD filename.txt   # 将文件从暂存区移回工作区
git restore --staged filename.txt  # 新命令

版本回退

bash 复制代码
git reset --soft HEAD~1       # 回退到上一个版本,保留修改到暂存区
git reset --mixed HEAD~1      # 回退到上一个版本,保留修改到工作区(默认)
git reset --hard HEAD~1       # 彻底回退,丢弃所有修改(危险!)
git reset --hard abc1234      # 回退到指定 commit hash

--soft:只移动 HEAD,不改暂存区和工作区

--mixed:移动 HEAD,重置暂存区,保留工作区

--hard:全部重置,数据不可恢复

查看所有操作记录(用于找回)

bash 复制代码
git reflog

远程仓库交互

查看远程地址

bash 复制代码
git remote -v

输出示例:

plain 复制代码
origin  git@github.com:yourname/repo.git (fetch)
origin  git@github.com:yourname/repo.git (push)

添加远程仓库

bash 复制代码
git remote add origin https://github.com/user/repo.git   

"https://github.com/user/repo.git"为示例,根据自己实际远程仓库进行修改

拉取与推送

bash 复制代码
git pull origin main          # 拉取远程 main 分支并合并
git pull --rebase origin main # 使用 rebase 方式拉取(推荐,历史更整洁)
git push origin main          # 推送到远程 main 分支
git push -u origin feature-x  # 首次推送并建立追踪关系

获取远程更新(不合并)

bash 复制代码
git fetch origin
git fetch --all

下载远程更新到本地,但不自动合并,可以先用 git diff main origin/main 查看差异。

标签管理

bash 复制代码
git tag v1.0.0                # 创建轻量标签
git tag -a v1.0.0 -m "Release version 1.0.0"  # 创建附注标签
git tag                       # 查看标签
git push origin v1.0.0        # 推送单个标签到远程
git push origin --tags        # 推送所有标签
git checkout v1.0.0           # 切换到标签(分离 HEAD 状态)

常用完整流程

日常开发流程:

bash 复制代码
git checkout -b feature-login    # 创建功能分支
# ... 编码 ...
git add .
git commit -m "feat: implement user login"
git checkout main
git pull origin main             # 先拉取最新代码
git merge feature-login          # 合并功能分支
git push origin main             # 推送到远程
git branch -d feature-login      # 删除本地功能分支

紧急修复线上 bug:

bash 复制代码
git stash                        # 保存当前工作
git checkout main
git checkout -b hotfix-critical
# ... 修复代码 ...
git commit -am "fix: critical bug"
git checkout main
git merge hotfix-critical
git push origin main
git stash pop                    # 恢复之前的工作
相关推荐
OYangxf2 小时前
Git Conflict Resolution
大数据·git·elasticsearch
高斯林.神犇2 小时前
Git全套流程
git
次元工程师!4 小时前
LangFlow开发(一)—安装和部署
git·python·大模型·langflow
怣疯knight4 小时前
【无标题】
git
Jim-zf5 小时前
git 锁文件
git
一只积极向上的小咸鱼16 小时前
嵌套 Git 仓库 / gitlink / submodule 问题总结
大数据·git·elasticsearch
LuDvei17 小时前
git拉取报错问题
git
程序猿多布18 小时前
Fork操作笔记
git·fork
荪荪18 小时前
在本地建立git仓库
git