Git的基本概念
Git是一种分布式版本控制系统,这意味着每个开发者的计算机上都有一个完整的代码仓库副本。这样的设计不仅提高了数据的安全性,也极大地提升了团队协作的效率。
基础命令与操作
-
初始化仓库:
git init
命令用于创建一个新的Git仓库。执行该命令后,会在当前目录下生成一个名为.git
的隐藏目录,里面包含了所有版本控制所需的信息。Git中存储的不是文件,而是文件的版本。 -
添加文件到仓库:将文件加入Git仓库通常分为三个步骤:
git add .
或git add <file>
:将 所有文件 或 指定的文件 添加到暂存区git commit -m "commit message"
:将暂存区的内容提交到本地仓库,并添加注释git push origin main
:将本地仓库的最新提交推送到远程仓库的主分支(通常是main
或master
)
可以多次add多个文件,然后一起commit提交,commit的注释一定要写清楚
通过下面的图片,能够更好的理解add,commit,push,工作区,暂存区,仓库之间的关系
-
分支管理:
git branch
:列出当前所有分支git checkout <branch>
或git switch <branch>
:创建并切换到指定分支git merge <branch>
:将指定分支的更改合并到当前分支。
-
设置用户名和邮件:
git config --global user.name "your name
:设置用户名git config --global user.email "your email
:设置邮件
-
查看当前状态:
git status
:查看当前仓库状态
下面给出一个例子来分析一下
On branch main //在main分支上
Your branch is up to date with 'origin/main'. //表示当前分支与远程仓库的 `main` 分支是同步的
Changes to be committed: //已添加到暂存区(add),但未提交(commit)
(use "git restore --staged <file>..." to unstage) //提示
modified: README.md
Changes not staged for commit: //已修改但未添加到暂存区(add)
(use "git add <file>..." to update what will be committed) //提示
(use "git restore <file>..." to discard changes in working directory)
modified: index.html
Untracked files: //仓库中未被跟踪的新文件
(use "git add <file>..." to include in what will be committed)
newfile.txt
- 查看代码提交记录:
git log
git log --oneline
单行显示
git的官方文档
Git 提供了一个非常强大的内置文档系统,无论你是 Git 的初学者还是资深用户,定期查阅和学习这些文档都是非常有帮助的。
git help <command>
:获得特定命令的详细说明,git help -a
:列出所有可用的Git命令列表。git help -g
: 列出所有 Git 的指南主题。j
:向上翻页k
:向下翻页q
:退出
代码仓库
文件夹、开发目录、代码仓库之间的关系
graph TD
文件夹 -->开发目录-->代码仓库
-
文件夹 -> 开发目录:
- 开发目录本质上是一个文件夹,但它具有特定的用途和结构,用于存放项目的源代码和其他相关文件。
- 开发目录是你进行日常开发工作的主要场所,你在这里编写代码、调试和测试。
-
开发目录 -> 代码仓库:
- 代码仓库通常位于开发目录的根目录下,通过
git init
命令初始化。 - 代码仓库记录了开发目录中文件的所有版本历史,通过
git add
、git commit
和git push
等命令,你可以将开发目录中的更改同步到代码仓库。 - 代码仓库不仅保存了当前的文件状态,还记录了每一次提交的历史信息,便于回溯和管理。
- 代码仓库通常位于开发目录的根目录下,通过
代码仓库是版本控制系统(如 Git)中用于存储项目历史记录的地方。它不仅保存了当前的文件状态,还记录了每一次提交的历史信息,包括作者、时间戳、提交信息等。代码仓库可以是本地的,也可以是远程的。这种机制为项目提供了一种“时间旅行”的能力——无论何时何地,我们都能通过git reset
回退到任意一个版本。
结语
Git 不仅仅是一个工具,它更是一种思维方式,帮助你在软件开发过程中保持代码的整洁和可追溯性。通过合理使用分支、规范提交信息、定期同步代码等最佳实践,你可以在复杂的项目中保持清晰的开发流程,减少错误和冲突。