本节提供动手实践,引导你创建第一个Git仓库,添加文件并提交它们。通过此练习,你将熟悉Git的基本工作流程。设置你的项目首先,你需要为项目设定一个存放位置。打开你的终端或命令行工具。为本次练习创建一个新目录并进入该目录:mkdir my-git-project cd my-git-project这个目录 my-git-project 目前只是一个普通文件夹。Git尚未跟踪其中的任何内容。初始化仓库现在,让我们将此目录变为一个Git仓库。使用 git init 命令:git init你会看到类似这样的输出:Initialized empty Git repository in /path/to/your/my-git-project/.git/这个命令会创建一个名为 .git 的隐藏子目录。这个 .git 目录包含你的仓库所有必要的文件和元数据,包括历史记录、配置和对象数据库。通常你不需要直接操作 .git 目录。检查状态让我们看看Git对我们新仓库的看法。使用 git status 命令:git status输出将类似这样:On branch main No commits yet nothing to commit (create/copy files and use "git add" to track)这告诉我们几点信息:我们正在 main 分支上(在旧版Git中可能是 master,但 main 是当前的默认值)。仓库历史中还没有提交。工作目录相对于仓库是干净的。没有被跟踪的文件有改动,也没有新文件被暂存。创建并暂存文件让我们创建第一个项目文件。使用你首选的文本编辑器或 echo 等命令来创建一个简单的 README.md 文件:# 使用 echo (在 Linux/macOS/Git Bash 上) echo "# My Awesome Project" > README.md # 或者使用文本编辑器手动创建文件并添加一些文本。现在,再次运行 git status:git status输出已改变:On branch main No commits yet Untracked files: (use "git add <file>..." to include in what will be committed) README.md nothing added to commit but untracked files present (use "git add" to track)Git看到了新的 README.md 文件,但告诉我们它是“未跟踪”的。这意味着文件存在于你的工作目录中,但Git尚未跟踪其历史。为了开始跟踪文件并为下一次提交做准备,我们需要使用 git add 将其添加到暂存区:git add README.md此命令告诉Git:“我希望将 README.md 的当前状态包含在下一次快照(提交)中。”让我们再一次检查状态:git status输出现在显示:On branch main No commits yet Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: README.mdREADME.md 现在被列在“将要提交的更改”下。它已从工作目录状态(未跟踪)移动到暂存区。这是你刚刚经历的状态的简单示意图:digraph GitWorkflow { rankdir=LR; node [shape=box, style=rounded, fontname="Arial", fontsize=10]; edge [fontname="Arial", fontsize=10]; "工作目录" -> "暂存区" [label="git add"]; "暂存区" -> "仓库 (.git)" [label="git commit"]; }文件通过 git add 从工作目录移动到暂存区,然后通过 git commit 永久保存到仓库历史中。进行首次提交文件已暂存并准备就绪。让我们使用 git commit 创建项目历史的第一个快照。我们将使用 -m 标志直接从命令行提供一个描述性提交消息。git commit -m "首次提交:添加 README.md"你会看到类似这样的输出:[main (root-commit) abc1234] 首次提交:添加 README.md 1 个文件更改,1 行插入(+) 创建模式 100644 README.md这确认提交已创建。[main (root-commit) abc1234] 表明了分支 (main),它是最开始的提交 (root-commit),以及唯一提交哈希的开头 (abc1234)。你的哈希值会不同。其余部分总结了此次提交中包含的更改(1 个文件更改,1 行插入,README.md 被创建)。现在,git status 显示什么?git status输出:On branch main nothing to commit, working tree clean所有内容都已提交!你的工作目录与仓库中存储的最新快照一致,并且暂存区是空的。查看历史你可以使用 git log 查看你刚刚进行的提交:git log输出将显示有关你提交的详细信息:commit abc1234567890def1234567890abcdef12345678 (HEAD -> main) Author: Your Name <your.email@example.com> Date: Mon Oct 26 10:30:00 2023 -0700 首次提交:添加 README.md这显示了完整的提交哈希、作者和电子邮件(来自你的Git配置)、日期以及提交消息。使用 .gitignore 忽略文件通常,项目会生成你不想包含在Git历史中的临时文件、日志或构建产物。让我们模拟这种情况。创建一个临时文件:echo "临时草稿" > notes.tmp检查状态:git statusOn branch main Untracked files: (use "git add <file>..." to include in what will be committed) notes.tmp nothing added to commit but untracked files present (use "git add" to track)Git认为 notes.tmp 是未跟踪的。要告诉Git忽略此文件以及任何以 .tmp 结尾的文件,创建一个名为 .gitignore 的文件(注意开头的点):echo "*.tmp" > .gitignore这创建了 .gitignore 文件并向其中添加了模式 *.tmp。星号 * 用作通配符,匹配任何字符序列。现在,再次检查状态:git statusOn branch main Untracked files: (use "git add <file>..." to include in what will be committed) .gitignore nothing added to commit but untracked files present (use "git add" to track)注意 notes.tmp 不再被列出!Git现在根据 .gitignore 中的规则忽略它。然而,.gitignore 文件本身是新的且未跟踪的。由于像忽略规则这样的配置 应该 成为项目历史的一部分(以便其他使用该仓库的人也能从中受益),让我们添加并提交它:git add .gitignore git commit -m "添加 .gitignore 以排除临时文件"最后一次检查状态和日志:git status git loggit status 应该报告 nothing to commit, working tree clean。git log 现在将显示你的历史中有两次提交。恭喜!你已成功初始化了一个Git仓库,将文件添加到暂存区,创建提交以保存项目快照,并配置Git忽略特定文件。你已练习了使用Git时会经常用到的核心工作流程。