痞子衡嵌入式:第一本Git命令教程(3)- 编辑(status/add/rm/mv)



  今天是Git系列课程第三课,前两课我们都是在做Git仓库准备工作,今天痞子衡要讲的是Git本地提交前的准备工作。

  本地有了仓库,我们便可以在仓库所在目录下做文件增删改操作,这些操作默认都发生在Git工作区内,Git并不会主动管理。如果希望Git能够管理这些变动,你需要主动通知Git。共有3种通知Git的命令,痞子衡为大家一一讲解。

1.查看Git空间文件改动状态git status

  前面讲过Git空间内文件改动有4种状态,除了Unmodified状态的文件之外,其他文件改动状态都可以通过git status来查看。让我们开始在工作区创建3个文件:main.c、test.c、dummy.c
  dummy.c(路径:/gittest/app/dummy.c)为空白文件。
  test.c(路径:/gittest/app/test.c)文件内容如下:

#include <stdio.h>
#include <stdlib.h>
void test(void)
{
    printf("this is test\n");
}

  main.c(路径:/gittest/main.c)文件内容如下:

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    printf("hello world\n");
    return 0;
}

  新建了3个文件,让我们来看看git记录的状态,从下面结果可知,新增的3个文件在Git空间里都属于Untracked文件,存放在工作区内。

[email protected] MINGW64 /d/my_project/gittest (master)
$ 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)

        app/
        main.c

2.将工作区文件改动添加到暂存区git add

  git add是第一种通知Git命令,这个命令用于告诉Git我们新增了文件改动,被git add命令操作过的文件(改动)便会处于Git暂存区。

2.1添加单文件改动git add [file path]

  前面3个文件已经创建好,让我们开始用git add将它们一一添加到暂存区:

// 将main.c,test.c, dummy.c分别添加到暂存区
[email protected] MINGW64 /d/my_project/gittest (master)
$ git add main.c

[email protected] MINGW64 /d/my_project/gittest (master)
$ git add app/test.c

[email protected] MINGW64 /d/my_project/gittest (master)
$ git add app/dummy.c

// 查看此时的文件状态,3个文件都已在暂存区中了
[email protected] MINGW64 /d/my_project/gittest (master)
$ 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:   app/dummy.c
        new file:   app/test.c
        new file:   main.c
1.2添加文件夹内全部改动git add -A [folder path]

  有没有觉得git add [filepath]一次只能添加一个文件不够高效?别急,你还可以按文件夹来提交。这时我们再做一些改动,将dummy.c文件删除,将test.c文件里的内容全部删除,再新增一个名叫duty.c的文件。

[email protected] MINGW64 /d/my_project/gittest (master)
$ 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:   app/dummy.c
        new file:   app/test.c
        new file:   main.c

Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        deleted:    app/dummy.c
        modified:   app/test.c

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        app/duty.c

  让我们试试git add -A [folderpath],执行完这个命令后,我们可以看到app/文件夹下的所有类型的文件改动(新增、修改、删除)被一次性地存储到了暂存区,这下是不是效率高了很多。有兴趣的朋友还可以继续研究git add .(不包括删除操作)和git add -u(不包括新增操作)两个命令,实际上git add -A是这两个命令的并集。

[email protected] MINGW64 /d/my_project/gittest (master)
$ git add -A app/

[email protected] MINGW64 /d/my_project/gittest (master)
$ 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:   app/duty.c
        new file:   app/test.c
        new file:   main.c

3.将暂存区文件改动退回git rm

  git rm是第二种通知Git命令,这个命令用于告诉Git我们想把之前用git add添加的文件改动从Git暂存区里拿出去,不需要Git记录了。拿出去有两种拿法,一种是从暂存区退回到工作区,另一种是直接丢弃文件改动。让我们试着将test.c退回到工作区,duty.c直接丢弃。

3.1退回文件改动到工作区git rm --cache [file path]

[email protected] MINGW64 /d/my_project/gittest (master)
$ git rm --cache app/test.c

rm 'app/test.c'

[email protected] MINGW64 /d/my_project/gittest (master)
$ 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:   app/duty.c
        new file:   main.c

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        app/test.c
3.2丢弃文件改动git rm -f [file path]

[email protected] MINGW64 /d/my_project/gittest (master)
$ git rm -f app/duty.c

rm 'app/duty.c'

[email protected] MINGW64 /d/my_project/gittest (master)
$ 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:   main.c

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        app/

4.将暂存区文件移动位置/重命名git mv

  git mv是第三种通知Git命令,这个命令用于告诉Git我们想把之前用git add添加的文件直接在暂存区里重新命名或移动到新位置。让我们试着将main.c重命名为app.c,并移动到app/文件夹下。

4.1文件重命名git mv [src file] [dest file]

[email protected] MINGW64 /d/my_project/gittest (master)
$ git mv main.c app.c

[email protected] MINGW64 /d/my_project/gittest (master)
$ 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:   app.c

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        app/
4.2移动文件位置git mv [src file] [dest dir]

[email protected] MINGW64 /d/my_project/gittest (master)
$ git mv app.c app/

[email protected] MINGW64 /d/my_project/gittest (master)
$ 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:   app/app.c

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        app/test.c

原文地址:https://www.cnblogs.com/henjay724/p/8537277.html

时间: 2024-07-30 14:27:56

痞子衡嵌入式:第一本Git命令教程(3)- 编辑(status/add/rm/mv)的相关文章

痞子衡嵌入式:第一本Git命令教程(4)- 转移(add/rm/mv)

今天是Git系列课程第四课,上一课我们在Git空间里做了一些文件改动并且知道了如何利用Git查看这些变动,今天痞子衡要讲的是将这些变动提交到Git本地仓库前的准备工作. Git仓库目录下的文件改动操作默认都发生在Git工作区内,Git并不会主动管理.如果希望Git能够管理这些变动,你需要主动通知Git.共有3种通知Git的命令(git add/rm/mv),痞子衡为大家一一讲解. 1.将工作区文件改动添加到暂存区git add git add是第一种通知Git命令,这个命令用于告诉Git我们新增

痞子衡嵌入式:第一本Git命令教程(5)- 提交(commit/format-patch/am)

今天是Git系列课程第五课,上一课我们做了Git本地提交前的准备工作,今天痞子衡要讲的是Git本地提交操作. 当我们在仓库工作区下完成了文件增删改操作之后,并且使用git add将文件改动记录在暂存区之后,便可以开始将其提交到Git本地仓库. 1.本地文件改动提交git commit Git空间本地的改动完成之后可以直接提交,有如下三种提交命令选项: 1.1将暂存区内容提交git commit -m ["description"] 暂存区里目前只有app/app.c文件,我们先将其提交

痞子衡嵌入式:史上最强i.MX RT学习资源汇总(持续更新中...)

大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MX RT学习资源. 类别 资源 简介 官方汇总 i.MXRT产品主页 恩智浦官方i.MXRT产品主页,最权威的资料都在这里,参考手册/数据手册,官方EVK板设计文件,各种应用笔记,各种参考设计方案.培训视频.软件SDK开发包,官方IDE/CFG工具,第三方软件支持等应有尽有,如果这上面文档你都能全部仔细看一遍,软件都能下载用起来,不用怀疑,你就是资深专家了. 其中痞子衡特别推荐你把所有应用笔记都看一遍,这些笔记凝结了所有恩智浦

痞子衡嵌入式:测一测i.MXRT1170 Raw NAND启动时间(从POR到进App的Reset_Handler)

大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT1170 Raw NAND启动时间. 关于i.MXRT1170这颗划时代的MCU,痞子衡去年10月在其刚发布的时候,专门写过一篇文章介绍过其特点(详见 <终于可以放开聊一聊i.MXRT1170这颗划时代MCU了>),眼看着其上市日期越来越近了,恩智浦软硬件技术支持团队也正在紧锣密鼓地开发SDK以及参考设计.因为官方首次在i.MXRT1170 EVK板上(Rev.B)放了一片旺宏的Raw NAND芯片,而i.MX

痞子衡嵌入式:飞思卡尔i.MX RT系列微控制器启动篇(3)- Serial Downloader模式(sdphost/mfgtool)

大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的Serial Downloader模式. 在上一篇文章 飞思卡尔i.MX RT系列微控制器启动篇(2)- Boot配置(BOOT Pin, eFUSE) 里痞子衡为大家介绍了i.MXRT Boot的行为配置,其中第一节里讲了Boot有三种行为模式:Serial Downloader.Boot From Fuses.Internal Boot,后两种是核心的加载启动行为模式,而Serial Downl

《痞子衡嵌入式半月刊》 第 2 期

痞子衡嵌入式半月刊: 第 2 期 这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期. 本期刊是开源项目(GitHub: JayHeng/pzh-mcu-bi-weekly),欢迎提交 issue,投稿或推荐你知道的嵌入式那些事儿. 上期回顾 :<痞子衡嵌入式半月刊: 第 1 期> 唠两句 如果你第一时间阅读本期,此时应正是立春与雨水交节之时(2020年02月19日 12:56:53).雨水节气标示着降雨开始.雨量渐增,俗话说"

git 命令 git status add rm commit mv

1.查看 git 仓库文件改动状态 Git 仓库内文件改动有 4 种状态,除了 Unmodified 状态的文件因为并未改动默认没有状态不做显示之外,其他文件改动状态都可以通过 git status 来查看 查看 Git 记录的状态 常用命令, 查看git仓库状态 git status 拿到一个git仓库,进入仓库,第一执行这个命令查看 [[email protected] ~]# cd /data/git_test/ [[email protected]-node1 git_test]# [[

痞子衡嵌入式:极精简的Git命令教程(2)- 连接(remote/clone)

今天是Git系列课程第二课,上一课我们已经学会在本地创建一个空repo,痞子衡今天要讲的是如何将本地仓库与远程建立联系. 1.将本地仓库挂上远程git remote 本地建好了仓库,我们希望能够挂到远程服务器上,方便与其他人共享.目前最流行的远程git服务器当然是github,此时你需要在github上注册账户并在线创建一个仓库,此处我们输入仓库名为gittest 点击"Create repository"之后便弹出如下画面,最重要的是我们可以得到一个远程repo的地址:[email 

痞子衡嵌入式:超级好用的可视化PyQt GUI构建工具(Qt Designer)

大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是PyQt GUI构建工具Qt Designer. 痞子衡开博客至今已有好几年,一直以嵌入式开发相关主题的文章为主线,偶尔穿插一些其他技术或工具的介绍,前段时间因为要做一个跟恩智浦MCU启动相关的上位机工具 NXP-MCUBootUtility,网上搜索对比了几个Python下的GUI框架,最终选择了wxPython这个成熟稳定的GUI库,从而接触到wxFormBuilder这个配套wxPython使用的GUI构建工具.苦于网上关于该