Git-从0开始-20260408

5 阅读4分钟

Git

一、基础命令

1. Git 基础命令

问题:Git 基础命令

答案核心回答:git init、add、commit、push、pull、clone 是 Git 基础命令。

代码示例

# 初始化仓库
git init
git init --bare  # 裸仓库

# 克隆
git clone https://github.com/user/repo.git
git clone --depth 1 https://github.com/user/repo.git  # 浅克隆

# 添加文件
git add filename.txt          # 添加单个文件
git add .                      # 添加所有更改
git add -p                     # 交互式添加

# 提交
git commit -m "提交信息"
git commit -am "message"     # 自动添加已跟踪文件
git commit --amend             # 修改上次提交

# 推送拉取
git push origin main
git push -u origin main        # 设置上游分支
git push --force               # 强制推送(慎用)

git pull origin main
git pull --rebase origin main  # 变基合并

# 获取
git fetch origin

2. git reset 与 git revert

问题:git reset 与 git revert 的区别

答案核心回答:reset 回退版本(重写历史),revert 创建新提交(保留历史)。

命令作用历史
git reset --soft保留暂存和工作区重写
git reset --mixed保留工作区重写
git reset --hard重置暂存和工作区重写
git revert创建新提交保留

代码示例

# reset 回退
git reset --soft HEAD~1       # 保留暂存区
git reset --mixed HEAD~1      # 保留工作区
git reset --hard HEAD~1       # 重置一切

# revert 撤销
git revert HEAD               # 撤销上次提交
git revert abc123             # 撤销指定提交

二、分支管理

3. Git 分支

问题:Git 分支管理

答案核心回答:分支用于开发新功能,合并后删除。

代码示例

# 创建分支
git branch feature
git checkout -b feature      # 创建并切换
git switch -c feature        # 同上(新版)

# 查看分支
git branch                    # 本地分支
git branch -a                 # 所有分支
git branch -v                 # 详细

# 切换分支
git checkout feature
git switch feature           # 新版

# 删除分支
git branch -d feature        # 安全删除
git branch -D feature        # 强制删除

# 重命名分支
git branch -m old-name new-name

4. git merge 与 git rebase

问题:merge 与 rebase 的区别

答案核心回答:merge 保留历史分叉,rebase 变基形成直线历史。

代码示例

# merge
git checkout main
git merge feature            # 快进合并
git merge --no-ff feature    # 非快进合并

# rebase
git checkout feature
git rebase main              # 变基到 main

# 解决冲突
git rebase --continue        # 继续变基
git rebase --abort           # 取消变基

# 交互式变基
git rebase -i HEAD~3         # 修改最近3次提交
# pick - 保留
# squash - 合并
# drop - 删除

三、远程操作

5. 远程仓库

问题:远程仓库操作

答案核心回答:git remote 管理远程仓库,push/pull 同步代码。

代码示例

# 添加远程仓库
git remote add origin https://github.com/user/repo.git
git remote -v                  # 查看远程仓库

# 修改远程仓库
git remote set-url origin new-url

# 推送
git push -u origin main       # 首次推送设置上游

# 拉取合并
git fetch + merge = git pull
git fetch + rebase = git pull --rebase

# 删除远程分支
git push origin --delete feature

四、标签管理

6. git tag

问题:git tag

答案核心回答:tag 用于标记发布点,如版本号。

代码示例

# 创建标签
git tag v1.0.0
git tag -a v1.0.0 -m "版本1.0.0"  # 附注标签
git tag -a v1.0.0 abc123          # 为历史提交打标签

# 查看标签
git tag
git tag -l 'v1.*'

# 推送标签
git push origin v1.0.0
git push origin --tags           # 推送所有标签

# 删除标签
git tag -d v1.0.0                # 删除本地
git push origin --delete v1.0.0 # 删除远程

五、储藏与清理

7. git stash

问题:git stash

答案核心回答:stash 暂存工作区更改,便于切换分支。

代码示例

# 储藏
git stash
git stash save "message"
git stash -u                    # 包含未跟踪文件
git stash -p                    # 交互式储藏

# 查看
git stash list

# 应用
git stash apply                 # 应用但不删除
git stash pop                   # 应用并删除
git stash apply stash@{0}      # 指定 stash

# 删除
git stash drop stash@{0}
git stash clear                 # 清空所有

六、其他常用操作

8. 日志与差异

问题:日志与差异查看

答案核心回答:git log 查看提交历史,git diff 查看更改差异。

代码示例

# 日志
git log
git log --oneline              # 简洁
git log --graph                 # 图形化
git log -n 5                    # 最近5条
git log --author="name"         # 按作者
git log --since="2024-01-01"    # 时间范围

# 差异
git diff                        # 工作区 vs 暂存区
git diff --cached              # 暂存区 vs HEAD
git diff HEAD                  # 工作区 vs HEAD
git diff main..feature         # 两分支差异
git diff --stat               # 统计差异