这篇文章记录我在使用git的过程中碰到远程分支和tag的相关内容,提纲:
- 查看远程分支
- 删除远程分支和tag
- 删除不存在对应远程分支的本地分支
- 重命名远程分支
- 把本地tag推送到远程
- 获取远程tag
查看远程分支
加上-a参数可以查看远程分支,远程分支会用红色表示出来(如果你开了颜色支持的话):
|
# git branch -a
master
remote
tungway
v1.52
*zrong
remotes/origin/master
remotes/origin/tungway
remotes/origin/v1.52
remotes/origin/zrong
|
删除远程分支和tag
在Git v1.7.0 之后,可以使用这种语法删除远程分支:
|
git push origin--delete<branchName>
|
删除tag这么用:
|
git push origin--delete tag<tagname>
|
否则,可以使用这种语法,推送一个空分支到远程分支,其实就相当于删除远程分支:
|
git push origin:<branchName>
|
这是删除tag的方法,推送一个空tag到远程tag:
|
git tag-d<tagname>
git push origin:refs/tags/<tagname>
|
两种语法作用完全相同。
删除不存在对应远程分支的本地分支
假设这样一种情况:
1. 我创建了本地分支b1并pull到远程分支 origin/b1
;
2. 其他人在本地使用fetch或pull创建了本地的b1分支;
3. 我删除了 origin/b1
远程分支;
4. 其他人再次执行fetch或者pull并不会删除这个他们本地的 b1
分支,运行 git branch -a
也不能看出这个branch被删除了,如何处理?
使用下面的代码查看b1的状态:
1
2
3
4
5
6
7
8
9
10
11
12
|
# git remote show origin
*remote origin
Fetch URL:git@github.com:xxx/xxx.git
Push URL:git@github.com:xxx/xxx.git
HEAD branch:master
Remote branches:
master tracked
refs/remotes/origin/b1 stale(use'git remote prune'toremove)
Local branch configured for'git pull':
master merges with remote master
Local ref configured for'git push':
master pushes tomaster(up todate)
|
这时候能够看到b1是stale的,使用 git remote prune origin
可以将其从本地版本库中去除。
更简单的方法是使用这个命令,它在fetch之后删除掉没有与远程分支对应的本地分支:
重命名远程分支
在git中重命名远程分支,其实就是先删除远程分支,然后重命名本地分支,再重新提交一个远程分支。
例如下面的例子中,我需要把 devel 分支重命名为 develop 分支:
|
# git branch -av
*devel 752bb84Merge pull request#158 from Gwill/devel
master 53b27b8Merge pull request#138 from tdlrobin/master
zrong 2ae98d8modify CCFileUtils,export getFileData
remotes/origin/HEAD ->origin/master
remotes/origin/add_build_script d4a8c4f Merge branch'master'into add_build_script
remotes/origin/devel 752bb84Merge pull request#158 from Gwill/devel
remotes/origin/devel_qt51 62208f1update.gitignore
remotes/origin/master 53b27b8Merge pull request#138 from tdlrobin/master
remotes/origin/zrong 2ae98d8modify CCFileUtils,export getFileData
|
删除远程分支:
|
# git push --delete origin devel
Togit@github.com:zrong/quick-cocos2d-x.git
-[deleted] devel
|
重命名本地分支:
|
# git br -m devel develop
|
推送本地分支:
|
# git push origin develop
Counting objects:92,done.
Delta compression using up to4threads.
Compressing objects:100%(48/48),done.
Writing objects:100%(58/58),1.38MiB,done.
Total58(delta34),reused12(delta5)
Togit@github.com:zrong/quick-cocos2d-x.git
*[newbranch] develop->develop
|
然而,在 github 上操作的时候,我在删除远程分支时碰到这个错误:
|
# git push --delete origin devel
remote:error:refusing todelete the current branch:refs/heads/devel
Togit@github.com:zrong/quick-cocos2d-x.git
![remote rejected]devel(deletion of the current branch prohibited)
error:failed topush some refs to'git@github.com:zrong/quick-cocos2d-x.git'
|
这是由于在 github 中,devel 是项目的默认分支。要解决此问题,这样操作:
- 进入 github 中该项目的 Settings 页面;
- 设置 Default Branch 为其他的分支(例如 master);
- 重新执行删除远程分支命令。
把本地tag推送到远程
获取远程tag
|
$git fetch origin tag<tagname>
|
参考文章
分享到:
相关推荐
本文将深入探讨如何在Git中查看、删除和重命名远程分支以及标签。 1. **查看远程分支** 要查看所有远程分支,你可以使用`git branch -a`命令。这将列出本地分支和远程分支。远程分支通常以`remotes/origin/`开头...
git push -- <远程仓库名>:<远程分支名>:删除远程分支。 git reflog:利用该命令找回错误的重置commit。 四、分支命名与合并策略 1、分支命名 通常在GIT中会有一个主分支(Master),用于存放正式版本的代码;一个...
首先,Git基本工作区分为四个部分,分别是工作区(Workspace)、暂存区(Index/Staged)、本地仓库(Repository)和远程仓库(Remote)。工作区是实际编辑文件的地方,暂存区用于暂存改动,准备提交到本地仓库,本地...
14. 删除远程分支:`git push origin --delete [branch-name]` 或 `git branch -dr [remote/branch]` ### 标签 标签用于标记特定的commit,便于后续引用: 1. 列出所有标签:`git tag` 2. 创建新标签:`git tag ...
查看远程分支时,需要使用git-branch -r,而查看所有分支(包括本地与远程)则使用git-branch -a。创建分支时,可以先建立分支后切换分支,也可以一步到位创建并切换分支,使用git-checkout命令可以切换到指定的分支...
- **远程仓库的删除和重命名**:使用`git remote remove`命令删除远程库,使用`git remote rename`命令重命名远程库。 **2.6 打标签** - **列显已有的标签**:使用`git tag`命令列出所有已有的标签。 - **新建标签*...
4. 删除分支使用`git branch -d [branch-name]`,删除远程分支使用`git push origin --delete [branch-name]`。 5. 切换分支使用`git checkout [branch-name]`,可以使用`git branch --set-upstream [branch] ...
9. **协作与共享**:通过`git remote`管理远程仓库链接,可以添加、删除或重命名远程仓库。`git pull request`(在GitHub等平台)是向他人展示并请求审查你代码的方式。 10. **持续集成/持续部署(CI/CD)**:在更...
- `git branch --track [branch] [remote/branch]`命令用于新建一个分支,并与指定的远程分支建立追踪关系。 以上这些知识点涵盖了Git速查表的主要内容,对于希望快速了解和使用Git命令的开发者来说,这样的速查表...
- **删除远程分支**:`git push <remote> --delete <branch>`删除远程分支。 **3.6 分支的衍合** - **基本的衍合操作**:通过`git rebase`重新排列提交顺序。 - **有趣的衍合**:通过衍合解决复杂的合并场景。 - *...
9. **git pull**:从远程仓库拉取并合并最新更改到本地,常用于保持本地分支与远程分支同步。 10. **git log**:查看提交历史,列出所有的提交记录。 11. **git tag**:打标签,用于标记特定版本,如 `git tag v...
* `git push -d origin branchName`:删除远程分支。 * `git push --tag`:推送所有标签到远程仓库。 * `git push --follow-tag`:推送指定标签到远程仓库。 * `git push -f origin branchName`:强制推送本地分支到...
对于远程分支的操作,如创建、删除和合并,Git 也提供了相应的命令。 最后,管理本地版本库时,使用标签(`git tag`)是一种记录项目重要里程碑的好方法,比如发布版本。标签是静态的,可以随时回溯到某个特定的...
- `git branch -dr [remote/branch]`:删除远程分支。 **命令示例**: - `git branch`:查看本地分支列表。 - `git branch -r`:查看远程分支列表。 - `git branch feature/new-feature`:创建新分支`feature/new-...
`git remote`管理远程仓库的链接,可以添加、删除或查看远程仓库信息。 `git stash`用于暂存未提交的更改,以便在需要时恢复,而不会干扰当前的工作流程。 15. **Git cherry-pick** `git cherry-pick`可以将一个...
- **删除远程分支**:使用`git push origin --delete <branchname>`删除远程分支。 - **分支的衍合**: - **基本的衍合操作**:衍合是指将两个分支的历史合并在一起。 - **有趣的衍合**:探讨如何解决复杂的衍合...
`git push origin --delete <branch>` 删除远程分支。 `git branch -m <old> <new>` 重命名分支。 `git checkout -b <new> <existing>` 创建并切换到新分支。 `git merge <branch>` 合并指定分支到当前分支。 `...
12. **查看远程分支和本地分支的对应关系**:`git branch -vv`。 13. **远程删除了分支本地也想删除**:`git push origin :<branch-name>`。 14. **创建并切换到本地分支**:`git switch -c <new-branch>`。 15. **...