单行git命令用于保存工作目录中的所有更改

时间:2014-02-19 11:11:59

标签: git version-control

git add .;git diff --diff-filter=D --name-only -z | xargs -0 git rm; git commit -m "Change"; git push;

我编写了上面的命令。它添加了目录中的文件。然后删除从“阶段”中删除的文件。然后它提交更改并推送它们。

以这种方式提交更改会产生什么影响?

我是git的新手并且正在学习使用它。发出多个命令的过程太长而且繁琐。

更新:我目前是此个人项目的唯一开发人员。测试&调试在测试服务器上完成,直接通过ftp发布更新。这也被设置为bitbucket上的私有git目录。我想要的是版本控制/备份(项目不需要保留特定的用户权限)。在这种情况下有什么影响?

2 个答案:

答案 0 :(得分:0)

以下是以这种方式使用命令的含义:

  1. 您可能不想一直添加所有更改。此命令将绝对添加未在.gitignore下显式声明的每个更改。打败了一个具有临时区域的全部目的。由于您是从git开始的,因此您必须处理一小组文件并在每次提交时添加所有文件。即使是一个小型(但真实的)项目,您也经常需要选择性地调度文件。 git add -p使您能够仅播放某个文件的某些部分(p代表补丁)。

  2. 第二部分不清楚,但看起来你找到了你删除的文件,并试图通过xargs再次删除它们。不需要。已删除的更改按原样提交,一旦提交的更改将不会再次出现。

  3. 第三部分将在每次提交时分配相同的提交消息。您可以作为开发人员执行的最糟糕的事情之一可能是遵循此通用提交消息策略。当您在3个月(甚至3个小时)后坐下来试图找到该bug的来源时,提交消息将帮助您快速消除可疑提交。与读取描述提交可能包含的更改的提交消息相比,您是否真的认为查看每个提交的差异更容易?另外,对可能得到你的项目的其他开发人员的灵魂有一些怜悯:)。

  4. 第四部分确保您按原样提交每个提交。看起来像svn,每次你提交时都需要与中心通信。有点打败git的本地化和分布式性质。此外,它还可以确保您几乎永远无法做一些很酷的事情,比如变基。

  5. 如果每隔几分钟只提交一个或两个文件,这些命令可能会感觉太多。但实际上,你会想知道没有它们你是如何生活的。给它一些时间,并按照正确的方式。

答案 1 :(得分:0)

在这里,二合一:

git add -A && git commit -m 'Your Message' && git push origin master

所有你需要的是&&