2013-07-17 121 views
0

是否可以一次全部運行以下命令:
Git的捷徑添加,commiting並推到遠程回購

 
1. git add . 
2. git commit -m "Message" 
3. git push orgin/master 

我知道前兩個可以排序來參加這樣的:

git commit -am "Message"

我想在本地提交而不必經過所有這些步驟後推送到遠程。

+0

難道你不能把它們結合在腳本中嗎? –

回答

5

恕我直言,這將是可能的,只有當

  • 您是促進
  • 您只使用一個本地資源庫,推動修改遠程

唯一的程序員,這帶走靈活性和強大的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。

+1

你有正確的想法,但你沒有正確設置別名,並且你沒有正確執行它。另外,可以將別名參數化爲接受提交消息,並且應該添加該消息。 – 2013-07-17 19:50:18

+0

@Cupcake:謝謝。我首先想到只有一個靜態提交消息。所以更側重於告訴他/她打算什麼不是一個好習慣。現在更新它。 :) –

+0

我其實認爲這將是非常有用的做一個別名,做什麼原始的海報要求。也許修改它只是將當前分支推送到他的遠程,而不是'master'分支。如果他在GitHub上工作,他的'origin'回購可能只是一個分叉,在這種情況下,它可以作爲一個「私人」回購。 – 2013-07-18 01:44:09

1

你可以定義一個別名,它需要一個參數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做什麼樣的技巧,這是非常有用的工具。