2016-03-29 48 views
1

我想創建一個git別名(或bash別名),它將打印出(在控制檯中)當前簽出的分支&也是它被推送到的最後一個遠程(url不是名稱)。Git - 如何記錄當前分支名稱和我推送到控制檯的最後一個遠程URL

理想的情況下,我希望它是這樣工作的:或者

> git log-branch-fork 
Branch Name: features/current_feature_name 
Form URL: [email protected]:UserName/ForkUrl.git 

,我可以通過其中包含遠程的name參數:

> git log-branch-fork my-fork 
Branch Name: features/current_feature_name 
Form URL: [email protected]:UserName/my-fork.git 
+1

IIRC,git沒有跟蹤上一次推送分支的位置。它知道跟蹤遠程,如果你已經配置它,但你必須跟蹤和存儲推送到遠程自己。 – T0xicCode

+0

是啊我想的很多,所以我想我可以使用包含遠程名稱的參數 –

回答

1

最後的遠程(URL它被推到了。

這不能完全可靠地確定,因爲Git不存儲有關何時推送的信息。

但是,通過查看當前分支的跟蹤分支我們至少可以看到,當git-push在沒有明確使用remote參數調用了Git使用remote

這是一個shell腳本,它使用跟蹤分支來確定關聯的remote分支。您也可以選擇傳遞一個remote

#!/bin/sh 

# get full tracking branch name 
# (e.g origin/master) 
BR=`git rev-parse --abbrev-ref --symbolic-full-name @{u}` 

# either get remote from user 
# or from parsing the tracking branch's name 
if [ $# -eq 1 ] 
    then 
    REMOTE=$1 
else 
    REMOTE=`echo $BR | cut -d/ -f 1` 
fi 

# get url associated with remote 
URL=`git config --get remote.$REMOTE.url` 

# print out results 
echo "Branch Name: $BR" 
echo "From URL: $URL" 

我建議把這個腳本在你PATH,然後當你當前的工作目錄是一個Git回購協議中調用它只是通過指定它的名字(和可選傳入remote)。

相關問題