Git 系列教程(5)- 记录每次更新到仓库 (上)

简介: Git 系列教程(5)- 记录每次更新到仓库 (上)

文件状态


你工作目录下的每一个文件只有两种状态:tracked 或 untracked

 

tracked

  • 已跟踪 tracked 的文件是指那些被纳入了版本控制的文件
  • 在上一次快照中有它们的记录,在工作一段时间后, 它们的状态可能是未修改unmodified、已修改modified 或已放入暂存区staged
  • 简单来说,已跟踪 tracked 的文件就是 Git 知道的文件

 

untracked

  • 工作目录中除 tracked 文件外的其它所有文件都属于 untracked 文件
  • 它们既不存在于上次快照的记录中,也没有被放入暂存区
  • 初次 clone 某个仓库的时候,工作目录中的所有文件都属于 tracked 文件,并处于 unmodified
  • 编辑文件后,Git 将它们标记为 modified 文件。 在工作时,你可以选择性地将这些修改过的文件放入暂存区,然后提交所有已暂存的修改

 

文件的状态变化周期

image.png


检查当前文件状态


可以用 git status 命令查看哪些文件处于什么状态。 如果在克隆仓库后立即使用此命令,会看到类似这样的输出:

git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean


可以获取到的内容

  • 所有 tracked 件在上次提交后都未被更改过
  • 当前目录下没有出现任何 untracked 的新文件,否则 Git 会在这里列出来
  • 还显示了当前所在分支,并告诉你这个分支同远程服务器上对应的分支没有偏离,现在,分支名是“master”,这是默认的分支名

 

在项目下创建一个新的 README 文件,使用 git status 命令,将看到一个新的 untracked 文件

echo 'My Project' > README
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Untracked files:
  (use "git add <file>..." to include in what will be committed)
    README
nothing added to commit but untracked files present (use "git add" to track)


可以获取到的内容

  • README 文件出现在 Untracked files 下面
  • untracked 的文件意味着 Git 在之前的快照(提交)中没有这些文件

 

如何跟踪


git add 文件名


# 更新目录下所有文件

git add .

后面会再详细讲这个命令

 

跟踪新文件


使用命令 git add 开始跟踪一个文件。 所以,要跟踪 README 文件,运行:

git add README

 

此时再运行 git status 命令,会看到 README 文件已被跟踪,并处于 staged

git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
    new file:   README


可以获取到的内容

  • 只要在 Changes to be committed 这行下面的,就说明是 staged 状态
  • 如果此时提交,那么该文件在你运行 git add 时的版本将被留存在后续的历史记录中

 

暂存已修改的文件


如果修改了一个名为 CONTRIBUTING.md 的已被 tracked 的文件,然后运行 git status 命令,会看到下面内容

git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
    new file:   README
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
    modified:   CONTRIBUTING.md


可以获取到的内容

  • CONTRIBUTING.md 出现在 Changes not staged for commit 这行下面,说明已跟踪文件的内容发生了变化,但还没有放到暂存区
  • 要暂存这次更新,需要运行 git add 命令

 

再次运行 git add 命令


运行 git add 将“CONTRIBUTING.md”放到暂存区,然后再看看 git status 的输出:


$ git add CONTRIBUTING.md
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
    new file:   README
    modified:   CONTRIBUTING.md


再次修改文件内容


编辑 CONTRIBUTING.md,再运行 git status 看看


$ vim CONTRIBUTING.md
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
    new file:   README
    modified:   CONTRIBUTING.md
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
    modified:   CONTRIBUTING.md


可以获取到的内容

  • CONTRIBUTING.md 文件同时出现在暂存区和非暂存区
  • 实际上 Git 只不过暂存了运行 git add 命令时的版本
  • 如果你现在提交代码,CONTRIBUTING.md 的版本是你最后一次运行 git add 命令时的那个版本,而不是当前版本
  • 所以,运行了 git add 之后又编辑了文件,需要再次 git add 把最新版本暂存


$ git add CONTRIBUTING.md
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
    new file:   README
    modified:   CONTRIBUTING.md


真实的实际操作栗子


微信图片_20220513203253.png

相关文章
|
1月前
|
安全 开发工具 git
git添加远程仓库报错To add an exception for this directory解决方案-优雅草卓伊凡
git添加远程仓库报错To add an exception for this directory解决方案-优雅草卓伊凡
222 5
git添加远程仓库报错To add an exception for this directory解决方案-优雅草卓伊凡
|
3月前
|
开发工具 git 开发者
Git流程控制:远程仓库操作的实用指南
通过遵循这些步骤和策略,你将能够更有效地与远程仓库进行交互,确保代码变更的透明度和项目历史的干净。同时,良好的版本控制习惯可以减少潜在的冲突,并帮助保持代码库的整洁。在日常工作中应用这些实用的Git流程控制技巧将是非常有益的。
159 0
|
6月前
|
网络安全 开发工具 git
Git仓库创建与代码上传指南
本教程介绍了将本地项目推送到远程Git仓库的完整流程,包括初始化本地仓库、添加和提交文件、创建远程仓库、关联远程地址及推送代码。同时,还提供了`.gitignore`配置、分支管理等可选步骤,并针对常见问题(如认证失败、分支不匹配、大文件处理及推送冲突)给出了解决方案。适合初学者快速上手Git版本控制。
|
7月前
|
Shell 开发工具 git
解决git bash报错:在仓库中检测到可疑的所有权
总的来说,解决“在仓库中检测到可疑的所有权”的报错,关键在于理解和调整文件或目录的所有权。只要我们正确地设置了文件或目录的所有权,那么我们就可以避免这种问题,让Git Bash正常工作。
283 22
|
10月前
|
开发工具 git
如何操作github,gitee,gitcode三个git平台建立镜像仓库机制,这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈
如何操作github,gitee,gitcode三个git平台建立镜像仓库机制,这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈
641 69
如何操作github,gitee,gitcode三个git平台建立镜像仓库机制,这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈
|
5月前
|
安全 Shell 开发工具
Windows下使用git配置gitee远程仓库
就在前几天因为一些原因,我的电脑重装了系统,然后再重新配置git的环境的时候就遇到了一些小问题。所以我决定自己写一篇文章,以便以后再配置git时,避免一些错误操作,而导致全网搜方法,找对的文章去找对应的解决方法。下面为了演示方便就拿gitee来演示,不拿GitHub了写文章了。
269 0
|
7月前
|
文字识别 网络协议 开发工具
GitHub封锁?推荐5个国产的Git仓库替代平台
近日,GitHub对中国区IP的部分限制引发了广泛关注。未登录用户被拒,已登录用户功能受限,南北网络环境差异更显“内卷”。为应对这一挑战,本文推荐了多个国产Git平台:Gitee(码云)、GitCode(CSDN旗下)、CODING(腾讯系)、CodeUP(阿里云支持)及微信代码管理工具。这些平台功能全面、稳定性强,是开发者迁移项目的理想选择。通过同步代码、配置CI/CD流水线等简单步骤,可确保项目平稳过渡。此次事件提醒我们,掌握核心技能与支持国产平台同样重要!
4985 11
|
10月前
|
Devops Shell 网络安全
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
473 16
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
|
10月前
|
前端开发 Java 开发工具
Git使用教程-将idea本地Java等文件配置到gitte上【保姆级教程】
本内容详细介绍了使用Git进行版本控制的全过程,涵盖从本地仓库创建到远程仓库配置,以及最终推送代码至远程仓库的步骤。
649 0
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
528 2