我想颠倒文本文件(或stdin)中行的顺序,保留每行的内容.
所以,即从以下开始:
foo
bar
baz
Run Code Online (Sandbox Code Playgroud)
我想结束
baz
bar
foo
Run Code Online (Sandbox Code Playgroud)
是否有标准的UNIX命令行实用程序?
我去年从Subversion转到Git作为我的日常VCS,我仍在努力把握"Git-think"的细节.
最近困扰我的那个是"轻量级"与注释与签名标签.对于所有实际用途来说,注释标签优于轻量级标签似乎是普遍接受的,但我发现为什么情况的解释似乎总是归结为"因为最佳实践"或"因为它们是不同的".不幸的是,这些都是非常不满意的论据而不知道为什么它是最佳实践或这些差异如何与我的Git用法相关.
当我第一次切换到Git时,轻薄的标签似乎是自切片面包以来最好的东西; 我可以指出一个提交并说"那是1.0".我很难掌握标签如何比这更好,但我当然不能相信世界的Git专家更喜欢任意注释标签!那么喧哗什么呢?
(奖励积分:为什么我需要签署一个标签?)
编辑
我已经成功地确信注释标签是一件好事 - 知道谁标记,何时重要!作为后续行动,有关良好标签注释的任何建议吗?两者都git tag -am "tagging 1.0" 1.0试图总结提交日志,因为上一个标记感觉就像丢失策略一样.
是否有一个衬垫向我显示所有git轻量级标签创建的日期?
像这样的东西:git show tags --format=date?
当我输入命令时:
git tag -l
Run Code Online (Sandbox Code Playgroud)
我得到了这样的结果:
rc-0.9.0.0
rc-0.9.0.1
rc-0.9.0.10
rc-0.9.0.11
rc-0.9.0.12
rc-0.9.0.2
rc-0.9.0.3
rc-0.9.0.4
rc-0.9.0.5
rc-0.9.0.6
rc-0.9.0.7
rc-0.9.0.8
rc-0.9.0.9
Run Code Online (Sandbox Code Playgroud)
而不是我想要的:
rc-0.9.0.0
rc-0.9.0.1
rc-0.9.0.2
rc-0.9.0.3
rc-0.9.0.4
rc-0.9.0.5
rc-0.9.0.6
rc-0.9.0.7
rc-0.9.0.8
rc-0.9.0.9
rc-0.9.0.10
rc-0.9.0.11
rc-0.9.0.12
Run Code Online (Sandbox Code Playgroud)
如何对当前列表进行排序以获得此类结果?
为什么git log --decorate每次提交不显示多个标记?
编辑:Charles Bailey提出了答案(至少在我的情况下)
基本上,我有一个标签指向另一个指向提交的标签.由于这个额外的间接层,标记未显示在日志中.我将不得不解决这个问题,通过修复我们的标记脚本来正确标记,或者通过一些shell脚本voodoo来递归跟踪标记.无论如何,我会留下这个问题仅供参考,万一有人想要它.(我是堆栈溢出的新手,但我认为这是正确的协议?)
背景故事:我们在工作中使用GIT进行源代码控制,我们的策略是在部署时始终标记提交.(它实际上是一个执行标记的脚本,然后在服务器上提取标记).由于它是一个具有单独的登台和生产服务器的Web应用程序,因此我们经常标记一个版本用于登台(用于测试或其他),然后标记相同的提交以进行生产.
所以我们经常在同一次提交中拥有多个标签.能够在文本日志中看到这一点会非常好,但它似乎不支持它.我目前正在解决这个问题,通过手动检查我正在寻找的标签,或通过启动gitk.虽然这两种解决方案都有效,但在我看来git log --decorate,默认情况下每次提交仅支持一个标记真的很奇怪.
我做了一些谷歌搜索,但没有找到太多.我错过了一些明显的东西吗
PS(我实际上使用自定义格式字符串%d,根据手册页和一些快速测试,它相当于--decorate)
我有一个使用git的项目,并使用标记标记了所有版本.
$ git tag
v1.0.0
v1.0.1
v1.0.2
v1.0.3
v1.1.0
Run Code Online (Sandbox Code Playgroud)
我的目标是在Web界面中列出发布和发布日期(标记/提交日期=发布日期).目前我们使用列出所有版本git tag.
如何获得标签制作时(或指向的提交)的时间和日期?
输出git tag按字母顺序排序.我希望它按时间顺序排序(它们被分配的提交日期,而不是它们被创建的日期),否则输出应该保持不变.
我已经尝试过来自http://networkadmin20.blogspot.de/2010/08/howto-list-git-tags-by-date.html的建议,但订单仍然相同.
为了确保它不是我的存储库的错误,我尝试使用干净的存储库:
soeren@ubuntu ~/Projects/sandbox % mkdir chronogit
soeren@ubuntu ~/Projects/sandbox % cd chronogit
soeren@ubuntu ~/Projects/sandbox/chronogit % git init
Initialized empty Git repository in /home/soeren/Projects/sandbox/chronogit/.git/
soeren@ubuntu ~/Projects/sandbox/chronogit (git)-[master] % touch a
soeren@ubuntu ~/Projects/sandbox/chronogit (git)-[master] % git add a
soeren@ubuntu ~/Projects/sandbox/chronogit (git)-[master] % git commit -m 'a'
[master (root-commit) f88e0e9] a
0 files changed
create mode 100644 a
soeren@ubuntu ~/Projects/sandbox/chronogit (git)-[master] % git tag 'A-first'
soeren@ubuntu ~/Projects/sandbox/chronogit (git)-[master] % git mv a b
soeren@ubuntu ~/Projects/sandbox/chronogit (git)-[master] % …Run Code Online (Sandbox Code Playgroud) 当你有本地git repo时,有很多方法可以获得最新的标签.
但我想得到远程回购的最新标签列表.
我知道"git ls-remote",当你使用像xyz这样的标签时,一切都很好(其中x,y,z是数字).但是当标签看起来像"test-xyz"和"dev-xyz"时,我注意到大量的"测试"标签会拔出任何新的"dev"标签,这是不正确的.
那么,你想怎么解决这个问题呢?
我想知道在Git中是否可以检索标签列表(很像git tag命令的结果),但列表应该仅限于某个分支.
如果可以,有人可以解释这是怎么做的吗?也许有一些模式匹配魔法?
我的印象是标签会像提交一样,如果我有一个基于旧提交的克隆,我不希望看到git标签输出中列出的新标签.
但是,这种假设显然是错误的.它破坏了我计划使用标签的方式.我正在使用简单的标签.其他类型的标签会在时间上有所不同吗?