是否可以一次全部運行以下命令:
Git的捷徑添加,commiting並推到遠程回購
1. git add . 2. git commit -m "Message" 3. git push orgin/master
我知道前兩個可以排序來參加這樣的:
git commit -am "Message"
我想在本地提交而不必經過所有這些步驟後推送到遠程。
是否可以一次全部運行以下命令:
Git的捷徑添加,commiting並推到遠程回購
1. git add . 2. git commit -m "Message" 3. git push orgin/master
我知道前兩個可以排序來參加這樣的:
git commit -am "Message"
我想在本地提交而不必經過所有這些步驟後推送到遠程。
恕我直言,這將是可能的,只有當
唯一的程序員,這帶走靈活性和強大的git給你。
如果是這樣,
可以使用'alias'
所以這樣的事情可以做的工作。
$ gitFunction() {
> git add .
> git commit -m "$1"
> git push origin }
$ alias git-all="gitFunction"
$ git-all 'commit message' //Will do everything for you.
或者
添加到您的.git/config文件。
[alias]
sync = "!sync() { git add . && git commit -m \"$1\" && git push $2; }; sync"
稍後,可以使用
$git sync 'commit message' remote_repo
但你不應該這樣做!
爲什麼?
雖然離這個話題,我很願意引用Principle of sufficient reason
沒有什麼是沒有理由或原因
的Git,當由Linus設計了這些步驟分開,因爲充足理由。如果你濫用它,那麼你將無法獲得它的全部潛力。所以最好有遵循最佳實踐。
從你打算實現的目標來看,git只是一個工具,可以將你的源代碼更改上傳到遠程服務器,這是錯誤的,並帶走了git給你的所有好處。
爲什麼git add
不應該自動化?
git add可以幫助您添加未跟蹤文件/將修改後的文件添加到暫存區域。稍後會進入您的提交。做git add .
將把所有東西都加入你的臨時區域。大多數時候你會有某些東西,你不想承諾或在特定的提交中出現。
爲什麼git commit -m "Message"
不應該自動化?
提交消息解釋了上次提交後發生的更改。提交消息可幫助其他程序員與您協作,以瞭解您所做的更改。所以你不應該在提交消息中寫無謂感
爲什麼git push
不應該是自動的?
即使使用您目前的邏輯,如果您不是唯一對該項目有貢獻的程序員,這一步應該會失敗。所以在遠程會有變化,你應該拉動。在最好的情況下,自動合併會發生,你可以直接做下一步的git push。但是,如果發生衝突,您需要解決衝突,然後提交更改,合併然後推送(順便說一下,如果可能,不易實現自動化)。
此外,你不會推入同一個遙控器,你不會一直推動同一個分支。所有這些都是可變的,需要開發者的決定。
因此,試着理解Git,然後再對這些進行一下思考。
閱讀Pro Git它是免費的,最好的書上的git。
你有正確的想法,但你沒有正確設置別名,並且你沒有正確執行它。另外,可以將別名參數化爲接受提交消息,並且應該添加該消息。 – 2013-07-17 19:50:18
@Cupcake:謝謝。我首先想到只有一個靜態提交消息。所以更側重於告訴他/她打算什麼不是一個好習慣。現在更新它。 :) –
我其實認爲這將是非常有用的做一個別名,做什麼原始的海報要求。也許修改它只是將當前分支推送到他的遠程,而不是'master'分支。如果他在GitHub上工作,他的'origin'回購可能只是一個分叉,在這種情況下,它可以作爲一個「私人」回購。 – 2013-07-18 01:44:09
你可以定義一個別名,它需要一個參數like it is described in details here
你的情況,我認爲這應該工作
[alias]
acp = "!f() { git add . && git commit -m \"$1\" && git push origin/master; }; f"
,那麼你可以把它叫做
git acp "commit message"
此外,檢查出在Git文檔中你可以用alias做什麼樣的技巧,這是非常有用的工具。
難道你不能把它們結合在腳本中嗎? –