有可能,对merge一个分支并自动delete使用一个命令吗?只有在合并成功时才应执行删除步骤.
我偶尔会看到这种模式,尤其是在有关Bash提示自定义的问题上。
alias f='_ () { useful code; }; _'
Run Code Online (Sandbox Code Playgroud)
我完全没有理由在此处创建别名。明显的重构
f () { useful code; }
Run Code Online (Sandbox Code Playgroud)
这样就避免了完全声明一个别名,而只是简单地一劳永逸地定义了函数,这看起来更简单,更易理解,不那么脆弱且更高效。(以防万一,每次调用别名时,别名最终都会重新声明该函数。)
例如,使Bash别名带有参数?有几个答案可以证明这种技术。使用ftp路径运行lftp的bash脚本是一个有关此函数内部实际功能的问题,其中包含类似这样的代码,尽管我轻描淡写,OP也不解释为什么。
这是否仅仅是一种反模式,还是有实际的理由这样做?在什么情况下该设计有意义?
这与别名后面没有空格有关,也与代码混淆无关(除了这种神秘的技术之外,我发现的示例通常是完全可读的)。
有没有办法在匹配正则表达式的文件中添加所有帅哥?
我知道我可以使用/来搜索给定的块,但是只找到第一个.我想添加所有匹配.
我有以下1-liner,我用它来看看谁可能是一个很好的候选人帮助一些代码:
git log --pretty=short . | grep ^Auth | sort | uniq -c | sort -nr
Run Code Online (Sandbox Code Playgroud)
根据提交的顺序列出作者,它很粗糙,但它可以正常工作.
当我将它添加到我的git配置中时,如下所示:
[alias]
guru=!git log --pretty=short . | grep ^Auth | sort | uniq -c | sort -nr
Run Code Online (Sandbox Code Playgroud)
赛跑
git guru
Run Code Online (Sandbox Code Playgroud)
从命令行运行它会产生不同的结果.
stuart@beavis(rp):~/git/apps$ git log --pretty=short . | grep ^Auth | sort | uniq -c | sort -nr
710 Author: dave <dave@b2368a2b-315f-46b9-a0b0-05934f827f41>
415 Author: pete <pete@b2368a2b-315f-46b9-a0b0-05934f827f41>
402 Author: craig <craig@b2368a2b-315f-46b9-a0b0-05934f827f41>
Run Code Online (Sandbox Code Playgroud)
相比:
stuart@beavis(rp):~/git/apps$ git guru
859 Author: craig <craig@b2368a2b-315f-46b9-a0b0-05934f827f41>
813 Author: paul <paul@b2368a2b-315f-46b9-a0b0-05934f827f41>
798 Author: …Run Code Online (Sandbox Code Playgroud) 是否有可能跳过暂存区域并且(也)在单个内置的命令行命令中将未经跟踪的新文件提交到git?如果没有,有哪些替代方案?
http://git-scm.com/book/en/Git-Basics-Recording-Changes-to-the-Repository
为git commit命令提供-a选项使得Git会在执行提交之前自动暂存已经跟踪的每个文件,让您跳过git add部分:
$ git commit -a -m 'added new benchmarks'
谢谢.
我正在使用Git Bash v1.8.1,带有一些别名(用于测试):
[alias]
ekko = !echo $1 && echo $1
ekko2 = !sh -c 'echo $1 && echo $1'
Run Code Online (Sandbox Code Playgroud)
但是当我运行它们时,我看到:
> git ekko master
master
master master
Run Code Online (Sandbox Code Playgroud)
和:
> git ekko2 master
(blank line)
(blank line)
Run Code Online (Sandbox Code Playgroud)
我的预期行为是:
> git ekko master
master
master
Run Code Online (Sandbox Code Playgroud)
我对别名相当新 - 我正在寻找一种方法来确保我的参数被完全消耗,而不是附加到别名的末尾.一些调查表明这种行为在Git v1.7.x附近发生了变化,我还没有确定如何完成这个:
完成git fetch --all --prune从远程存储库获取refs后,我现在想要查看每个分支上的最新提交origin
命令
git for-each-ref --format='%(refname:short)' | grep 'origin/'
Run Code Online (Sandbox Code Playgroud)
列出所有十六个分支origin,因此我希望以下命令显示每个分支的最新提交
git for-each-ref --format='%(refname:short)' | grep 'origin/' |
xargs git log --source -n 1
Run Code Online (Sandbox Code Playgroud)
(注意,当我运行它时,这是一行;为了便于阅读,我将它拆分为两行.)
但是该命令不起作用,它只列出一个提交:似乎一个提交限制适用于整个列表而不是依次应用于每个分支.
我究竟做错了什么?
(请注意,我也尝试在此处调整解决方案
git for-each-ref --format='%(refname:short)' | grep 'origin/' |
xargs git show --oneline
Run Code Online (Sandbox Code Playgroud)
但是该--oneline标志被忽略,结果太冗长了.)
我想在推送之前确保我的最新提交具有当前日期.因为我总是在合并+推送之前重新掌握,我做了这个别名:
[alias]
sync = !git commit --amend --date=today && git rebase master
Run Code Online (Sandbox Code Playgroud)
问题是,它不断启动我的文本编辑器,要求提交新的提交消息.有没有办法有一个可选参数,以便我可以选择使用:
git sync 'my commit message'
Run Code Online (Sandbox Code Playgroud)
要么
git sync
Run Code Online (Sandbox Code Playgroud)
后者将简单地使用现有的提交消息,无论它发生什么?
我经常发现自己在做的事情是,"重新启动功能分支,合并并删除它".要做到这一点,我运行:
git rebase master feature
git checkout master
git merge feature
git branch -d feature
Run Code Online (Sandbox Code Playgroud)
对于我认为是一种常见工作流程的东西来说,这似乎相当费力.有谁知道更快的方式?
(显然我可以编写一个脚本,但我想知道是否有一个我错过的内置方法.)
在处理 git 项目时,我想在git pull --rebase每个git push. 然而,我团队中的一些开发人员经常忘记在推送之前打电话git pull --rebase。因此,Git/Gerrit 自动执行合并,这会创建格式错误的提交消息。我想避免这种自动合并。
我想配置客户端 git ,以便当开发人员运行 a 时git push, agit pull --rebase应该自动发生。有什么办法吗?