关于git中分支的困惑

简介: <p style="margin-top:0px; margin-bottom:10px; word-wrap:break-word; word-break:break-all; color:rgb(51,51,51); font-family:微软雅黑,Arial,Helvetica,sans-serif; font-size:14px; line-height:28px"> 先说下我

先说下我对git仓库结构的理解,就以我是一个git用户而言,
仓库分为:
远程仓库(blasd(remote) repository)和本地仓库(local repository)
本地仓库有分为:
工作区(workspace),中间状态(staged),本地仓库(local repository)
中间状态介于工作区和本地仓库的中间状态,比如,在工作区增加了一个test.txt文件,已经add了,
但是还没有commit的状态。
现在大家可能还没有看到到底解决的是什么困惑,大家一步步跟着来吧。
1. clone 代码代码到本地
地址是一个测试远程仓库:https://github.com/com360/android-app.git
输入以下命令:

1
 $git clone https://github.com/com360/android-app.git

在clone完之后,git会自动为你将此远程仓库命名为origin,origin只是为远程仓库起的一个别名,运行git remote –v 可以查看origin的含义;并且git会建立一个指向远程仓库origin的master 分支的标识,git使用
(远程仓库名)/(分支名) 这样的形式表示远程分支,所以origin/master指向的是一个我们clone到本地的远程分支,被代表为远程创仓库和分支。
同时,git会建立一个本地master分支,它指向的是从远程仓库的分支下载到本地的副本。

2.查看分支有哪些
输入如下命令:

1
2
3
4
5
6
$ git branch -a
* master
  remotes/eoecn/master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
su@SUCHANGLI /e/eoe_client/android-app (master)

git branch -a 用于查看所有的分支。
*master就是你本地的分支
remotes/eoecn/master和remotes/origin/master是远程分支
是和eoecn/master,origin/master相同的意思
可以只看远程仓库的分支

1
2
3
4
5
$ git branch -r
  eoecn/master
  origin/HEAD -> origin/master
  origin/master
su@SUCHANGLI /e/eoe_client/android-app (master)

3.比较分支的不同

1
$ git diff origin/master master

上面的命令就是比较远程的分支和本地分支的不同
为了验证remotes/origin/master和origin/master指向是相同的可以使用上面的命令

1
$ git diff origin/master remotes/origin/master
  1. 提交更新到远程仓库 如下命令:
1
$ git push origin master

其中origin指定了你要push到哪个远程仓库
正常的形式其实是:,冒号前表示本地分支的名字,冒号后表示远程仓库的分支的名字。
上面的命令省略了远程仓库分支的名称,如果省略了代表远程的分支的名字使用本地分支的名字。
上面的命令等价于

1
$ git push origin master:master

远程分支和本地分支的名字相同,可以省略远程分支的名字
注意:如果远程没有master分支的话,就会新建一个以此名字命名的远程分支
也可以这样写:

1
$ git push origin master:refs/for/branch1 

在本地仓库中找到名字为master的分支,用他去更新远程仓库下面名字为branch1的分支

还有一个小技巧,你不知道当前分支的名称的话,可以用前面的命令去查看
如果不想查看,可以这样

1
$ git push origin HEAD:refs/for/branch1 

使用HEAD作为当前分支的代表符号

如果本地分支名称给省略了,代表用空的分支去更新远程分支,间接的实现对远程分支内容的删除
例如:

1
$ git push origin :branch1

看到这里就明白了要解决的问题,哪个代表本地分支,哪个代表远程分支。
如果错误,欢迎指正。

相关文章
|
28天前
|
开发工具 git
图解Git——分支的新建与合并《Pro Git》
在Git开发中,新建与合并分支是常见的操作。以实际开发为例:为实现新需求创建分支`iss53`进行开发;遇紧急Bug时,切换至线上分支创建`hotfix`修复并合并回线上分支,再切换回`iss53`继续工作。完成`iss53`后,切换到`master`合并。若出现冲突,使用`git status`查看,手动编辑解决冲突后标记为已解决并提交。图形化工具如`git mergetool`也可辅助解决冲突。
44 9
|
28天前
|
开发工具 git 开发者
图解Git——分支简介《Pro Git》
Git 分支是其核心特性之一,允许开发者从主开发线分离工作,避免干扰主线。传统版本控制系统创建分支效率低,而Git的分支创建和切换非常轻量高效。
70 9
|
2天前
|
开发工具 git 开发者
vscode+git解决远程分支合并冲突
通过这些详细步骤,您可以掌握如何使用VSCode和Git高效地解决远程分支合并冲突,提高开发效率和代码质量。希望这些内容对您的学习和工作有所帮助。
125 86
|
28天前
|
存储 项目管理 开发工具
图解Git——分支开发工作流《Pro Git》
分支开发工作流利用Git的分支功能,支持灵活的项目管理。长期分支如`master`和`develop`分别保存稳定和开发中的代码;短期主题分支用于开发单一特性或修复问题,完成后合并到主分支。此模式确保代码稳定性,支持并行开发、便于审查和灵活调整。建议维护明确的长期分支,保持主题分支短小精悍,并定期清理无用分支。配置上可保护关键分支,遵循命名规范。
54 7
|
28天前
|
存储 缓存 Java
图解Git——远程分支《Pro Git》
远程分支是 Git 中用于管理分布式协作的关键概念。远程引用指向远程仓库中的分支和标签,常用 `git ls-remote` 或 `git remote show` 查看。日常开发中,通常使用远程跟踪分支(如 `origin/main`)与远程分支交互,简化远程仓库状态的管理和使用。远程跟踪分支记录远程分支的状态,但本身只读。
27 6
|
4月前
|
开发工具 git
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
这篇文章是关于Git常用命令的总结,包括初始化配置、基本提交、分支操作、合并、压缩历史、推送和拉取远程仓库等操作的详细说明。
173 1
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
|
4月前
|
开发工具 git 开发者
关于git 解决分支冲突问题(具体操作,包含截图,教你一步一步解决冲突问题)
本文通过具体操作和截图,详细讲解了如何在Git中解决分支冲突问题,包括如何识别冲突、手动解决冲突代码、提交合并后的代码,以及推送到远程分支。
791 3
关于git 解决分支冲突问题(具体操作,包含截图,教你一步一步解决冲突问题)
|
5月前
|
缓存 开发工具 git
Git创建分支以及合并分支
在Git中,创建分支使用`git branch [branch_name]`,切换分支使用`git checkout [branch_name]`。修改文件后,通过`git add [file]`添加到暂存区,然后`git commit`提交到本地仓库。如果是新建分支的第一次推送,使用`git push origin [branch_name]`推送到远程仓库,之后可以简化为`git push`。合并分支时,使用`git merge [branch_name]`将指定分支的更改合并到当前分支。
143 2
Git创建分支以及合并分支
|
4月前
|
开发工具 git
Git分支使用总结
Git分支使用总结
68 1
|
5月前
|
测试技术 开发工具 git
掌握 Git 分支策略:提升你的版本控制技能
在现代软件开发中,版本控制至关重要,Git 作为最流行的分布式版本控制系统,其分支管理策略对于高效协作和代码维护尤为重要。本文介绍了几种常用的 Git 分支策略,包括主线开发模型、功能分支模型、Gitflow 工作流和 Forking 工作流,并探讨了如何根据项目需求选择合适的分支模型。通过保持 `master` 分支稳定、及时合并清理分支、使用命名规范、利用 Pull Request 进行代码审查及自动化测试等最佳实践,可以显著提升团队协作效率和软件质量。掌握这些策略将帮助开发者更好地管理代码库,加快开发流程。

相关实验场景

更多