How do I determine what branch/tag I have checked out in git?

人走茶凉 提交于 2019-12-01 06:34:47

问题


I clone my source using git clone https://gerrit.wikimedia.org/r/p/mediawiki/core.git w/. Then I specify a specific branch/tag by doing git checkout <tag name> or git checkout origin/REL<release number>. Sometimes I forget what branch or tag I'm on.

In SVN I would do a svn info to figure out what branch/tag I'm using (I realize that git has distinct definitions for branch and tag but for my purposes they are the same).

How do I determine what branch/tag I am on?


回答1:


git branch

tells you what branch you're on (with a * marker).

Tags are just names for revisions, so Git won't tell you that you're "on" a tag, but you can use git name-rev HEAD to get a sense for what it might be.




回答2:


The current branch is marked with a * in the output of git branch. Example:

$ git branch
  branch1
* branch2
  master



回答3:


If you use the bash shell, you can use __git_ps1 in your bash prompt to show this, for example:

[me@myhost:~/code/myproject] (master)$ ls

Download git-completion.bash to ~/.git-completion.bash

Then in your ~/.bashrc file, add

source ~/.git-completion.bash

Then set your PS1 value to something including $(__git_ps1 "(%s)"), something like:

PS1="[\u@\h:\w]\$(__git_ps1)\\$ "



回答4:


How do I determine what branch/tag I am on?

First, since Git 2.22 (Q2 2019), you have git branch --show-current which directly shows you your current checked out branch.

Second, it won't show anything if you are in a checked out worktree (created with git worktree add)

For that, check Git 2.23 (Q3 2019), with its "git branch --list" which learned to show branches that are checked out in other worktrees connected to the same repository prefixed with '+', similar to the way the currently checked out branch is shown with '*' in front.

Example:

See commit 6e93814, commit ab31381, commit 2582083 (29 Apr 2019) by Nickolai Belakovski (``).
(Merged by Junio C Hamano -- gitster -- in commit 99eea64, 09 Jul 2019)

branch: add worktree info on verbose output

To display worktree path for refs checked out in a linked worktree

The git branch documentation now states:

The current branch will be highlighted in green and marked with an asterisk.
Any branches checked out in linked worktrees will be highlighted in cyan and marked with a plus sign.



来源:https://stackoverflow.com/questions/9858055/how-do-i-determine-what-branch-tag-i-have-checked-out-in-git

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!