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

相关文章
|
2月前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之如何将个人账号下的Git仓库转移到企业账号下
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
2月前
|
IDE 网络安全 开发工具
【Azure App Service】Local Git App Service的仓库代码遇见卡住不Clone代码的问题
【Azure App Service】Local Git App Service的仓库代码遇见卡住不Clone代码的问题
【Azure App Service】Local Git App Service的仓库代码遇见卡住不Clone代码的问题
|
5天前
|
开发工具 git
IDEA更改远程git仓库地址
【9月更文挑战第27天】本文介绍了两种在IntelliJ IDEA中更改远程Git仓库地址的方法:一是通过图形界面,在VCS设置中直接修改;二是通过IDEA内置的命令行工具使用`git`命令进行更改。具体步骤包括从版本控制菜单进入项目设置、修改远程仓库URL,以及使用`git remote set-url`命令更新仓库地址,并验证修改结果。这些方法适用于项目迁移或更换仓库地址的情况。
|
7天前
|
Linux 开发工具 git
linux自建仓库git之钩子不生效
linux自建仓库git之钩子不生效
|
7天前
|
Shell 网络安全 开发工具
git与gitee结合使用,提交代码,文件到远程仓库
本文介绍了如何将Git与Gitee结合使用来提交代码文件到远程仓库。内容涵盖了Git的安装和环境变量配置、SSH公钥的生成和配置、在Gitee上创建仓库、设置Git的全局用户信息、初始化本地仓库、添加远程仓库地址、提交文件和推送到远程仓库的步骤。此外,还提供了如何克隆远程仓库到本地的命令。
git与gitee结合使用,提交代码,文件到远程仓库
|
6天前
|
网络安全 开发工具 git
6-23|自建仓库如何免密执行git pull
6-23|自建仓库如何免密执行git pull
|
2月前
|
缓存 开发工具 git
给Git仓库添加.gitignore:清理、删除、排除被Git误添加的临时文件
本文介绍了如何为Git仓库添加`.gitignore`文件来排除不需要跟踪的临时文件,并展示了如何删除已经被提交的临时文件缓存,以清理Git仓库中的不必要文件。
109 0
给Git仓库添加.gitignore:清理、删除、排除被Git误添加的临时文件
|
2月前
|
存储 Java 开发工具
Git 仓库瘦身与 LFS 大文件存储
【8月更文挑战第13天】在软件开发中,Git仓库可能因累积大量数据而变得臃肿。通过删除多余分支和标签、清理无用提交,并利用`git gc`命令,可有效瘦身仓库。此外,使用Git LFS(Large File Storage)管理大文件,不仅能维持仓库精简,还能高效协作。需先安装并初始化LFS,然后跟踪特定格式的大文件。通过标准的`git add`和`git commit`命令即可管理这些文件,LFS会自动处理其存储与传输。这种方式有助于提升仓库性能与可维护性,但需注意可能产生的额外存储成本。
|
2月前
|
缓存 Shell 网络安全
Git Bash⭐二、与仓库建立连接、提交与下拉项目
Git Bash⭐二、与仓库建立连接、提交与下拉项目
|
2月前
|
安全 开发工具 git
coding上创建项目、创建代码仓库、将IDEA中的代码提交到coding上的代码仓库、Git的下载、IDEA上配置git
这篇文章是关于如何在IDEA中配置Git、在Coding.net上创建项目和代码仓库,并将IDEA中的代码提交到远程代码仓库的详细教程,涵盖了Git安装、IDEA配置、项目创建、代码提交等步骤。
coding上创建项目、创建代码仓库、将IDEA中的代码提交到coding上的代码仓库、Git的下载、IDEA上配置git