1. 概述

本文将介绍 Git 中最常用的一些命令,帮助你快速上手并掌握 Git 的基本操作。

我们将从安装与配置开始,创建第一个本地仓库,学习如何提交更改并与远程仓库同步。此外,我们还将讲解分支管理,并介绍一些高级技巧,如修改提交记录和操作提交历史。

无论你是想参与开源项目还是团队协作,Git 都是必不可少的工具。

2. Git 是什么?

Git 是一个版本控制系统(VCS),它允许我们在不覆盖原有快照的前提下,保存并追踪文件随时间的变化。它帮助开发者在项目中进行协作。

与 SVN 不同,Git 是分布式版本控制系统。这意味着每个开发者都拥有整个仓库的完整副本,并且可以在没有网络连接的情况下工作。

3. Git 安装

Git 支持 Windows、Mac 和 Linux 等主流操作系统。大多数 Mac 和 Linux 系统已经预装了 Git。

要检查是否已安装 Git,可以在终端执行:

$ git version
git version 2.24.3 (Apple Git-128)

Git 自带图形界面工具(如 git-guigitk),也支持多种第三方工具和 IDE 插件。

4. git help – 命令手册

在开始使用 Git 之前,建议先运行 git help 命令查看 Git 的使用说明:

$ git help
usage: git [--version] [--help] [-C <path>] [-c <name>=<value>]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           <command> [<args>]
...

也可以查看特定命令的帮助文档:

$ git help init
$ git init --help

使用 -g 参数可以查看 Git 提供的内部教程:

$ git help -g
The common Git guides are:
   attributes          Defining attributes per path
   cli                 Git command-line interface and conventions
   core-tutorial       A Git core tutorial for developers
...

5. git config – 配置 Git

安装完成后,使用 git config 命令配置 Git 的基本信息。

Git 支持多个配置级别:system(系统级)、global(用户级)、local(仓库级)等。

优先级从高到低为:local > global > system

例如,设置用户名:

$ git config --global user.name "Baeldung User"

查看当前配置:

$ git config -l
user.name=Baeldung User

6. 创建仓库

有两种方式创建 Git 仓库:

  1. 本地初始化一个新仓库;
  2. 克隆一个远程仓库。

6.1 git init – 初始化新仓库

使用 git init 初始化当前目录为 Git 仓库:

$ mkdir simple-repo; cd simple-repo; git init
Initialized empty Git repository in /simple-repo/.git/

Git 会在该目录下创建一个隐藏的 .git 目录,用于存储所有版本信息。

添加远程仓库链接:

$ git remote add origin https://github.com/eugenp/tutorials.git

6.2 git clone – 克隆远程仓库

如果你想参与已有项目,可以使用 git clone

$ git clone https://github.com/eugenp/tutorials.git
Cloning into 'repo'...

克隆完成后,远程仓库默认被命名为 origin,你可以使用如下命令查看:

$ git remote -v
origin    https://github.com/eugenp/tutorials.git (fetch)
origin    https://github.com/eugenp/tutorials.git (push)

7. Git 工作流程

Git 的本地仓库由三个部分组成:

  1. 工作区(Working Directory):当前正在编辑的文件所在区域;
  2. 暂存区(Index / Staging Area):准备提交的更改;
  3. 本地仓库(Local Repository):已提交的快照。

工作流程如下:

✅ 修改文件 → ✅ 添加到暂存区 → ✅ 提交到本地仓库 → ✅ 推送到远程仓库

git workflow

8. 提交更改

8.1 git status – 查看当前状态

创建一个文件并查看状态:

$ echo "Hello World" >> myfile.txt
$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)
    myfile.txt

提示文件未被跟踪。

8.2 git add – 添加到暂存区

将文件加入暂存区:

$ git add myfile.txt

也可以使用 git stage(等价于 git add):

$ git stage *

再次查看状态:

$ git status
Changes to be committed:
    new file:   myfile.txt

8.3 git restore & .gitignore – 取消跟踪

如果想取消暂存状态:

$ git restore --staged myfile.txt

如果想永久忽略某些文件,创建 .gitignore 文件并添加规则。

8.4 git commit – 提交更改

提交更改并添加描述:

$ git commit -m "My first commit"
[master 8451901] My first commit
 1 file changed, 1 insertion(+)
 create mode 100644 myfile.txt

提交后,本地仓库比远程多出一个提交。

8.5 git log & git show – 查看提交历史

查看提交历史:

$ git log
commit 845190154ed7a491a6143669c4ce88058fb93f8a (HEAD -> master)
Author: ...
Date: ...

    My first commit

查看某个提交的详细信息:

$ git show 845190154ed7a491a6143669c4ce88058fb93f8a
diff --git a/myfile.txt b/myfile.txt
new file mode 100644
index 0000000..557db03
--- /dev/null
+++ b/myfile.txt
@@ -0,0 +1 @@
+Hello World

8.6 git stash – 暂存更改

当你需要切换分支但不想提交当前更改时,可以使用 git stash

$ touch myfile-2.txt; git add *
$ git stash push
Saved working directory and index state WIP on master: 8451901 My first commit

恢复更改:

$ git stash pop

查看暂存列表:

$ git stash list
stash@{0}: WIP on master: 8451901 My first commit

9. 操作提交历史

9.1 git commit --amend – 修改最近提交

如果你忘记添加某个文件,可以用 --amend 修改最近一次提交:

$ git add myfile-2.txt
$ git commit --amend

会进入编辑器修改提交信息,保存后即完成合并。

9.2 git rebase – 重新应用提交

使用 git rebase -i 可以交互式地修改提交历史:

$ git rebase -i HEAD~2

弹出编辑器,可对提交进行重排、合并、编辑等操作。

9.3 git reset – 回退到某个状态

如果想回退到某个提交:

$ git reset 82d8635

加上 --hard 会丢弃所有更改:

$ git reset --hard 82d8635

10. 同步远程仓库

10.1 git fetch – 获取远程更新

获取远程分支更新,但不自动合并:

$ git fetch

10.2 git merge – 合并远程更改

将远程更改合并到当前分支:

$ git merge origin/master

如果有冲突,需要手动解决。

10.3 git pull – 获取并合并

git pullgit fetch + git merge 的组合:

$ git pull origin/master

10.4 git push – 推送本地提交

将本地提交推送到远程仓库:

$ git push origin master

推送成功后,远程仓库也会更新。

11. 分支管理

11.1 git branch – 管理分支

创建新分支:

$ git branch new-branch

列出所有分支:

$ git branch --list --all
* master
  new-branch
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

删除分支:

$ git branch -d new-branch

11.2 git checkout / git switch – 切换分支

切换分支:

$ git switch new-branch
Switched to branch 'new-branch'

或使用 checkout

$ git checkout master
Switched to branch 'master'

git switch 更专注于切换分支,而 git checkout 功能更复杂,可用于恢复文件等操作。

12. 总结

本文介绍了 Git 的基本使用流程,包括安装、配置、仓库创建、提交更改、查看历史、分支管理等核心操作。

通过这些命令,你可以快速上手 Git 并开始参与项目协作。Git 的强大不仅在于版本控制,更在于它带来的协作灵活性和历史追溯能力。

掌握了这些基础命令后,你可以进一步学习 Git 的高级特性,如子模块、钩子、reflog 等,以应对更复杂的开发场景。


原始标题:Git for Beginners: The Definitive Practical Guide