我发现自己在git log
,git diff
,git show
中经常使用# l is an alias for log with pretty format
git l --name-status
选项。我知道git别名,但它们只适用于命令或命令和/或选项的组合。我不想要为此选项创建git别名。
--ns
所以我可以这样做,--name-status
是git l --ns
的捷径:
import React,{Component} from "react"
import {View,TouchableOpacity,Text} from "react-native"
class Test extends Component{
state ={
count = 0
}
changeCount(){
this.setState({count:this.state.count++})
}
render(){
return(
<View>
<TouchableOpacity onPress={this.changeCount.bind(this)}/>
<Text>{this.state.count}</Text>
<View/>)
}
}
更新:有关不同注意事项,请参阅my own answer。
答案 0 :(得分:1)
除非修改源代码以识别其他标志,否则最好的选择是使用别名来重写标志:
[alias]
l = "!l() { : git log ; git log $(echo \"$@\" | sed \"s/--ns/--name-status/\") ; } && l"
或者你可以在bash中定义一些别名g
来为你做这个(你可以配置auto-complete来处理这个但我不记得怎么做了我的头脑) :
function g {
git $(echo "$@" | sed "s/--ns/--name-status/")
}
答案 1 :(得分:1)
我希望 hack 对某人有帮助,所以在此发布。它基于the answer这个问题。
我本可以创建自己的git命令void SlaveMain()
{
//
// Initialize the message
//
memcpy(g_ucTxBuff,SLAVE_MSG,sizeof(SLAVE_MSG));
//
// Set Tx buffer index
//
ucTxBuffNdx = 0;
ucRxBuffNdx = 0;
//
// Reset SPI
//
MAP_SPIReset(GSPI_BASE);
//Message("\n\r SPI reset");
// Configure SPI interface
//
MAP_SPIConfigSetExpClk(GSPI_BASE,MAP_PRCMPeripheralClockGet(PRCM_GSPI),
SPI_IF_BIT_RATE,SPI_MODE_SLAVE,SPI_SUB_MODE_3,
(SPI_HW_CTRL_CS |
SPI_4PIN_MODE |
SPI_TURBO_ON |
SPI_CS_ACTIVELOW |
SPI_WL_8));
Message("\n\rSPI configured");
//
// Register Interrupt Handler
//
MAP_SPIIntRegister(GSPI_BASE,SlaveIntHandler);
//
// Enable Interrupts
//
MAP_SPIIntEnable(GSPI_BASE,SPI_INT_RX_FULL|SPI_INT_TX_EMPTY);
//
// Enable SPI for communication
//
MAP_SPIEnable(GSPI_BASE);
//Message("\n\rSPI enabled");
/*MAP_SPIReset(GSPI_BASE);
MAP_SPIConfigSetExpClk(GSPI_BASE,MAP_PRCMPeripheralClockGet(PRCM_GSPI),
SPI_IF_BIT_RATE,SPI_MODE_SLAVE,SPI_SUB_MODE_0,
(SPI_HW_CTRL_CS |
SPI_4PIN_MODE |
SPI_TURBO_OFF |
SPI_CS_ACTIVELOW |
SPI_WL_8));
MAP_SPIEnable(GSPI_BASE);
//}*/
}
,但我更喜欢在备份~/bin/git-<custom command>
时更改现有的git别名。 git命令具有在提及.gitconfig
时在当前目录中执行的优势(不需要下面提到的<path>
)。
我将替换选项逻辑拉出到帮助器fn cd ${GIT_PREFIX:-.}
中。然后它用于别名options
(l
),log
(d
),diff
(dt
)等。我故意保留fn在difftool
而不是shell脚本中所以一切都在一个地方。很容易为fn添加新的选项。
gitconfig
需要尊重cd ${GIT_PREFIX:-.}
作为shell命令执行的git别名(see this)。这对<path>
非常重要。
请注意,shell命令将从顶级目录执行 存储库,可能不一定是当前目录。
我已经为git log
,log
,diff
添加了别名。不可能有git别名或自定义git命令来覆盖内置的git命令,并且不想为difftool
创建一个,所以我遗漏了show
。
<强>之前:强>
git show
<强>后:强>
[alias]
l = !"cd ${GIT_PREFIX:-.} && git lg2"
d = diff
dt = difftool
lg2 = # alias for log
现在我可以做到:
[alias]
l = "!f() { cd ${GIT_PREFIX:-.} && git lg2 $(git options "$@"); }; f"
d = "!f() { cd ${GIT_PREFIX:-.} && git diff $(git options "$@"); }; f"
dt = "!f() { cd ${GIT_PREFIX:-.} && git difftool $(git options "$@"); }; f"
lg2 = # alias for log
#workaround: helper fn to alias options
options = "!f() { \
echo "$@" \
| sed 's/\\s/\\n/g' \
| sed 's/^--ns$/--name-status/' \
| sed 's/^--no$/--name-only/' \
| xargs; \
}; f"
答案 2 :(得分:0)
我不认为别名命令行参数是可能的。