git commit

git 文件状态变化周期说明

目录下的文件主要分为两种:已跟踪和未跟踪。

  • 已跟踪:被纳入版本控制管理。在上次快照中有记录,工作一段时间后,状态可能是未更新,已修改或已放入stage。
  • 未跟踪:还没有被纳入版本控制管理。

状态变化说明

文件未跟踪

  1. 新建一个文件a.txt,此时文件处于untracked(未跟踪),处于该状态的文件是无法提交的。
  2. git add a.txt,此时文件变为tracked(已跟踪),此时文件可以提交。
  3. git commit -m “created new file: a.txt”,提交文件。

文件已跟踪

  1. git add a.txt,此时文件进入stage区,此时文件可以提交。
  2. git commit -m “modify file: a.txt”,提交文件。

commit -m 与 commit -am 区别

假设此时a.txt文件内容为hello

若a.txt是已跟踪状态,此时文件内容修改为hello world,再git commit -m提交的不是a.txt最新的内容hello world,而是hello

如果想要提交a.txt最新内容,有两种方式

方式一:

  1. git add a.txt.
  2. git commit -m “message”

方式二:

  1. git commit -am “message”

简单来说,两者的区别在于git add命令。git commit -am可以省略使用git add命令将已跟踪文件放到暂存区的功能

git add命令是个多功能命令,根据目标文件的状态不同,此命令的效果也不同:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等

rm

用法

列出可取消跟踪的文件列表

git rm -r -n –cached 目录/文件

取消跟踪

git rm -r –cached 目录/文件


git add

git add命令把工作目录下面的有修改的文件添加的index(staging)里面去。

git add告诉Git你想在下次commit的时候把什么文件包含进去。

git add没有真正的对仓储有什么大的影响–在commit之前修改没有真正的被记录下来。

用法

git add

把文件的所有修改加入到index(staging)中, 为了下次commit

git add

把文件夹的所有修改加入到index(staging)中, 为了下次commit

git add -p

会出现一个交互式的界面供你一个个的选择哪些文件要添加到commit中, 哪些不要。注意了如果文件是untracked的状态, 他不会出现在这个界面中供你选择。


git add 与 git commit 是git的最基本命令组合

开发一个项目使用git始终是围绕着”modify/stage/commit”这个模式

首先, 在本地工作目录编辑文件,当你准备去保存一个当前项目状态的时候, 使用git add stage修改,接下来你有了一个stage的快照,使用git commit提交项目。

git add和svn add非常不同,svn add是把文件添加到仓储。git add是把文件的修改添加到仓储,这意味着你每次修改文件后需要使用git add,而svn add只需要为每个文件使用一次就行了。

Staging区

staging区是Git一个很独特的特性,你可以把他认为是一个本地工作目录到项目历史中间的一个缓存区。

stage能让你组织相关的change到一个快照,然后再提交到项目的历史里去,而不是将从上一次commit后的所有change都一次提交。这样你可以在commit之前利用add组织好一个主题的change然后再commit。

revert / reset

difference between revert and reset

revert 是将之前的提交反转(新增就删除),然后作为一次新的提交。

reset 是回滚到指定commit-id,该commit-id之后的提交都会删除。

在生产环境一般建议用git revert

参考链接:https://blog.csdn.net/q358543781/article/details/54708736