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

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

状态简述


  • git status 命令的输出十分详细,但其用语有些繁琐
  • git status -sgit status --short ,输出结果更加简洁


git status -s
 M markers.py
 M test.py
D  test_func01.py
D  test_login.py
?? text.txt


忽略文件


https://www.cnblogs.com/poloyy/p/12342073.html

 

查看已暂存和未暂存的修改


修改 README 文件后暂存,然后编辑 CONTRIBUTING.md 文件后先不暂存, 运行 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)
    modified:   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


初次使用 git diff

要查看尚未暂存的文件更新了哪些部分,不加参数直接输入 git diff

$ git diff
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 8ebb991..643e24f 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -65,7 +65,8 @@ branch directly, things can get messy.
 Please include a nice description of your changes when you submit your PR;
 if we have to read the whole diff to figure out why you're contributing
 in the first place, you're less likely to get feedback and have your change
-merged in.
+merged in. Also, split your changes into comprehensive chunks if your patch is
+longer than a dozen lines.
 If you are starting to work on a particular area, feel free to submit a PR
 that highlights your work in progress (and note in the PR title that it's


实际栗子


image.png


git diff 的作用

  • 比较的是当前文件和暂存区快照之间的差异,也就是修改之后还没有暂存起来的变化内容
  • 若要查看已暂存且要添加到下次提交里的内容,可以用 git diff --staged 命令
  • 会比较已暂存文件与最后一次提交的文件差异


$ git diff --staged
diff --git a/README b/README
new file mode 100644
index 0000000..03902a1
--- /dev/null
+++ b/README
@@ -0,0 +1 @@
+My Project


git diff

git diff 本身只显示尚未暂存的改动,而不是自上次提交以来所做的所有改动,所以有时候一下子暂存了所有更新过的文件,运行 git diff 后却什么也没有

像之前说的,暂存 CONTRIBUTING.md 后再编辑,可以使用 git status 查看已被暂存的修改或未被暂存的修改。 如果我们的环境(终端输出)看起来如下:

$ git add CONTRIBUTING.md
$ echo '# test line' >> 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)
    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


现在运行 git diff 看暂存前后的变化:

$ git diff
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 643e24f..87f08c8 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -119,3 +119,4 @@ at the
 ## Starter Projects
 See our [projects list](https://github.com/libgit2/libgit2/blob/development/PROJECTS.md).
+# test line


然后用 git diff --cached 查看已经暂存起来的变化( --staged--cached 是同义词):

$ git diff --cached
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 8ebb991..643e24f 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -65,7 +65,8 @@ branch directly, things can get messy.
 Please include a nice description of your changes when you submit your PR;
 if we have to read the whole diff to figure out why you're contributing
 in the first place, you're less likely to get feedback and have your change
-merged in.
+merged in. Also, split your changes into comprehensive chunks if your patch is
+longer than a dozen lines.
 If you are starting to work on a particular area, feel free to submit a PR
 that highlights your work in progress (and note in the PR title that it's


实际栗子


image.png


提交更新


  • 现在的暂存区已经准备就绪,可以提交了
  • 在此之前,请务必确认还有什么已修改或新建的文件还没有 git add 过, 否则提交的时候不会记录这些尚未暂存的变化
  • 这些已修改但未暂存的文件只会保留在本地磁盘
  • 所以,每次准备提交前,先用 git status 看下,你所需要的文件是不是都已暂存起来了, 然后再运行提交命令 git commit

git commit -m "test"

image.png


可以获取到的内容

  • commit 之后 git status 可以看到本地是干净的
  • 提交后会显示当前是在哪个分支(master)提交的
  • 本次提交的完整 SHA-1 校验和是什么(9a8c6b3
  • 以及在本次提交中,有多少文件修订过,多少行添加和删改过

 

重点

  • 提交时(git commit)记录的是放在暂存区域的快照
  • 每一次运行提交操作,都是对项目作一次快照,以后可以回到指定快照版本,或者进行比较

 

跳过使用暂存区域


  • Git 提供了一个跳过使用暂存区域的方式
  • git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤


image.png

-a 选项使本次提交包含了所有修改过的文件,但是要小心,有时这个选项会将不需要的文件添加到提交中

 

移除文件


两种情况

  • 直接删除文件(从本地删除):-f 参数
  • 只是将文件从 Git 的暂存区移除,并不会删除本地文件:--cached

直接看栗子

image.png


已跟踪的文件(出现在暂存区)的文件被执行 git rm --cached 命令后,它会被移出暂存区,重新变成一个未跟踪的文件

 

移动文件


在 Git 中对文件改名

$ git mv file_from file_to

 

查看状态信息,也会看到关于重命名操作的说明

image.png

文件会自动提交到暂存区,且不需要手动执行 git add

 

其实,运行 git mv 就相当于运行了下面三条命令

$ mv README.md README
$ git rm README.md
$ git add README
相关文章
|
28天前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
45 2
|
1月前
|
存储 开发工具 git
git工具使用教程全讲解
本文介绍了版本控制的概念及其重要性,详细对比了多种版本控制工具,如VSS、CVS、SVN和Git,重点讲解了Git的基本使用方法、工作原理及与SVN的区别。此外,文章还介绍了GitHub、GitLab和Gitee等流行的代码托管平台,以及如何在这些平台上注册账号、创建和管理仓库。最后,文章还提供了如何在IntelliJ IDEA中配置和使用Git的具体步骤。
48 1
|
2月前
|
Shell 开发工具 git
git学习三:git使用:删除仓库,删除仓库内文件
通过GitHub的设置页面删除仓库,以及如何使用Git命令行删除仓库中的文件或文件夹。
174 1
git学习三:git使用:删除仓库,删除仓库内文件
|
2月前
|
开发工具 git 索引
git上面中新建gitignore文件,并且去除已经在仓库版本管理中的文件夹
git上面中新建gitignore文件,并且去除已经在仓库版本管理中的文件夹
83 4
|
2月前
|
存储 开发工具 git
Git 远程仓库地址管理:添加、修改和验证
Git 远程仓库地址管理:添加、修改和验证
91 4
|
2月前
|
编译器 开发工具 数据安全/隐私保护
Git——多人协作/版本控制,在一个gitee仓库下开发(Gitee版教程)手把手教学,包好用的!
本文提供了一个关于如何在Gitee上进行多人协作和版本控制的详细教程,包括新建和初始化仓库、克隆仓库、邀请好友共同管理仓库以及注意事项,旨在帮助用户顺利进行代码协作开发。
306 0
Git——多人协作/版本控制,在一个gitee仓库下开发(Gitee版教程)手把手教学,包好用的!
|
3月前
|
开发工具 git
IDEA更改远程git仓库地址
【9月更文挑战第27天】本文介绍了两种在IntelliJ IDEA中更改远程Git仓库地址的方法:一是通过图形界面,在VCS设置中直接修改;二是通过IDEA内置的命令行工具使用`git`命令进行更改。具体步骤包括从版本控制菜单进入项目设置、修改远程仓库URL,以及使用`git remote set-url`命令更新仓库地址,并验证修改结果。这些方法适用于项目迁移或更换仓库地址的情况。
646 6
|
2月前
|
网络协议 网络安全 开发工具
【Git快速入门】Git代码管理手册与协同开发之远程仓库(四)
【Git快速入门】Git代码管理手册与协同开发之远程仓库(四)
|
2月前
|
前端开发 开发工具 git
搭建Registry&Harbor私有仓库、Dockerfile(八)+前端一些好学好用的代码规范-git hook+husky + commitlint
搭建Registry&Harbor私有仓库、Dockerfile(八)+前端一些好学好用的代码规范-git hook+husky + commitlint
21 0
|
3月前
|
网络安全 开发工具 git
6-23|自建仓库如何免密执行git pull
6-23|自建仓库如何免密执行git pull