在测试Git存储库中,git log产生:
commit e1f972f22f9906ad62007b4e372d8dc06bc47656
Author: davidandreoletti
Date: Sun Mar 18 11:23:09 2012 +0800
Added 0
commit 81a07eeffc58b054d4c083a0d7c1d4aa0b0440d5
Author: davidandreoletti
Date: Sun Mar 18 10:46:44 2012 +0800
first commit
Run Code Online (Sandbox Code Playgroud)
并且git tag 0.0.2是一个指向commit的轻量级标记81a07eeffc58b054d4c083a0d7c1d4aa0b0440d5.所有提交都已推送到远程存储库(包含标签).
在这种情况下,如何使现有的Git"轻量级标记"指向另一个提交?即我希望标记"0.0.2"指向提交e1f972f22f9906ad62007b4e372d8dc06bc47656而不是81a07eeffc58b054d4c083a0d7c1d4aa0b0440d5
我在GitHub上的第一个真正认真的项目已经在不久前进行了一次完整的堆栈更改 - 从Python到NodeJS.但是,当时是一个完整的git noob,我创建了一个包含所有Python代码的分支,然后删除了主分支上的所有内容,并开始在NodeJS中实现系统.
现在我仍然是一个git noob,但我意识到我应该使用标签而不是分支.所以我把这个old_python分支挂在那里,这让我很烦.
我怎样才能摆脱那个分支,但仍然能够快速查看将成为标签的Python代码?我不打算向Python代码库提交任何内容,因此分支似乎是不必要的.
或者,也许,我完全误解了标签的用途,应该留下/做其他事情.
我知道git fetch --tags会将所有标签从远程获取到本地。
我不确定git pull默认情况下是否会从远程获取标签,所以会吗?
我有几个git存储库.
对于每个项目,我需要其中的一些(标签或分支).
项目完成后,我从上次提交创建一个分支.
因为下一个项目可能会有根本性的变化,所以它们可能不再相互兼容.
但是,最好先标记提交,然后在需要之后创建一个分支(错误修复等)吗?
它甚至重要吗?
所以我读过Git:如何找出哪个分支标签?和许多其他帖子,我已经知道如何使用:
git branch --contains tag
但是,我仍然需要知道如何在特定存储库中列出包含给定提交(或标记)的分支.
我archive使用以下方法从远程存储库中提取了一个标记列表:
git ls-remote --tags archive
Run Code Online (Sandbox Code Playgroud)
现在,对于每个提取的标签,我希望得到包含分支的列表.使用命令:
git branch --contains tag
没有帮助,因为找不到标记,因为它们在origin存储库中不存在.
如何将所有带注释的标签从本地存储库推送到远程,而不推送轻量级标签?
我在本地使用轻量级标签,我不想推送这些标签,所以这git push --tags不是解决方案。
我知道,git push --follow-tags但这只会推送与当前推送的提交相关的标签。
我需要这个选项,因为我的正常工作流程涉及不时推送,但仅在完成发布时进行标记,有时我会忘记推送标签。这个问题通常在很长一段时间内未被发现,并导致其他开发人员感到困惑,因为我们与标签不同步。
由于列出哪些带注释的标签存在于本地而不是远程很复杂,我想通过推送所有本地带注释的标签来解决这个问题,这将确保所有开发人员的本地和远程存储库具有相同的带注释的标签。
长话短说,我正在编写一个脚本,将一个非常大的项目从(gasp)Microsoft SourceSafe迁移到Git,并且我试图保留SourceSafe项目标签的作者(这些标签实际上是Git中的标签)。我知道您可以修改Git提交的作者和提交者名称/日期,但是您可以对Git标签做同样的事情吗?
在我的项目中,我检查了github上的composer.lock文件。假设我需要在 composer.json 中有一个健康的依赖项,例如:
"require": {
"foo/bar": "v3.0"
},
Run Code Online (Sandbox Code Playgroud)
在我调用composer install之后,会创建一个 composer.lock 文件。
"packages": [
{
"name": "foo/bar",
"version": "v3.0",
"source": {
"type": "git",
"url": "https://github.com/foo/bar.git",
"reference": "bbafb0edb791b23220563d113d00371ea42aedaa"
},
"type": "project",
"license": [
"MIT"
],
"authors": [
{
"name": "Mr.Foo",
"email": "mr.foo@bar.de"
}
],
"time": "2019-09-30T12:13:55+00:00"
}
Run Code Online (Sandbox Code Playgroud)
假设拥有 foo/bar 存储库的攻击者将删除 v3.0 标签。攻击者会为 v3.0 命名一个不同的提交。有人可以确认composer install将始终检查 composer.lock 安装依赖项吗?如果我在没有composer.lock文件的情况下运行composer install,composer 将创建一个带有新引用(提交 ID)的新 .lock 文件。如果我使用composer.lock文件运行composer install,composer 将坚持提交 ID(“reference”:“bbafb0edb791b23220563d113d00371ea42aedaa”,旧版 …
我正在尝试排序git tag。通过Google搜索,我发现很多帖子都在谈论taggerdate,但在我的仓库中,taggerdate总是空的:
$ /usr/bin/git for-each-ref --format "%(refname) | %(subject)| %(taggerdate) | %(authordate)" refs/tags
refs/tags/hello | Merge branch 'featureY' into 'master'| | Sun Jan 19 23:36:30 2020 -0800
refs/tags/v3.0 | Revert "aaaaaaa"| | Wed Jul 3 15:09:20 2019 +0800
refs/tags/v4.0 | feat: a big enhancement| | Wed Jul 3 15:12:49 2019 +0800
refs/tags/v5.0 | feat: hello world. Closed [RNWY-56].| | Wed Jul 3 15:29:13 2019 +0800
refs/tags/v6.0 | feat: hello world. Closes [RNWY-56].| | Wed …Run Code Online (Sandbox Code Playgroud) git-tag ×10
git ×9
git-branch ×3
branch ×1
composer-php ×1
git-pull ×1
git-push ×1
github ×1
gitlab ×1
php ×1