【问题标题】:Is there a character for "current branch" in git?git中是否有“当前分支”的字符?
【发布时间】:2017-12-18 19:50:46
【问题描述】:

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

示例

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

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`

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

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 知道我当前工作的分支名称是什么......我希望它只有一个符号。

【问题讨论】:

  • 你有没有试过不指定一个分支来获取所有?

标签: git


【解决方案1】:

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

git push origin HEAD

git pull origin HEAD

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

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

git push origin @

git pull origin @

【讨论】:

  • “通常”是什么意思?只是想确保我知道“陷阱”。
  • 这个问题的第一个(并且被接受的)答案完美地解释了:stackoverflow.com/questions/2304087/what-is-head-in-git。一般来说,你可以安全地使用它:)
  • 谢谢。不敢相信我不知道使用 HEAD。很高兴我问了!
  • 嗯...我刚刚遇到的一个问题。 git push origin HEAD 工作。但是git pull origin HEAD 没有。我刚收到Already up-to-date. 消息。
  • HEAD 是“在分支顶端提交”的简写,绝对不等同于分支名称。这是一个提交,一个分支是一个提交的指针。这些不一样。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    简答:

    如果是你创建的分支,告诉 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 以根据远程更改重新定位您的分支就是您要寻找的。​​p>

    【讨论】:

      猜你喜欢
      • 2013-01-14
      • 2018-05-31
      • 1970-01-01
      • 1970-01-01
      • 2018-06-25
      • 2016-12-24
      • 2013-09-30
      • 2010-11-27
      相关资源
      最近更新 更多