jak*_*jak 18 git version-control github git-branch
我是一个新的git用户,最近交给了一个过时的git存储库来照顾.
这是原始状态(由git show-branch输出):
! [cr232] CR 232 Release
* [dev] Style Changes
---------------
* [dev] Style Changes
* [dev^] SMS 5.4
* [dev~2] Logo Change
* [dev~3] SMS 5.3
* [dev~4] SMS 5.2
* [dev~5] SIT R-0.3.3 EDW SMS Layers
* [dev~6] SIT Release R 0.3.0
+* [cr232] CR 232 Release
+* [cr232^] Dashboard Fix
+* [cr232~2] Release for system testing
Run Code Online (Sandbox Code Playgroud)
请注意,此时有一个名为"dev"的分支.注意突出显示有几个对dev的引用(即dev,dev ^,dev~2等).
为了我的发展目的,我试图提出一个名为'DEV'的分支,所有资本.
所以我继续创建新分支(git branch DEV),现在运行git show-branch -date-order:
! [DEV] Style Changes
! [cr232] CR 232 Release
* [dev] Style Changes
---------------
* [DEV] Style Changes
* [DEV^] SMS 5.4
* [DEV~2] Logo Change
* [DEV~3] SMS 5.3
* [DEV~4] SMS 5.2
* [DEV~5] SIT R-0.3.3 EDW SMS Layers
* [DEV~6] SIT Release R 0.3.0
+* [cr232] CR 232 Release
+* [cr232^] Dashboard Fix
+* [cr232~2] Release for system testing
Run Code Online (Sandbox Code Playgroud)
请注意,dev和DEV都列为分支.另请注意,在第5行,对dev的引用现在已更改为DEV(即DEV,DEV ^,DEV~2等).
什么是第5行输出?我希望它保持"dev"而不是改为"DEV",因为它旁边的描述是指"dev"分支期间旧工作的描述.
我试图通过将DEV分支名称修改为DV(运行git branch -m DEV DV)并显示分支现在看起来像:
! [DV] Style Changes
! [cr232] CR 232 Release
* [dev] Style Changes
---------------
* [DV] Style Changes
* [DV^] SMS 5.4
* [DV~2] Logo Change
* [DV~3] SMS 5.3
* [DV~4] SMS 5.2
* [DV~5] SIT R-0.3.3 EDW SMS Layers
* [DV~6] SIT Release R 0.3.0
+* [cr232] CR 232 Release
+* [cr232^] Dashboard Fix
+* [cr232~2] Release for system testing
Run Code Online (Sandbox Code Playgroud)
请注意,该分支现在包括DV和dev.另请注意,对dev的第5行引用现已更改为DV(即DV,DV ^,DV~2等).
有什么办法可以回到DV引用期间的原始状态吗?这个git是否被混淆了,并且用一个类似的分支重命名了我的历史信息,只是根据大写情况而有所不同?
请协助我如何解决这个问题.谢谢堆
tor*_*rek 40
回答主题中的问题,没有解决任何问题git show-branch(比如ElpieKay,我从未实际使用过git show-branch;它似乎主要是错误的信息):
Git的分支名称和标签名称,和所有其他的参考名称,如GIT中称他们,最初打算是区分大小写的.
这一切都完全适用于Linux/Unix机器,其中Git的代码首先区分大小写.当Git将分支名称作为文件名存储在文件系统中时(有时只有它),文件系统也区分大小写.1
它有时会在Windows和某些MacOS系统上失败.具体来说,当Git在单个文件中存储引用时,它会失败,这些文件的名称是从引用名称派生的,并且这些文件名不区分大小写(例如,保留大小写,但在名称匹配期间折叠大小写;或者甚至将所有内容转换为大写 - 只有在真正的旧FAT 8.3格式中,但我们希望没有现代文件系统这样做).
如上所述,Git并不总是将引用名称存储为文件名.事实上,初始克隆,所有的名字都叫做一个文件.git/packed-refs,2所以在这一点上,他们是区分大小写的.但是,他们成为"解包"随着时间的推移,3,然后在某些系统上,他们是大小写折叠.
因为它有时在某些系统上失败,所以通常最好避免使用仅在大小写上不同的多个引用名称.
1当然,在现代Unix/Linux系统上,您现在可以访问保留大小写但不区分大小写的文件系统,现在可以告诉Windows和MacOS不要对某些文件系统进行大小写折叠.(但是如果你改变了默认设置,那么期望用于你的盒子的软件会失败,因为它会发生.像Photoshop这样的内部尝试使用名为的文件foo,FOO并期望这个引用同一个文件!)
2这个打包引用文件已存在很长一段时间了,但并非永远存在,Git的早期版本可能不会使用它.在内部,Git正在获取一个新的"可插入引用名称接口",未来的Git版本可能既不使用此文件,也不使用单个每个引用文件.
3通常,创建或更新引用会导致解压缩的引用文件出现.Running git pack-refs --all将使用打包的引用替换未打包的引用,从而恢复完整的区分大小写.没有--all,git pack-refs只包装已经打包的参考,这在很大程度上是一种无用的操作模式(它适用于不再使用的情况).
Elp*_*Kay 10
所以我继续创建新的分支(git branch DEV)
您在分支机构DEV时创建了一个新分支dev.所以DEV并且dev是指向同一提交的两个分支.后改名DEV到DV,现在DV和dev两个分支指向相同的提交.
一切都很好.如果你不想DV打扰你,你可以跑去git branch -d DV删除分支git show-branch.如果你确实想要建立一个新的分支,最好遵循一些不会让你和其他人混淆的命名规则.
我从来没用过git log --oneline --all --graph --decorate=full.DEV绘制清晰的日志图形.
| 归档时间: |
|
| 查看次数: |
17850 次 |
| 最近记录: |