在Git中,如何在不手动指定文件的情况下暂存我刚刚传播的文件?

时间:2011-02-10 10:37:28

标签: git bash

我经常对文件进行区分,确定它是我要播放的文件,然后必须运行git add /long/path/to/file来手动指定文件。

通常的工作流程将遵循:

git status

“oooh changes”

git diff /long/path/to/changed/file

“是的,我记得 - 提交时间!”

git add /long/path/to/changed/file

显然,这不是世界上最困难的事情,只是有点单调乏味。我知道我也可以进入互动模式,但这从来都不适合我的工作流程。

所以我正在寻找一些神奇的unix或git命令,在那里我可以说“嘿,那个文件我只是差分 - 请它上演!”。

Git或Bash中是否存在类似的内容?或者我需要在bash脚本中构建它?

4 个答案:

答案 0 :(得分:14)

答案 1 :(得分:8)

您可以使用bash shell快捷方式。例如,键入:

  

git add Alt

Alt 快捷方式从上一个命令中拉出参数。您也可以重复它以在命令历史记录中进一步搜索参数。

奖金材料......

如果你想要更神秘的事情,请尝试以下方法:

[you@home]$ git diff /some/path/to/file
[you@home]$ ^diff^add

来自definitive guide to bash command line history

  

也许是最有趣的事件   指定者是形式上的指示者   需要的是'^ string1 ^ string2 ^'   最后一个命令,替换 string1    string2 并执行它。

使用^diff^add,虽然很有趣,但可能很难打字。它不能用于别名。有关替代方案,请参阅我的other answer

答案 2 :(得分:3)

将以下内容添加到.bashrc

alias addiff='fc -s "git diff=git add"'

您现在拥有addiff命令,在git diff之后使用时,会将其转换为git add

[you@home]$ git diff /some/path/to/file
[you@home]$ addiff

fc(Fix Command的缩写)是一个bash内置命令。在没有选项的情况下使用时,它允许您在重新执行之前编辑上一个命令。使用-s选项可以指定模式而无需借助文本编辑器。

有关fc的更通用用法,请将alias r='fc -s'添加到.bashrc。然后你可以这样使用它:

[you@home]$ r # repeat the previous command

[you@home]$ r git # repeat the last command containing the word "git"

[you@home]$ r foo=bar # repeat the last command, replace "foo" with "bar"

答案 3 :(得分:0)

您可以尝试使用:

git add .

此命令行添加当前工作目录中的所有新文件,而不指定文件名或文件路径。