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

曾经不小心删除过文件或者无法恢复地覆盖了代码吗?没有版本控制,这样的错误可能是灾难性的。这就是git init发挥作用的地方——它将您的项目文件夹转变为Git仓库,确保每个更改都可以被追踪和恢复。

在本教程中,我将向您展示如何设置Git,分享我旅程中的个人技巧,并帮助您从一开始就建立一个强大的工作流程。

Git Init是什么?

git init命令启动您的版本控制之旅。运行此命令时,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(如有必要)

如果您遇到“作者身份未知”的错误,这意味着 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 时遇到了这个错误—设置我的身份解决了它。

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

连接到远程存储库

一旦您在本地初始化了一个 Git 存储库,您可能希望通过连接到远程存储库(例如 GitHub、GitLab、Bitbucket)来备份或与他人合作。

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

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

  • 您可以使用以下命令验证连接:
git remote -v
  • 将您的更改推送到远程仓库:
# 推送第一个提交并跟踪远程分支 git push -u origin $(git branch --show-current) # 适用于 'main' 或 'master'

上述命令会推送当前分支并设置为跟踪远程分支。

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

git push -u origin main # 或者根据您的默认分支为 'master'

在继续项目工作时,当与团队合作时,您需要合并来自不同分支的更改。通过这个 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钩子或配置文件,请使用自定义模板进行初始化:

git init --template=<template-directory>

我曾经使用过自定义模板自动加载必要的钩子,从而简化了我们团队的部署流程。

使用Git Init的最佳实践

从一开始就正确使用Git可以节省您后续的时间和麻烦。

组织您的项目结构

在运行git init之前,将文件组织成一个逻辑的文件夹结构——分离代码、文档和资源。

在我接手的一个项目中,来自多个子项目的文件混在一起,导致合并冲突和混乱。通过将所有内容重新组织到明确定义的文件夹中,重新初始化存储库,并设置适当的.gitignore,工作流程得到了显著改善。

早期添加.gitignore文件

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

touch .gitignore

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

# 忽略依赖文件夹和日志文件 node_modules/ *.log .DS_Store # macOS系统文件 Thumbs.db # Windows系统文件

这一步让我免受冗长的提交历史和潜在的未来冲突之苦。

要详细了解如何配置.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

如果您的文件出现在未跟踪文件下,Git看到了它们但尚未跟踪它们。

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

定期的状态检查确保不会忽视任何重要事项。

如果git status显示没有文件,请检查您的项目是否包含可能正在排除重要文件的.gitignore文件。

结论

精通git init是构建可靠版本控制系统的关键第一步,使协作和高效项目管理成为可能。遵循本指南——从初始化和组织您的存储库到解决常见问题——建立一个流畅、高效的工作流程。

从小处开始——使用git init初始化一个测试项目,并尝试暂存、提交和推送更改。您越早掌握Git的基础知识,您的工作流程就会变得更加高效!如果您想进一步深化您的Git技能,可以查看这些DataCamp课程:

  • 中级 Git – 通过高级分支、合并和冲突解决技巧提升您的技能。
  • GitHub 基础 – 学习如何无缝集成 Git 和 GitHub,用于协作项目。

愉快编码——祝愿您使用 Git 构建可靠、创新的项目!

Source:
https://www.datacamp.com/tutorial/git-init