Git入门指南:掌握git轻轻松松

286 阅读7分钟

为什么要学 Git?

Git 是一个版本控制工具,它能让你在多人合作的项目中轻松管理代码版本,避免数据丢失,还能防止程序员在电脑崩溃后痛哭流涕。想象一下,几亿行代码一起飞翔, Git 能帮你在本地和远程仓库之间游刃有余地切换,简直是开发者的“随身神器”!


Git 常见命令——你最需要掌握的武器

1. git init —— 初始化仓库

创建一个 Git 仓库,就像你开了一家新的文件夹商店,准备放入代码的珍宝。

git init

2. git add —— 添加到暂存区

当你修改了文件,但还没准备好提交时,git add 会把这些文件添加到“暂存区”。就像你准备去买菜,先把菜放进购物车。

git add .

3. git commit -m "" —— 提交到本地仓库

当你终于选好了菜,就可以结账了。git commit 就是你确认菜品的时刻。

git commit -m "Add new feature: user login"

4. git push origin main —— 推送到远程仓库

提交完代码后,你需要把这些成果传到远程仓库,供团队分享。

git push origin main

5. git pull —— 拉取远程更新

当你看到别人提交了新功能,记得及时拉取更新,避免自己变成代码孤岛。

git pull

6. git branch —— 查看分支

分支就像不同的开发路线,你可以在这里选择自己的开发方向。

git branch

7. git checkout —— 切换分支

选择好了分支后,你就可以在不同的“开发轨道”间切换,像是坐上了不同的高铁。

git checkout feature-xyz

8. git merge —— 合并分支

当一个功能开发完成,可以合并到主分支。别担心,Git 会帮你处理好合并的事情。

、git merge feature-xyz

高级技巧——Git 的秘密武器

1. git help —— Git 内置文档

Git 是个大宝库,git help 可以帮助你快速找到任何命令的使用说明。

git help add

如果想查看所有命令,git help -a 就能一览无遗。

2. git config —— 配置个人信息

Git 记录了每个代码的“责任人”,这就好比老板看谁写了哪个代码片段。你可以配置自己的名字和邮箱,保证工作无缝对接。

bashCopy Code
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

Git 仓库是怎么工作的?

Git 仓库其实就是一位忠实的摄影师,时刻为你的代码拍照(版本)。当你修改了代码,Git 会帮你记录每一个版本。每个提交(commit)都会在 .git 目录里保存一个快照。换句话说,Git 是你代码的“时间机器”,随时可以回到过去,重现任何一个版本。


Git 的“暂存区”——回头可修改的“后悔药”

暂存区是一个非常有用的地方,允许你先把文件放在这里,然后多次修改再提交。当你一次性提交所有修改时,Git 会更好地组织这些更改。

比如,你可能在开发一个功能时,一开始只改了 UI,后来又改了逻辑。你可以先将 UI 部分添加到暂存区,等逻辑部分改好后再一并提交。

git add ui/
git add logic/
git commit -m "完成 UI 和逻辑功能"

代码提交的艺术

Git 提交就像艺术创作一样,不是随便涂抹。每个 commit 都应该围绕着某个开发任务。为了团队的高效协作,一般一个上午的开发任务,提交次数大概是 2-5 次。每次提交时,要写清楚说明,给后人留个标记。这也是git add出现的意义之一。能够一次性提交完整的开发任务,保证了提交的原子性。

git commit -m "修复 bug: 登录失败"

Git 文件的状态——文件的生命周期与状态管理

Git 文件的状态就像你在开发中的“行程单”,记录了每个文件从创作到提交的全过程。不同的状态让你知道文件当前的“健康状况”,是否已经准备好被提交,是否还在开发中,或者是否被遗忘在某个分支里。

Git 文件的常见状态

Git 文件状态分为 四种,分别是:未追踪(Untracked)已修改(Modified)已暂存(Staged)已提交(Committed)

1. 未追踪(Untracked)

就像一个新来不久的学生,Git 对它一无所知。它是新创建的文件,还没有被 Git 纳入版本控制的管理范围。

  • 状态:Untracked
  • 解决方法:通过 git add 将它加入到暂存区
git add newfile.txt
2. 已修改(Modified)

这就像你在学校里完成了一篇作文,修改了内容,但还没有交给老师批阅。这个文件已经被修改,但尚未被提交。

  • 状态:Modified
  • 解决方法:你需要将修改过的文件添加到暂存区,准备提交。
git add modifiedfile.txt
3. 已暂存(Staged)

文件已经被你“上交”给 Git 了,放进了暂存区。这意味着你已经告诉 Git,这些修改准备好提交了。此时,文件的状态是 Staged,它即将成为新的一次提交内容。

  • 状态:Staged
  • 解决方法:通过 git commit 提交文件到本地仓库。
git commit -m "更新用户登录界面样式"
4. 已提交(Committed)

一切完成,文件已经被提交到本地 Git 仓库,就像你完成了作业交给了老师。此时,它处于 Committed 状态。

  • 状态:Committed
  • 解决方法:通过 git push 将提交推送到远程仓库,与团队分享成果。
git push origin main

Git 文件状态的流转

从文件的创建到提交,它们会经历多个状态的转变。让我们看看 Git 文件的“生长路线”:

  1. 新建文件:刚开始它是 Untracked(未追踪),Git 不知道它的存在。
  2. 添加到暂存区:你决定让 Git 管理它,使用 git add 命令,它就会从 Untracked 变成 Staged(已暂存)。
  3. 修改文件:你对文件进行了修改,它的状态会变成 Modified(已修改)。这时候,它还没有被 Git 提交过。
  4. 提交到本地仓库:你使用 git commit 提交文件,它变成 Committed(已提交),这意味着你已经完成了这次工作。
  5. 推送到远程仓库:通过 git push,你把这些成果共享给其他开发者。

如何查看文件状态?

Git 提供了一个很实用的命令 git status,用来查看当前工作目录中文件的状态。你可以在命令行中输入:

git status

这会列出所有文件的当前状态,让你一目了然。例如:

On branch main
Your branch is up to date with 'origin/main'.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
        new file:   newfile.txt
        modified:   modifiedfile.txt

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
        modified:   oldfile.txt

在上面的输出中,new file 表示新添加的文件,modified 表示已修改但还未暂存的文件。


追踪与不追踪文件的策略

当你在项目中处理文件时,有时你可能不想 Git 跟踪某些文件。比如配置文件、临时文件或者日志文件。你可以通过 .gitignore 文件告诉 Git 忽略某些文件或目录。这样,这些文件就永远不会进入 Git 的“视野”。

例如,你可以在 .gitignore 中加入:

*.log
*.tmp
node_modules/

这样,所有 .log.tmp 文件,以及 node_modules/ 目录都会被 Git 忽略。


常见文件状态转换的技巧

  • 取消暂存:如果你暂时不想提交某个文件,可以使用 git reset 将它从暂存区移除,保持文件的修改状态。
git reset HEAD modifiedfile.txt
  • 撤销修改:如果你决定放弃修改,回到上一次提交的状态,可以使用 git checkout 来撤销修改。
git checkout -- modifiedfile.txt
  • 恢复已删除文件:如果不小心删除了文件,但还没提交,可以通过 git checkout 恢复删除的文件。
git checkout -- deletedfile.txt