簡體   English   中英

Git - 推送當前分支快捷方式

[英]Git - push current branch shortcut

是否有快捷方式告訴 Git 將當前跟蹤分支推送到原點?
注意:我知道我可以更改默認推送行為,但我正在尋找一種不會更改默認行為的臨時解決方案。

例如,假設我在我將使用的分支feature/123-sandbox-tests

git push origin feature/123-sandbox-tests

這是乏味的。 我正在尋找一條捷徑,比如

git push origin current # <- example, not working

其中 git 知道當前是feature/123-sandbox-tests


編輯:從 2.0 版本開始,git 的默認行為已更改為更直觀的行為,這正是我想要實現的。 有關詳細信息,請參閱此 SO 問題

編輯 2ceztko 的答案是最好的答案,因為它允許推送當前分支,而不管設置如何。

根據git push文檔:

git push origin HEAD
    A handy way to push the current branch to the same name on the remote.

所以我認為你需要的是git push origin HEAD 如果您還沒有推送到源,則git push -u origin HEAD在本地分支中設置上游跟蹤信息也很有用。

您可以使用以下命令將 git 配置為推送到當前分支

git config --global push.default current

然后就做

git push 

這會將代碼推送到您當前的分支。

您應該在沒有指定分支的情況下查看“git push”的默認行為中的類似問題

基本上它解釋了如何設置默認行為以僅執行git push來推送當前分支。 大概你需要的是:

git config --global push.default current

其他選項:

  • 沒有:不要推動任何東西
  • 匹配:推送所有匹配的分支
  • 上游/跟蹤:將當前分支推送到它正在跟蹤的任何地方
  • current : 推送當前分支

我在我的 .bashrc 配置中使用這樣的別名

alias gpb='git push origin `git rev-parse --abbrev-ref HEAD`'

在命令$gpb它獲取當前分支名稱並將其推送到原點。

這是我的其他別名:

alias gst='git status'
alias gbr='git branch'
alias gca='git commit -am'
alias gco='git checkout'

對於它的價值,終極捷徑:

在我的.bash_profile我有alias push="git push origin HEAD" ,所以每當我輸入push我知道我正在推送到我所在的當前分支。

如果您使用的是 git 1.7.x,您可以運行以下命令來設置遠程跟蹤分支。

git branch --set-upstream feature/123-sandbox-tests origin/feature/123-sandbox-tests

然后你可以簡單地使用git push來推送所有更改。 有關更完整的答案,請在此處查看對類似問題的已接受答案。

如果您只想使用 push 命令推送當前分支,那么您可以將推送行為更改為上游:

git config --global push.default upstream

最簡單的方法:運行git push -u origin feature/123-sandbox-tests一次。 這會按照您習慣的方式推送分支,並在本地配置中設置上游跟蹤信息。 之后,您可以git push將跟蹤的分支推送到其上游遠程。

您也可以通過將branch.<branch name>.merge設置為遠程分支名稱(在您的情況下與本地名稱相同)並可選地將branch.<branch name>.remote設置為要推送到的遙控器(默認為原點)。 如果您查看您的配置,很可能已經為master設置了其中一個,因此您可以按照該示例進行操作。

最后,確保您考慮push.default設置。 它默認為“匹配”,這可能會產生不希望的和意外的結果。 我認識的大多數人發現“上游”更直觀,它只推送當前分支。

這些設置的詳細信息可以在git-config 手冊頁中找到

想一想,在重新閱讀你的問題時,我認為你知道這一切。 我認為你真正要找的東西不存在。 bash 函數如何(未經測試):

function pushCurrent {
  git config push.default upstream
  git push
  git config push.default matching
}

在 ceztko 的回答的幫助下,我編寫了這個小輔助函數來讓我的生活更輕松:

function gpu()
{
    if git rev-parse --abbrev-ref --symbolic-full-name @{u} > /dev/null 2>&1; then
        git push origin HEAD
    else
        git push -u origin HEAD
    fi
}

它將當前分支推送到原點,如果尚未設置,還會設置遠程跟蹤分支。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM