Git 指令笔记 - 详解

Git 指令笔记

1. 安装与配置

查看安装版本

git --version

全局配置用户信息 (第一次安装后必须设置)

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

查看所有配置项

git config --list

为特定仓库设置不同用户 (在仓库目录下执行,去掉 --global)

git config user.name "该仓库的用户名"

2. 创建仓库与基础操作

初始化当前目录为新的 Git 仓库

git init

克隆一个远程仓库到本地

git clone <远程仓库URL>
  # 示例
  git clone https://github.com/username/repo.git

检查当前文件状态

git status

将文件添加到暂存区 (Stage)

git add <文件名>
  # 添加特定文件
  git add . # 添加所有当前目录下的更改(新建和修改)
  git add -A # 添加所有更改(包括删除操作)
  git add -u # 添加已跟踪文件的更改(修改和删除,不包括新建)

提交更改到本地仓库

git commit -m "提交信息的描述"

一次性添加所有跟踪文件的修改并提交 (跳过 git add)

git commit -am "提交信息的描述"
# 注意:对新建(未跟踪)的文件无效

3. 查看与比较更改

查看提交历史

git log # 详细历史
git log --oneline # 简洁的单行历史
git log --graph # 图形化显示分支合并历史

比较工作区和暂存区的差异

git diff

比较暂存区和最新提交的差异
bash
git diff --staged

git diff --cached

比较两个特定提交之间的差异

git diff <commit-id-1>
  <commit-id-2>

4. 分支管理

查看所有分支

git branch # 查看本地分支
git branch -a # 查看所有分支(包括远程)

创建新分支

git branch <新分支名>

切换分支

git checkout <分支名>
  # 或者使用更现代的 switch 命令
  git switch <分支名>

创建并切换到新分支

git checkout -b <新分支名>
  # 或者
  git switch -c <新分支名>

合并分支 (将指定分支合并到当前分支)

git merge <要合并过来的分支名>

删除分支

git branch -d <分支名>
  # 安全删除(已合并)
  git branch -D <分支名>
    # 强制删除(未合并)

重命名当前分支

git branch -m <新分支名>

5. 远程仓库操作

查看远程仓库信息

git remote -v

添加远程仓库地址

git remote add origin <远程仓库URL>
  # 通常 "origin" 是默认的远程仓库别名

从远程仓库拉取更改并合并到当前分支

git pull origin <分支名>
  # 相当于 git fetch + git merge

仅从远程仓库获取更改,但不合并

git fetch origin

将本地分支推送到远程仓库

git push origin <本地分支名>
  # 首次推送时建立追踪关系
  git push -u origin <本地分支名>

删除远程分支

git push origin --delete <远程分支名>

6. 撤销与回退

撤销工作区的修改 (未 git add)

git restore <文件名>
  # 新命令
  git checkout -- <文件名>
    # 旧命令

将文件从暂存区撤回到工作区 (已 git add, 但未 git commit)

git restore --staged <文件名>
  # 新命令
  git reset HEAD <文件名>
    # 旧命令

撤销提交 (创建一个新提交来反转之前的提交)

git revert <commit-id>

回退到某个提交 (危险操作:会丢弃之后的提交历史)

# 软回退:回退提交,但保留更改在工作区
git reset --soft <commit-id>
  # 混合回退(默认):回退提交和暂存区,但保留更改在工作区
  git reset --mixed <commit-id>
    # 硬回退(危险!):彻底丢弃提交、暂存区和工作区的所有更改
    git reset --hard <commit-id>

警告: git reset --hard 会永久丢失数据,请谨慎使用!

7. 储藏 (Stashing)

临时储藏当前工作区和暂存区的修改

git stash
# 或添加备注信息
git stash push -m "备注信息"

查看所有储藏列表

git stash list

应用最新的储藏并保留储藏记录

git stash apply
# 应用指定的储藏
git stash apply stash@{n
}

应用最新的储藏并删除该储藏记录

git stash pop

删除储藏记录

git stash drop stash@{n
} # 删除指定储藏
git stash clear # 删除所有储藏

8. 标签管理

创建附注标签 (推荐)

git tag -a v1.0 -m "版本1.0发布"

创建轻量标签

git tag v1.0-lite

查看所有标签

git tag

将标签推送到远程

git push origin v1.0 # 推送单个标签
git push origin --tags # 推送所有标签

删除标签

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

9. 高级与实用技巧

修改最后一次提交的信息 (尚未推送到远程)

git commit --amend

将多个提交合并为一个 (交互式变基)

git rebase -i HEAD~n # n代表要合并的提交数量

查看命令的执行记录

git reflog
# 常用于找回因 reset --hard 而丢失的提交

忽略文件

创建一个名为 .gitignore 的文件,在其中列出要忽略的文件和文件夹模式。

# 示例
*.log
node_modules/
.DS_Store

工作流总结

日常开发循环:

git pull origin main # 开始前先拉取最新代码
git switch -c feature/xxx # 创建并切换到功能分支
# ... 编写代码 ...
git add . # 添加更改到暂存区
git commit -m "message" # 提交到本地仓库
git push origin feature/xxx # 推送到远程
# 然后在Git平台(如GitHub)创建Pull Request请求合并

更新功能分支:

git switch main # 切换回主分支
git pull origin main # 拉取主分支最新代码
git switch feature/xxx # 回到功能分支
git merge main # 将主分支合并到功能分支,解决可能出现的冲突

.gitignore

忽略一个文件夹的跟踪

  1. 创建 .gitignore 文件(如果不存在)
# 导航到您的git仓库根目录
cd /path/to/your/repository
# 如果.gitignore文件不存在,则创建它
touch .gitignore
  1. 将数据文件夹添加到 .gitignore
# 在 .gitignore 文件中添加以下内容
/large_data_folder/
  • 开头的斜杠 / 表示该路径是相对于仓库根目录的。这确保了只会忽略根目录下的 large_data_folder,而不是其他任何地方的同名文件夹。
  • 如果的文件夹结构更复杂,例如在 data/participants/ 下,可以这样写:
/data/participants/
  1. 从 Git 索引中移除已跟踪的文件夹
    如果这个数据文件夹已经被 Git 跟踪(即您之前已经 git add 过它),仅仅将其添加到 .gitignore 是不够的。Git 会继续跟踪它。您需要将其从 Git 的暂存区(索引)中移除,但同时保留本地文件。

执行以下命令:

# 停止跟踪该文件夹并将其从暂存区删除,但保留本地工作目录中的文件
git rm -r --cached /path/to/your/large_data_folder
# 例如,如果文件夹在根目录,名为 large_data_folder
git rm -r --cached large_data_folder
  • rm: 移除命令。

  • -r: 递归选项,用于删除文件夹及其所有内容。

  • –cached: 这是最关键的部分!它告诉 Git 只从索引/暂存区中移除文件,而不会删除您硬盘上的实际数据文件。

  1. 提交更改
    完成上述操作后,您需要提交这次更改。这次提交的记录将会是“从 Git 中删除了这些文件”,但实际上它们只是被忽略了。
# 将 .gitignore 的修改和停止跟踪的操作一起提交
git add .gitignore
git commit -m "Stop tracking large_data_folder and add it to .gitignore"
posted on 2025-09-19 15:09  ljbguanli  阅读(25)  评论(0)    收藏  举报