要將額外參數應用於除別名「命令行」末尾以外的任何內容,您需要將shell命令放入腳本中。您可以使用外部腳本(如jdelStrother’s answer)來完成此操作,也可以使用「內聯」外殼腳本來完成此操作。
您可以使用-m
養活git commit
新郵件,或使用-C HEAD
/--reuse-message=HEAD
選項,它使用現有的消息和作者(這也將重用筆者時間戳,但你重新與--date=…
)。使用任何這些選項都會阻止Git爲您的提交消息打開編輯器。
這是作爲一個「內聯」 shell腳本:
git config --global alias.sync '!sh -c '\''git commit --amend --date=today ${1+-m} "${1---reuse-message=HEAD}" && git rebase master'\'' -'
這個小腳本的核心是對有條件的參數擴展的:
${1+-m} "${1---reuse-message=HEAD}"
當你與一個額外的調用它參數(即您的替換日誌消息),這些參數會擴展爲兩個shell字:-m "<your new log message>"
。當您不提供額外參數時,它們會擴展爲只有一個字:"--reuse-message=HEAD"
。
尾隨短劃線也很重要;它可能是任何shell語句,問題是必須有一些東西,因爲shell將使用它來初始化其參數$0
(它通常有一個默認值,所以它對於條件擴展本身沒有用處)。
如果我誤解,你真的想看看,當你不提供額外的參數編輯器,然後使用一個擴展${1+-m "$1"}
,而不是對擴展的。
可能的重複http://stackoverflow.com/q/3321492/923794 – cfi