【问题标题】:Git commands that you like / cant live without [closed]你喜欢/不能没有的 Git 命令 [关闭]
【发布时间】:2011-03-23 20:18:18
【问题描述】:

任何人都有一些应该添加到每个基本安装中的 git gem?一些你不能没有的很酷的命令,因此将它们添加到你的 .gitconfig [别名] 中

ps:看到一些关于其他事情的类似问题,希望这是最好的地方

【问题讨论】:

  • 这个问题必须是社区维基。
  • 我也是这么想的,找不到那个选项
  • @gotgenes, @dogmatic:社区 wiki 选项被禁用的原因是人们出于某种原因认为这是提出不好问题的一种方式。这个问题没有办法给出一个好的单一答案,只能在众多中给出一个像样的答案,而且它的范围很广。 “不是一个真正的问题”的密切原因被描述为:“这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。”这是一个完美的契合。
  • @Jefromi:您认为哪些资格适用于这个问题?我理解问题在问什么(既不模棱两可也不模糊也不完整),这个问题具体与 git 命令有关(不是过于宽泛),作者显然希望得到答复(不是修辞),而且我们已经有了几个合理的答案。这个问题是平庸的,但它仍然很有帮助。我唯一的争论是,因为它不能完全回答,它必须是社区 wiki。

标签: git configuration command-line


【解决方案1】:

最近发现一个我挺喜欢的其实是在git的contrib目录下,所以很容易搞定:叫git new-workdir

它允许您为存储库创建第二个工作目录,而无需复制整个存储库。这使您可以同时在两个独立的分支中工作,这对我来说非常方便。

【讨论】:

  • 酷,关于这个的更多信息,让其他想知道他们需要这个做什么的人......nuclearsquid.com/writings/git-new-workdir.html
  • 另一个注意事项:最近对我来说最方便的地方是当我在两个分支之间切换时,这些分支的差异足以在切换时需要大量重新编译。通过维护两个独立的工作副本,我可以避免在切换分支时重新构建所有内容。
【解决方案2】:

这将为您提供lalc,它们分别向您显示按“作者”或“提交”日期严格排序的在线日志。 pretty 规范中的“u”与“unix 时间戳”相关。 unix 时间戳仅包含在排序和稍后剥离。保留当时的 ISO 版本。

alias.la=! log () { git log --pretty=lau $1 | sort -rn | cut -d " " -f 2- | less ; } ; log  
alias.lc=! log () { git log --pretty=lcu $1 | sort -rn | cut -d " " -f 2- | less ; } ; log
pretty.lau=format:%at %C(dim yellow)%h %C(cyan)%ai%Cgreen%d %Creset%s
pretty.lcu=format:%ct %C(dim yellow)%h %C(cyan)%ci%Cgreen%d %Creset%s

用法是git la <commit specifiers>,因此可以是git lagit la branchgit la C1..C2。但是请注意,.. 仍然以通常的log 方式运行。排序只是后处理。

还有一个:

> cat ~/bin/git-advance 
#!/bin/bash
C="`git log --first-parent --format=%H ..$1 -- | tail -1`"
if [ -z "$C" ]; then
    echo "Could not determine next commit"
    exit 1
fi
git checkout "$C"

当然还有alias.advance=! git-advance。用法是git advance <future-commit>,并将检查从当前HEAD 到给定<future-commit> 的下一次提交。这将导致 HEAD 分离,但我发现它可以方便地将提交从 git 手动传播到另一个 VCS。没有保证,还没有尝试过复杂的历史。

以下是合并冲突中遗漏重命名的实验性内容:

https://gist.github.com/894374

【讨论】:

  • 了解更多关于您如何实现此功能的信息?不是通常的 [别名] ... 我在 .gitconfig 中看到的东西
  • @dogmatic69 ! 使其余部分在 shell 中执行。 log () {... ;} ; log 构造是将git la 的参数放在正确位置的技巧。 git 只会将参数附加到别名。
  • 太棒了,一直在寻找通过 git 树前进的方法。那个会很方便
  • @dogmatic:很多时候,当你认为你想回到历史,然后向前迈进,实际上是git bisect的用例。
【解决方案3】:

我得到的一些(随机网站,不记得在哪里)

对于所有提交的漂亮树状视图:

lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative

获取最后一个提交者

whois = "!sh -c 'git log -i -1 --pretty=\"format:%an <%ae>\n\" --author=\"$1\"' -"

显示最后一次提交

whatis = show -s --pretty='tformat:%h (%s, %ad)' --date=short

【讨论】:

    猜你喜欢
    • 2012-05-01
    • 2020-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-05
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多