git 中有"current branch"字符吗?



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

例子

使用远程更改更新我当前的分支

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`

所以看起来我的遥控器真的长分支看起来与当前的头部相同。哦,我知道了。我会

git fetch

然后我跑了

git show-ref --head again

bc1b96345913e911d03eb62763f8795cc20ecd8f refs/remotes/origin/myReallyLongBranchName

哦,太好了。现在我必须能够做git pull origin HEAD.

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

然后我运行:

git pull origin mySuperLongComplicatedBranchName

我被拉下了变化。脸掌。

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

您可以使用HEAD作为当前提交树 HEAD 的"快捷方式":

git push origin HEAD
git pull origin HEAD

HEAD通常指向当前签出分支的头部提交。

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

git push origin @
git pull origin @

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

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

简短回答:

如果它是你创建的分支,告诉 git 与远程分支你想跟踪为上游。

git push -u mySuperLongComplicatedBranchName

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

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.

git pull命令中既不指定远程的名称(通常为origin),也不指定分支名称,这意味着:"从跟踪的分支拉取",即您定义为上游的分支。

因此,只需运行git pull以合并上游分支上的更改,或者git pull -r在远程更改上重新设置分支的基数即可。

最新更新