- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
为什么 git status 和 git show 不一致?
存储库应该位于标签中。这是 git status 告诉我的(散列从 609b 开始)。
但是 git show 告诉我它正在提交,哈希值从 156f 开始。
目前的情况是执行以下操作以获取标签处的代码库。
git clean -f && git reset HEAD --hard && git fetch && \
git fetch --tags && git checkout daily-build-492 && git pull
为什么不一致?
一些诊断:
$ git status
HEAD detached from daily-build-492
nothing to commit, working directory clean
$ git rev-list -n 1 daily-build-492
609b538fb0180b170170be09312fecf5a5240b6a
$ git show
commit 156f9e6b3fbfe7c16e8d821efd315428610043c2
Merge: ec154d9 15e8876
Author: ubuntu <ubuntu>
Date: Wed Dec 2 14:09:23 2015 +0000
Merge branch 'deploy-server'
$ git describe --tags --exact-match
fatal: no tag exactly matches '156f9e6b3fbfe7c16e8d821efd315428610043c2'
$ git log --tags --simplify-by-decoration --pretty="format:%ai %d" |grep 492
2015-11-23 07:05:18 +0000 (tag: daily-build-492)
最佳答案
我认为您同时被两个问题搞糊涂了。首先,您处于分离的 HEAD 状态。 Daily-build-492 是一个标签,您不能对标签进行更改。如果你在 master 中 checkout 标签(例如)git 会首先给你这样的消息:
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b new_branch_name
这基本上就是您在执行 git checkout daily-build-492
时可能做的事情。如果您现在执行 git status,您将收到一条如下所示的消息:
$ git status
HEAD detached at daily-build-492
之后,您连接(使用 &&)一个 pull 命令,该命令从链接的远程获取更改。我的猜测是,因为这会添加对标签的更改并且因为这是不允许的,所以您会自动从 daily-build-492 分离到更远的边缘 :) 现在通知将是:
$ git status
HEAD detached from daily-build-492
nothing to commit, working directory clean
如您所见,这正是您的 git status 在您执行初始命令后实际告诉您的内容。
Git status 只显示索引文件和当前 HEAD 之间的所有差异。这基本上意味着与 HEAD 相比,您所做的所有更改都是全新的文件、更改或阶段性更改。基本上你是 git status 告诉你没有变化,你已经脱离了 HEAD。
Git 显示
git show 做了一些不同的事情。 Git show 显示对象的信息。 git 中的一个对象可以是很多东西;一个提交,一个标签,一棵树等。如果你不给 git show 一个对象散列行为似乎是 git show 最后一次提交。这是您在 checkout 标签后 pull 入的提交。使您进入分离 HEAD 模式的提交之一。
简单重现您的问题
git init test.git
cd test.git
touch A
git add A
git commit -m "A, jay"
touch B
git add B
git commit -m "B, jay"
git tag TAG-1
git checkout TAG-1 //Now you will get the notice about git detached HEAD etc
git status // result below
//HEAD detached at TAG-1
//nothing to commit, working directory clean
touch C
git add C
git commit -m "C, shoopdawhoop" // a warning like below is outputted,but it works
//[detached HEAD eda8080] C
// 1 file changed, 0 insertions(+), 0 deletions(-)
// create mode 100644 C
git status // output below again
// HEAD detached from TAG-1
// nothing to commit, working directory clean
git show // will now tell us about commit C the last one we added.
// commit eda808088594ae7b05ae1b57ffd95f7f810a9091
// Author: a@example.net <a@example.net>
这一小组命令基本上模仿了我认为您所做的。也许命令的 && 串联使输出静音,也许没有但您没有发布。这个故事的寓意是你试图做一些 git 不允许的事情。
正如您在示例中看到的,这解释了为什么您的 git describe --tags
没有产生任何结果,因为您给它提供了提交 C 的哈希值(不是真的,但它类似于提交C 在我的例子中。)
您的 git rev-list
确实给了您所期望的,因为您特别要求它用于 daily-build-492 中的最后一次提交。
关于git - 为什么 git status 和 git show 不一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34045598/
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Recreating a Dictionary from an IEnumerable 在 Dictiona
是否可以使用命令行版本的 ImageMagick 修剪图像(比如带有 alpha 的 PNG),使输出图像的宽度和高度都是偶数(不是奇数)? 准确地说,应该先修剪输出图像,然后用透明像素填充。我需要这
我有一个订单的Map,可以由许多不同的线程访问。我想控制访问,所以考虑以下简单的数据结构+包装器。 public interface OrderContainer { boolean cont
我有以下代码,现在只是 div 中的一个 Logo ,但我正在尝试添加一些导航单元格,稍后我将对其进行样式设置。问题是,我似乎无法让它们与(除此之外) Logo “一致”,它们总是下降到下一行。我做错
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 9 年前。 Improve this qu
有没有办法将种子值传递给 d3-cloud 或其他基于 javascript 的标签云,以使其在页面加载之间保持一致? 我们的客户希望使用标签云作为导航/发现辅助工具,但由于 d3-cloud 会在每
我有一条由用户使用 D3.js 绘制的路径。 我想在我的用户绘制路径上定义一个破折号数组,但是,随着它改变其形状和长度,破折号的行为不一致并且间隙在移动并变得越来越小。 这是一个代码笔: https:
只是为了研究UINavigationBar和UIStatusBar的UI,我把Navigation Bar Style改成了Black,并且取消勾选Bar visibility,即Shows Navi
我最近在我的家用机器 (OSX 10.9) 和我的远程服务器 (Ubuntu 12.04 64 位) 上安装了 unison。 我在这两个地方都安装了 2.40.102 版本。我在我的 Mac 上使用
我正在使用 migrate 创建 SQL 数据库模式并用初始数据填充它。后来使用 SQLAlchemy 来处理这个数据库。 我如何测试我的 SQLAlchemy 模型是否与 migrate 生成的真实
道歉对这一切来说还是新鲜事。我正在创建一个网页,并在两个单独的 div 中将图像和文本并排放置。我已经设法将它们放在页面上我想要的位置,但是当我调整页面大小时,文本会调整大小,但图像不会。我希望文本底
在翻阅Cassandra和HBase的阅读资料时,我发现Cassandra并不一致,但HBase是一致的。没有找到任何合适的阅读 Material 。 有人可以提供有关此主题的任何博客/文章吗? 最佳
我需要计算 MacOS 中文件夹的大小。该尺寸值必须与 Finder 一致。我尝试了几种方法来做到这一点。但结果总是与Finder不同。 以下方法是我尝试过的。 typedef struct{
问:我可以使用 C++ 中的任何编译时机制来自动验证模板类方法集是否从类特化到特化相匹配? 示例:假设我想要一个类接口(interface),它根据模板值专门化具有非常不同的行为: // forwar
我想使用 SelectKBest 选择前 K 个特征并运行 GaussianNB: selection = SelectKBest(mutual_info_classif, k=300) data_t
我想要一个位于页面中央的 div,其中包含一行(两个单词)的 h1 文本,并且该文本与 div 的长度对齐;意思是,字母留出空间(同时保持它们的大小)以占据 div 的整个宽度,并且不要超出 div。
我试图更新我的服务器,所以我通过 ssh 运行以下命令: sudo do-release-upgrade 我收到以下错误: Errors were encountered while processi
我想验证单应矩阵会给出好的结果,而这个 this answer 有答案 - 但是,我不知道如何实现答案。 那么谁能推荐我如何使用 OpenCV 计算 SVD 并验证第一个奇异值与最后一个奇异值的比率是
我最近更新到 cocoapods 0.36 并对内部规范做了一些更改,现在 podspec 不再有效。我用 0.35 验证了此规范的先前版本 (0.3.8),但使用 0.36 失败。很明显 cocoa
我有两个并排设置的 TableView ,我需要它们同时滚动。因此,当您滚动一个时,另一个也会同时滚动。 我进行了一些搜索,但找不到任何信息,但我认为这一定是有可能的。 我的 TableView 都连
我是一名优秀的程序员,十分优秀!