相关疑难解决方法(0)

在一个步骤/命令中合并和删除分支

有可能,对merge一个分支并自动delete使用一个命令吗?只有在合并成功时才应执行删除步骤.

git merge branching-and-merging git-branch

30
推荐指数
2
解决办法
2万
查看次数

为什么要创建一个别名来创建函数?

我偶尔会看到这种模式,尤其是在有关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也不解释为什么。

这是否仅仅是一种反模式,还是有实际的理由这样做?在什么情况下该设计有意义?

这与别名后面没有空格有关,也与代码混淆无关(除了这种神秘的技术之外,我发现的示例通常是完全可读的)。

bash shell alias sh

20
推荐指数
3
解决办法
436
查看次数

在git中添加补丁,所有帅哥都在文件中匹配正则表达式

有没有办法在匹配正则表达式的文件中添加所有帅哥?

我知道我可以使用/来搜索给定的块,但是只找到第一个.我想添加所有匹配.

git

17
推荐指数
3
解决办法
1583
查看次数

为什么运行命令作为git别名给出不同的结果?

我有以下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

13
推荐指数
3
解决办法
921
查看次数

是否有可能跳过暂存区域并(还)提交未经跟踪的新文件到git?

是否有可能跳过暂存区域并且(也)在单个内置的命令行命令中将未经跟踪的新文件提交到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 git-add git-untracked

10
推荐指数
2
解决办法
1万
查看次数

Git别名将参数附加到结尾

我正在使用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 Alias - 多个命令和参数

git

8
推荐指数
2
解决办法
661
查看次数

使用`git for-each-ref`和`git log`在源上的每个远程分支上显示最近的提交

完成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标志被忽略,结果太冗长了.)

git

8
推荐指数
3
解决办法
3704
查看次数

带有可选参数的git别名

我想在推送之前确保我的最新提交具有当前日期.因为我总是在合并+推送之前重新掌握,我做了这个别名:

[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 parameters alias

7
推荐指数
2
解决办法
3388
查看次数

有没有更快的方法来集成功能分支?

我经常发现自己在做的事情是,"重新启动功能分支,合并并删除它".要做到这一点,我运行:

git rebase master feature
git checkout master
git merge feature
git branch -d feature
Run Code Online (Sandbox Code Playgroud)

对于我认为是一种常见工作流程的东西来说,这似乎相当费力.有谁知道更快的方式?

(显然我可以编写一个脚本,但我想知道是否有一个我错过的内置方法.)

git version-control

6
推荐指数
1
解决办法
151
查看次数

Git - 推送时自动变基

在处理 git 项目时,我想在git pull --rebase每个git push. 然而,我团队中的一些开发人员经常忘记在推送之前打电话git pull --rebase。因此,Git/Gerrit 自动执行合并,这会创建格式错误的提交消息。我想避免这种自动合并。

我想配置客户端 git ,以便当开发人员运行 a 时git push, agit pull --rebase应该自动发生。有什么办法吗?

git push pull rebase gerrit

5
推荐指数
1
解决办法
2437
查看次数