Git从入门到熟练第六讲 提交部分修改

前言

  在上一讲中,我们学习了在Git中对文件内容的修改以及提交修改。这一讲我们学习在暂存区(staging area)更细节的操作-删除文件(git rm)、文件重命名(git mv)、添加目录等操作。我们还会学习如何手动选择修改的部分提交而不是全部提交(git add -p),并且删除暂存区的所有修改(git reset),这个也是git add的撤回操作。

目录

6.1 从Git仓库中删除文件

6.2 Git文件重命名

6.3 在git仓库里添加目录

6.4 添加部分修改


6.1 从Git仓库中删除文件

  之前我们都是学习了创建文件,将文件添加到Git仓库的操作 。这里我们学习如何将这些文件删除。上一讲结束后,我们的工作目录下有5个文件,因为Git删除文件有两种方式,我们使用两种方式删除a、b文件。

  第一种删除方式使用命令

rm a       //在工作目录下删除a文件
git rm a   //将删除a文件操作提交暂存区

  这里有一件很不符合逻辑的事情不知道大家发现没有。我们在删除的操作时,先删除文件之后再告知暂存区。按道理来说一般是先告知再操作不是吗?

  原因就是,暂存区不是一个管理员的角色,而是一个预备区的角色,它的作用就是存储准备提交给Git仓库的内容----不管你是添加还是删除,先将修改提交暂存区,之后再将这些修改提交给Git仓库。

第二种删除方式

git rm b

  实际上这个命令所做的操作与第一种是一样的,只是将第一种的操作二合一,更加快捷。

  最后我们提交修改。

git  commit -m "Remove a and b"

  所有的操作如下图

6.2 Git文件重命名

  首先我们需要明确文件重命名实际上是做了两个操作

  1.   拷贝文件到新文件下
  2.   删除原文件

  与上面一样,重命名操作可以有两种方式,第一种操作如下

mv c renamed_file

    输入上面的命令后,我们使用git status命令来查看如下图

  这里指出了我们做了两个修改-删除了c文件,增加了一个renamed_file文件,那接下去我们怎么将这个状态提交给暂存区呢?

git rm c
git add renamed_file

  这样操作后我们使用git status,可以看出git已经能够识别出我们的操作是重命名。

  上面的操作未免太过繁琐,那么有没有简单的方式?当然有。下面命令行可以一步到重命名。

git mv d another_rename

  这些操作后GUI显示如下图

 将这些操作提交给git仓库。最后如下图

6.3 在git仓库里添加目录

  通过git gui打开gui窗口,选择Repository > Explore work copy,打开文件所在目录,添加文件夹doc并在里面新建一个文件doc.txt,这里注意一点,git只会添加有文件的文件,不会添加空文件夹。这里我们可以同时新建一个test空文件夹测试一下。Gui窗口点击Rescan后,结果如下图

  可以看到只识别出了doc。

  我们可以打开Repository>Browse Master's Files,这个窗口里面是Git仓库里有的文件,现在还没有doc文件夹内容,我们在Gui窗口先staged并commit后,便能够在这个窗口看到这个目录如下图。

6.4 添加部分修改

  首先我们先想一想我们在写代码的时候,为了验证代码的正确性,有时候会写一些debug代码,但是这些代码在我们验证了正确性之后又往往是我们不需要的,我们需要的仅仅是运行正确的功能代码,而其他则不需要。因此,在这一小节我们来学习怎么手动选择我们想要提交的代码行。

  首先我们先新建一个文件math.sh,并先提交给git仓库。然后在下面输入代码如下

# Add a and b
a=1
b=1
#
# These are for testing
#
echo $a
echo $b
let c=$a+$b
echo $c

  不熟悉bash编程也没关系,我们可以看出这是一个简单的计算a+b的程序,中途我们输出a,b的值来debug.我们可以通过命令bash math.sh来看到程序运行结果。

   我们在Gui上操作比较明显且简单,我们先在Gui上操作如下,在想要提交的行右击,但是这里只能一行一行操作。

 

  当然,我们也可以使用命令git add -p,然后输入,这里每个缩写字母代表的意思如下图

  由于这个操作基本不怎么使用,而且涉及到文件编辑器的使用,这边就不展开说了,也不建议花太多时间在这里。

  最后,我们在使用Git gui的时候,可能有时候不小心把一些不想要的东西提交给了暂存区,想要撤回,但是Gui里面没有unstage的按钮时候,可以使用代码git reset file,删除暂存区的所有修改。但是由于现在的GUI基本都有unstage操作,且git reset操作现在一般和历史回溯和分支有关,因此这边也不展开讲,在之后讲到分支的时候再说。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值