在git中有“当前分支”的字符吗?

时间:2017-07-13 20:48:43

标签: git

我需要不断重新输入我当前的分支名称。

实施例

使用远程

中的更改更新当前分支
git pull origin mySuperLongComplicatedBranchName

将我当前的分支推送到远程

git push origin mySuperLongComplicatedBranchName

我想将其简化为简单:

git pull origin *

或类似的东西。除非这样的事情已经存在。我已经习惯了git,但我只是希望我错过了一些简单的东西。

编辑:

添加额外信息以回应一条评论:

git show-ref --head

eaadd6401c4e179c105ac3565fe9bf53e2882f83 HEAD 
eaadd6401c4e179c105ac3565fe9bf53e2882f83 refs/heads/myReallyLongBranchName
d6af452b1ad0a309a55061f9eeb6ab7ae83b6aef refs/remotes/origin/HEAD
eaadd6401c4e179c105ac3565fe9bf53e2882f83 refs/remotes/origin/myReallyLongBranchName`

所以看起来我的遥控器reallyLongBranch看起来与当前的头部相同。哦,我知道。我会

git fetch

然后我跑了

git show-ref - 再次

bc1b96345913e911d03eb62763f8795cc20ecd8f refs/remotes/origin/myReallyLongBranchName

太棒了。现在我必须能够git pull origin HEAD

我运行命令。我得到一个Already up to date

然后我跑:

git pull origin mySuperLongComplicatedBranchName

我将更改下拉了。面掌。

好像它不起作用。 Git知道我当前工作的分支名称是什么......我希望它只有一个符号。

3 个答案:

答案 0 :(得分:6)

您可以使用HEAD作为当前分支的“快捷方式”:

git push origin HEAD

git pull origin HEAD

HEAD通常指向当前已检出的分支。

编辑:jtill提醒我们@作为HEAD的快捷方式,因此它可以更简单:

git push origin @

git pull origin @

答案 1 :(得分:0)

简短答案:

如果这是您创建的分支,请向git告知您要作为上游跟踪的远程分支。

git push -u mySuperLongComplicatedBranchName

然后,仅运行不带远程nor分支名称的命令,默认情况下将使用您正在跟踪的上游分支:

git pull

详细答案:

使用git push发布分支时,如果它是您自己创建的分支,则git要求您设置一个上游分支,以便能够跟踪在本地和远程分支之间进行更改。 这可以通过使用--set-upstream或更短的-u选项来完成。 因此git push origin -u <name_of_your_branch>origin远程服务器上发布(如果不存在,则创建)分支。

来自man git-push

-u, --set-upstream
           For every branch that is up to date or successfully pushed, add upstream (tracking) reference, used by argument-less git-pull(1) and other commands. For more information, see branch.<name>.merge
           in git-config(1).

此处的关键信息是:argument-less git-pull

通过不指定远程名称(通常为origin)或git pull命令中的分支名称,意味着:“从被跟踪的分支中拉出”,即您定义为上游的分支。< / p>

因此,您只需要运行git pull来合并上游分支上的更改,或者运行git pull -r以使分支基于远程更改来重新建立您的需求。

答案 2 :(得分:0)

这些是我用来推送和拉取的快捷方式,包括获取分支名称(不仅仅是使用 HEAD,它指向一个提交并且会在拉取时导致问题):

alias push='git push origin "$(git symbolic-ref --short HEAD)"'
alias pull='git pull origin "$(git symbolic-ref --short HEAD)"'