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-gui
和 gitk
),也支持多种第三方工具和 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 仓库:
- 本地初始化一个新仓库;
- 克隆一个远程仓库。
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 的本地仓库由三个部分组成:
- 工作区(Working Directory):当前正在编辑的文件所在区域;
- 暂存区(Index / Staging Area):准备提交的更改;
- 本地仓库(Local Repository):已提交的快照。
工作流程如下:
✅ 修改文件 → ✅ 添加到暂存区 → ✅ 提交到本地仓库 → ✅ 推送到远程仓库
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 pull
是 git 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 等,以应对更复杂的开发场景。