2017-08-18 173 views
1

我想創建一個Git別名,這樣我就可以一次運行多個命令。無法創建git別名?

我鍵入以下到終端:

混帳配置alias.cleanpull 「混帳的復位 - 硬頭; git的清潔-f; Git的 拉!」

我認爲是正確的語法,但我立即得到下面的輸出輸入命令後(自定義命令即不實際運行它):

git config alias.cleanpull "git config cleanpull.q "git push --all origin reset --hard HEAD; git clean -f; git pull" reset --hard HEAD; git clean -f; git pull" 
usage: git config [<options>] 

Config file location 
    --global    use global config file 
    --system    use system config file 
    --local    use repository config file 
    -f, --file <file>  use given config file 
    --blob <blob-id>  read config from given blob object 

Action 
    --get     get value: name [value-regex] 
    --get-all    get all values: key [value-regex] 
    --get-regexp   get values for regexp: name-regex [value-regex] 
    --get-urlmatch  get value specific for the URL: section[.var] URL 
    --replace-all   replace all matching variables: name value [value_regex] 
    --add     add a new variable: name value 
    --unset    remove a variable: name [value-regex] 
    --unset-all   remove all matches: name [value-regex] 
    --rename-section  rename section: old-name new-name 
    --remove-section  remove a section: name 
    -l, --list   list all 
    -e, --edit   open an editor 
    --get-color   find the color configured: slot [default] 
    --get-colorbool  find the color setting: slot [stdout-is-tty] 

Type 
    --bool    value is "true" or "false" 
    --int     value is decimal number 
    --bool-or-int   value is --bool or --int 
    --path    value is a path (file or directory name) 

Other 
    -z, --null   terminate values with NUL byte 
    --name-only   show variable names only 
    --includes   respect include directives on lookup 

git: 'pull reset --hard HEAD; git clean -f; git pull' is not a git command. See 'git --help'. 
+1

!必須以\!的形式逃脫。它對bash有特殊的意義。 –

+0

@AlexeyTen您有沒有作爲回答發佈的原因? –

+0

從手機難以打字。隨意添加 –

回答

1

shell中的問題(我猜你有bash,這是最常見的,但它可能是csh或其他),而不是git。 Bash威脅!特別作爲命令歷史的參考符號。爲了使用它字面上,你必須要麼反斜槓(\!)逃避它

git config alias.cleanpull "\!git reset --hard HEAD; git clean -f; git pull" 

,或者使用單引號

git config alias.cleanpull '!git reset --hard HEAD; git clean -f; git pull' 

欲瞭解更多信息請參見歷史擴展bash manual

+0

如果我沒有記錯,'bash'從'sh'繼承了這個行爲,它是複製和擴展的原始Bourne shell。當使用其他從'sh'行爲中獲得啓發的shell時,也可能發生這種情況。 – axiac

+0

@axiac提及其他炮彈。 'sh'(在我的系統中是'dash')和'ksh'不這樣做。由'csh'做。我懶得測試其他shell。 –

+0

這只是一個側面的評論,沒什麼好擔心的。問題的標籤是[tag:bash],你的回答清楚地解釋瞭如何解決Bash的問題。和文檔的鏈接絕對是一個很好的答案。 – axiac