跳至主要内容

Git Init:如何初始化并设置 Git 仓库

学习如何使用 git init 设置 Git 仓库、连接远程、配置设置,并排查常见问题——面向初学者的一站式指南。
· 15分钟 阅读

使用 AI 探索

是否曾误删文件,或不小心覆盖了代码却无法找回?没有版本控制,这类错误可能是灾难性的。此时 git init 就派上用场了——它将您的项目文件夹转换为一个 Git 仓库,确保每一次更改都可追踪、可恢复。 

在本教程中,我将向您展示如何设置 Git,分享我的一些实践经验,并帮助您从一开始就建立稳健的工作流程。

什么是 Git Init?

git init 命令是您开启版本控制之旅的起点。运行它时,Git 会在项目目录中创建一个隐藏的 .git 文件夹,用于存储配置信息、提交历史,以及跟踪更改所需的全部元数据。 

每次修改都会被记录,您就可以自信地进行分支、合并与协作——因为项目的完整历史始终只需一条命令即可查看。

Git 初始化过程

图片由作者提供

如何使用 Git Init

在深入高级主题之前,先掌握 git init 的实际用法至关重要。

git init 的基本用法

按以下步骤从零创建一个新的 Git 仓库:  

  • 打开终端:启动您偏好的命令行界面。
  • 切换到项目目录:
cd /path/to/your/project

这会把您当前的文件夹切换为想要跟踪的目录。

  • 初始化仓库: 
git init

执行该命令后,会创建一个隐藏的 .git 文件夹。该文件夹保存 Git 的全部跟踪信息。

  • 验证仓库状态:
git status

此时,Git 已设置完成,但尚未跟踪任何文件。

为现有项目初始化仓库

对于尚未纳入版本控制的项目,您可以按以下步骤初始化 Git 并开始跟踪更改:

  • 切换到项目目录:
cd /path/to/your/project
  • 将项目转换为 Git 仓库:
git init

如前所述,上述命令会创建启用 Git 跟踪的隐藏 .git 文件夹。

  • 暂存文件: 由于 git init 不会自动跟踪文件,请使用以下命令添加:
git add .
  • 提交文件: 运行以下命令保存初始快照:  
git commit -m "Initial commit"

此过程将一个未托管的项目转换为拥有完整版本历史的项目——可随时开展新开发与协作。

配置 Git(如有需要)

如果遇到“Author Identity Unknown(作者身份未知)”错误,说明 Git 不知道您是谁。为解决此问题,请配置您的用户身份:

  • 设置 Git 用户信息: 
git config --global user.email "[email protected]"
git config --global user.name "Your Name"

使用 --global 会将这些设置应用于您机器上的所有仓库。省略它则只会为当前仓库设置身份。

  • 验证配置:  
git config --global user.email
git config --global user.name
  • 重试提交:  
git commit -m "First Commit"

我刚开始使用 Git 时也遇到过这个错误——设置身份后问题就解决了。

在使用 git add . 暂存文件并通过 git commit -m "first commit" 提交后,PowerShell 中首次 Git 提交成功。

初始 Git 提交已在 PowerShell 中成功执行。

连接到远程仓库

在本地初始化 Git 仓库后,您很可能希望通过连接到远程仓库(如 GitHub、GitLab、Bitbucket)来备份或与他人协作。

  • 添加远程仓库:要将本地仓库关联到远程,使用:
git remote add origin <repository-url>

将 <repository-url> 替换为远程仓库的 URL。origin 是远程仓库的默认别名,您也可以使用其他名称。

  • 您可以通过以下命令验证连接:
git remote -v
  • 将更改推送到远程仓库:
# Push the first commit and track the remote branch
git push -u origin $(git branch --show-current)  # Works for 'main' or 'master' 

上述命令会推送当前分支,并将其设置为跟踪对应的远程分支。

如果您使用的 Git 旧版本不支持 $(git branch --show-current),请使用:

git push -u origin main  # Or 'master' depending on your default branch  

在项目推进中,与团队协作时您需要合并不同分支上的更改。通过这篇 Git 合并教程学习如何高效处理合并。

身份验证与访问

如果要推送到 GitHub、GitLab 或 Bitbucket,您可能需要进行身份验证。根据您的设置,您可以:

  • 使用 SSH 密钥 替代 HTTPS 认证(出于安全考虑推荐):
git remote set-url origin [email protected]:your-username/your-repo.git
  • 在使用 HTTPS 时,使用 个人访问令牌(PAT) 替代密码。对于 GitHub,将密码替换为令牌:
git push https://[email protected]/your-repo.git

连接到远程仓库对我来说是个转折点——这让我确信本地工作已安全备份、随时可协作。并且,只要知道即使本地机器故障,历史也会被完整保留,我对版本控制更有信心。

Git Init 的高级选项

如果您希望定制 Git 设置,高级选项可提供更多灵活性。

初始化裸仓库

如果您要搭建一个 Git 服务器,开发者只会推送更改而不会直接编辑文件,则需要使用裸仓库。裸仓库不包含工作目录,只含有版本控制数据。它通常用于远程仓库:

git init --bare <repository-name>

裸仓库常用于 GitOps 工作流,通过 Git 管理基础设施与应用部署。如果您想了解 GitOps 如何实现软件交付的自动化与精简,请查看这篇 GitOps 指南。

使用特定配置进行初始化

如果您从一开始就需要自定义的 Git hooks 或配置文件,可以使用自定义模板初始化:

git init --template=<template-directory>

我曾使用自定义模板自动加载必要的 hooks,大大简化了我们团队的部署流程。

使用 Git Init 的最佳实践

从一开始就做好 Git 规划,能为您后续节省时间并避免麻烦。

组织好项目结构

在运行 git init 之前,请将文件按逻辑结构进行整理——将代码、文档与资源分别归类。 

我接手过一个项目,多个子项目的文件混在一起,导致频繁的合并冲突与混乱。通过将内容重组到清晰的文件夹中、重新初始化仓库并配置合适的 .gitignore,工作流得到了显著改善。

尽早添加 .gitignore 文件

在初始化仓库后立即创建 .gitignore 文件,防止不必要的文件被跟踪:

touch .gitignore

然后,编辑它以包含如下规则:

# Ignore dependency folders and log files
node_modules/
*.log
.DS_Store  # macOS system file
Thumbs.db  # Windows system file

此步骤帮助我避免了臃肿的提交历史以及潜在的后续冲突。

如需了解配置 .gitignore 的详细指南,请查看这篇 gitignore 教程。

频繁提交

进行小而频繁的提交,并配以清晰的消息,有助于构建详细的项目历史,也便于调试与协作。

排查常见的 Git Init 问题

即便计划周详,也难免出现问题。以下是一些常见问题及其解决方法。

不小心在错误目录中初始化

问题: 您在错误的文件夹中运行了 git init,现在出现了一个不需要的 Git 仓库。

解决方案:  

  • 移除该 Git 仓库:
rm -rf .git

> 警告: 这将删除该仓库的全部版本历史。运行此命令前,请务必确认您位于正确的文件夹!

随后,切换到正确的目录并再次运行 git init。 

我也犯过几次这个错误,因此请务必在操作前再次确认当前工作目录。

处理未跟踪文件

问题: 运行 git init 后,Git 没有跟踪您的文件。执行 git status 显示:

No commits yet  
Untracked files:
  (use "git add <file>..." to include in what will be committed)

解决方案: 

  • 检查这些文件是否确实未被跟踪:
git status

如果文件出现在“Untracked files”下,说明 Git 能看到它们,但尚未开始跟踪。

  • 然后,使用以下命令暂存所需文件:
git add <file-name>
  • 提交文件:
git commit -m "Initial commit"

定期检查状态可确保不会遗漏重要内容。

如果 git status 没有显示任何文件,请检查项目中是否存在 .gitignore 文件,可能它排除了重要文件。

结语

掌握 git init 是构建可靠版本控制体系的关键第一步,它能赋能协作与高效的项目管理。请按照本指南——从初始化与组织仓库,到排查常见问题——搭建顺畅高效的工作流。

从小处开始——使用 git init 初始化一个测试项目,并练习暂存、提交与推送更改。越早掌握 Git 基础,您的工作流就越高效!如果您还想进一步提升 Git 技能,请查看以下 DataCamp 课程:

  • Intermediate Git – 通过高级分支、合并与冲突解决技巧提升技能。  
  • GitHub Foundations – 学习如何将 Git 与 GitHub 无缝集成以开展协作项目。

祝编码顺利——愿您用 Git 构建可靠且富有创新的项目!

FAQs

如果我在错误的文件夹里运行了 git init,该如何撤销?

通过运行以下命令移除隐藏的 .git 文件夹:rm -rf .git(在类 Unix 系统上),或在 Windows 上手动删除。然后,切换到正确目录并重新运行 git init。

git init 和 git clone 有什么区别?

git init 会创建一个新的空仓库(或为现有项目添加版本控制),而 git clone 则会复制一个现有的远程仓库及其全部历史。

如何检查某个目录是否已是 Git 仓库?

在该目录中打开终端并运行:git rev-parse --is-inside-work-tree

如果返回“true”,则表示该目录已在 Git 版本控制之下。

为什么 .git 文件夹是隐藏的,如何查看?

Git 将 .git 文件夹设为隐藏,以保护项目的版本历史。要查看它,请在文件管理器中启用显示隐藏文件,或运行:  

ls -a  # on Mac/Linux
dir /A:H  # on Windows
使用 git init 之后应避免哪些常见错误?

常见陷阱包括:没有添加合适的 .gitignore、跳过 git add 的暂存步骤,以及在没有清晰信息的情况下提交。每一步操作前都请使用 git status 验证仓库状态。

如何在现有仓库的子目录中初始化 Git?

如果您需要在一个 Git 仓库内单独跟踪某个子项目,请使用 Git 子模块,而不是在子目录中运行 git init。

git submodule add <repository-url> subdirectory-name

这样可以让该子目录单独管理,同时保持与父仓库的关联。

Khalid Abdelaty

作者

Khalid Abdelaty

我是一名数据工程师兼社区建设者,专注于数据管道、云端与 AI 工具链,同时为 DataCamp 和新兴开发者撰写实用且高影响力的教程。

主题