我经常对文件进行区分,确定它是我要播放的文件,然后必须运行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脚本中构建它?
答案 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 .
此命令行添加当前工作目录中的所有新文件,而不指定文件名或文件路径。