获取 Git 仓库 (Getting a Git Repository)
获取 Git 仓库通常有两种方式:
初始化现有目录
如果你想对一个尚未进行版本控制的本地目录开始使用 Git,首先进入该目录,然后运行
git init 命令。执行此命令会在当前目录下创建一个名为 .git 的子目录,其中包含所有必要的仓库文件(一个 Git 仓库骨架)。此时,项目中的文件尚未被跟踪。
如果想开始版本控制现有文件,需要使用
git add 命令指定要跟踪的文件,然后进行首次提交:示例:
此时,你就拥有了一个带有被跟踪文件和首次提交的 Git 仓库。
克隆现有仓库
如果你想获取一个现有 Git 仓库的副本(例如,你想贡献的项目),你需要使用
git clone 命令。Git 的“克隆”(clone)与某些版本控制系统(如 Subversion)的“检出”(checkout)不同。克隆操作会接收到服务器上几乎所有数据的完整副本,包括项目历史上每个文件的所有版本。
你可以通过添加额外参数来指定克隆到的本地目录名称:
Git 支持多种传输协议,包括 https://、git:// 或使用 SSH 协议的
user@server:path/to/repo.git 格式。记录对仓库的修改 (Recording Changes to the Repository)
理解 Git 的三态和三区是流畅使用 Git 的关键。
Git 的三态 (The Three States)
文件在 Git 中可以处于三种主要状态:
- Modified (已修改): 你修改了文件,但尚未将其提交到数据库。
- Staged (已暂存): 你已将文件的当前版本标记为包含在你的下一次提交快照中。
- Committed (已提交): 数据已安全地存储在你的本地数据库中。

Git 的三区 (The Three Sections)
Git 项目主要分为三个部分:
- 工作区 (Working Tree): 项目的一个单次检出版本,文件被放置在磁盘上供你使用或修改。
- 暂存区 (Staging Area) / 索引 (Index): 一个文件,通常位于 Git 目录中,存储着关于下一次提交将包含哪些内容的信息。
- Git 目录 (.git directory): 存储项目元数据和对象数据库的地方。这是 Git 最重要的部分,克隆仓库时复制的就是它。
基本的 Git 工作流程如下:
- 你在工作区修改文件。
- 你选择性地暂存你希望包含在下一次提交中的更改,将这些更改添加到暂存区。
- 你执行提交,这会将暂存区中的文件作为快照永久存储到 Git 目录中。
核心命令与语法
- 查看文件状态:
git status该命令会显示你的分支状态、哪些文件是未跟踪 (Untracked),哪些是已修改 (Modified) 但未暂存,哪些是已暂存 (Changes to be committed)。
- 跟踪新文件/暂存修改:
git add <file>... - 用于开始跟踪新文件。
- 用于将修改后的文件或目录(递归添加所有文件)添加到暂存区。
- 注意: Git 暂存文件时,是精确地记录运行
git add时文件所处的状态。如果你在运行git add之后修改了文件,必须再次运行git add来暂存最新版本。
- 简洁状态输出:
git status -s或git status --short。
- 忽略文件:
.gitignore创建一个名为 .gitignore 的文件,在其中列出模式以匹配你希望 Git 忽略的文件(例如,日志文件或构建系统自动生成的文件)。
- 查看更改:
git diff - 查看未暂存的更改:
git diff - 比较工作区与暂存区之间的差异。
- 查看已暂存的更改:
git diff --staged或git diff --cached - 比较暂存区与上次提交之间的差异。
- 提交更改:
git commit - 默认会打开配置的编辑器,让你输入提交信息。
- 内联提交信息:
git commit -m "提交信息"。 - 跳过暂存区:
git commit -a -m "信息" - 自动暂存所有已跟踪(已存在于 Git 历史中)的修改文件,然后执行提交。但新文件仍需先使用
git add(此信息未直接在git commit -a的描述中,但根据上下文可推断)。
- 移除文件:
git rm <file>从暂存区和工作目录中移除文件。
- 移动/重命名文件:
git mv file_from file_to这是一个便捷功能,相当于运行mv、git rm <old_file>和git add <new_file>三个命令。Git 可以隐式地识别文件重命名,因此使用git mv或手动操作后再git add/git rm效果相同。
查看提交历史 (Viewing the Commit History)
查看项目历史最基本和强大的工具是
git log 命令。- 基本输出: 默认按时间倒序(最新在前)列出提交,显示 SHA-1 校验和、作者、日期和提交信息。
- 常用选项与语法:
选项 | 描述 | 引用 |
-p 或 --patch | 显示每次提交引入的差异(补丁输出) | ㅤ |
- (如 -2) | 仅显示最近 $n$ 次提交 | ㅤ |
--stat | 显示每次提交的统计信息(修改的文件、增删行数) | ㅤ |
--pretty=oneline | 将每次提交显示在一行,便于查看大量提交 | ㅤ |
--pretty=format:"..." | 允许使用自定义格式输出 (例如 %h 提交哈希缩写, %an 作者姓名, %s 摘要) | ㅤ |
--graph | 添加 ASCII 图表,显示分支和合并历史。 | ㅤ |
--oneline | oneline + abbrev-commit 的缩写形式。 | ㅤ |
-- <path> | 限制日志输出到对指定文件或目录有更改的提交。 | ㅤ |
注: Author (作者) 是最初编写工作的人,而 Committer (提交者) 是最后应用工作的人。
撤销操作 (Undoing Things)
本节介绍如何处理未暂存和已暂存的更改:
撤销暂存区文件 (Unstaging)
如果你暂存了一个文件,但决定在下一次提交中不包含它,可以使用以下命令:
语法 (推荐现代 Git 版本):
此操作将文件从暂存状态移回“已修改”状态。
旧版本语法 (或替代方法):
此命令会将文件从暂存区移出,但不会触碰工作区的文件内容。
撤销对文件的修改 (Unmodifying)
如果你对文件进行了修改,但希望彻底丢弃这些本地更改,使其恢复到上次提交(或上次检出)时的状态,可以使用以下命令:
语法 (推荐现代 Git 版本):
警告: 这是一个危险的命令。它会用上次暂存或提交的版本替换该文件,你对该文件的所有本地未保存更改都会丢失。
旧版本语法 (或替代方法):
使用远程仓库 (Working with Remotes)
为了协作,你需要管理远程仓库。远程仓库是你项目托管在网络上的版本。
- 列出远程仓库:
git remote git remote:列出远程仓库的短名称。git remote -v:显示用于读取(fetch)和写入(push)的 URL。
- 添加远程仓库:
git remote add <shortname> <url>添加一个新的远程 Git 仓库,并为其指定一个短名称,以便于引用。
- 从远程仓库抓取数据:
git fetch <remote>该命令查找远程服务器,获取你本地没有的所有数据,并更新你的本地数据库和远程跟踪分支(例如,pb/master)。
- 推送到远程仓库:
git push <remote> <branch>当你准备好分享你的项目时,使用此命令将你的提交推送到上游。如果其他人在你之前推送了更改,你的推送将被拒绝;你必须先抓取(fetch)并整合(merge/rebase)他们的工作。
- 拉取数据:
git pullgit pull是git fetch之后自动执行git merge或git rebase的便捷命令。
- 检查远程仓库:
git remote show <remote>显示关于特定远程仓库的更多信息,包括 URL、远程分支以及配置用于git pull和git push的本地分支。
- Author:CoderWdd
- URL:https://www.wuinsights.top//article/92ba7ba3-0ac8-4591-8baa-55f60ee34553
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts