相关疑难解决方法(0)

如何在Git中检索当前提交的哈希值?

我想保留(现在)能够将Git变更集链接到存储在TFS中的工作项.

我已经编写了一个工具(使用Git中的一个钩子),我可以在其中将workitemidentifiers注入到Git变更集的消息中.

但是,我还想将Git提交的标识符(哈希)存储到自定义TFS工作项字段中.通过这种方式,我可以检查TFS中的工作项,并查看与工作项相关联的Git更改集.

如何从Git的当前提交中轻松检索哈希?

git tfs changeset tfs-workitem

1788
推荐指数
18
解决办法
81万
查看次数

如何以编程方式确定是否存在未提交的更改?

在Makefile中,如果存在未提交的更改(在工作树或索引中),我想执行某些操作.什么是最干净,最有效的方法?退出的命令在一种情况下返回值为零而在另一种情况下为非零符合我的目的.

我可以运行git status并输出输出grep,但我觉得必须有更好的方法.

git

205
推荐指数
8
解决办法
8万
查看次数

如何在没有错误的情况下git提交任何内容?

我正在尝试编写一个可以执行的结构脚本git commit; 但是,如果没有提交,git退出状态为1.部署脚本将其视为不成功,并退出.我确实想要检测实际的失败提交,所以我不能仅仅给织物一个忽略git commit失败的问题.如何允许忽略空提交失败,以便部署可以继续,但仍然捕获真正提交失败时导致的错误?

def commit():
    local("git add -p && git commit")
Run Code Online (Sandbox Code Playgroud)

python git fabric

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

如果我的git工作副本很脏,如何停止Xcode Archive构建?

除非我的工作目录是干净的,否则我不希望Archive构建成功.因此,我想在我的Xcode项目中添加一个"运行脚本"构建阶段(或类似的东西),这样:

如果我正在执行存档构建...

并且我的源目录中有未提交的更改

然后构建失败并出现错误.

我正在使用Xcode 4和git 1.7.

什么是一个好的,简洁的,可重用的脚本,可以完成这项工作?

git xcode build xcode4

9
推荐指数
1
解决办法
743
查看次数

要添加到"git status --porcelain"以使其表现得像"git status"?

之前的一个问题产生了一些关于如何检查你的Git repo是否包含脏索引或未跟踪文件的想法.我从讨论中得出的答案如下:

#!/bin/sh
exit $(git status --porcelain | wc -l)
Run Code Online (Sandbox Code Playgroud)

这个答案背后的想法是模仿程序员会做什么:运行git status然后检查输出.

不幸的是git status --porcelain,git status并没有完全相同的事情.特别是,git status将报告未按下的更改,而git status --porcelain不会.这是一个例子

[jarmo@localhost math-hl]$ git status --porcelain
[jarmo@localhost math-hl]$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#   (use "git push" to publish your local commits)
#
nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:我需要添加到原始脚本中以确定何时repo已经未按下更改?特别是,这是一种正确的方法吗?

#!/bin/bash
if [ $(git status --porcelain | wc -l) != …
Run Code Online (Sandbox Code Playgroud)

git

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

在没有慢速差异列表的情况下获取 git status boolean

如果我的 git 目录更改,我有一个 bash PS1 会显示红色,如果没有更改,我会显示绿色。

if [ $? -eq 0 ]; then \
   echo "$(echo `git status` | grep "nothing to commit" > /dev/null 2>&1; \
   if [ "$?" -eq "0" ]; then \
     # @4 - Clean repository - nothing to commit
     echo "\n'$Green'"$(__git_ps1 "(%s)"'$Color_Off'); \
   else \
     # @5 - Changes to working tree
     echo "\n'$IRed'"$(__git_ps1 "(%s)"'$Color_Off'); \
   fi)\$ "; \
 fi)'
Run Code Online (Sandbox Code Playgroud)

这工作正常!但问题是在某些工作目录中非常慢,因为存在许多变化和很大的差异。

在没有完整的情况下获得 git status boolean (yes changed or no changed) 的更好方法是什么?

我试过git status --short …

git

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

在 bash 中检查 git 中的任何更改时 if-then-else 条件的预期行为与在 github actions 工作流程中编写时相反

如果您在没有更改的情况下有提交语句,那么它将返回退出代码 1,这将导致 GitHub 工作流失败。

作为解决方法,我尝试修改此SO 帖子以及此答案中的解决方案,该答案基本上是使用 -

git diff-index --quiet HEAD
Run Code Online (Sandbox Code Playgroud)

在我当地的 bash 上,它按预期工作。当我运行时echo "$?",输出 1 或 0 符合我的预期。

基于该文档和有关在 GitHub 工作流程中设置环境变量的文档,我的工作流程文件中有以下内容 -

git diff-index --quiet HEAD
Run Code Online (Sandbox Code Playgroud)

但是,每当有要提交或跟踪的更改时,环境变量changes_exist就会发生变化false,反之亦然。

这与我的期望恰恰相反。

作为一种解决方法,直到我弄清楚这一点,我使用以下在工作人员中完美运行的方法 -

git diff-index --quiet HEAD || git commit -m "updating datasets"
Run Code Online (Sandbox Code Playgroud)

知道为什么上面的方法有效,而使用的if - then - else行为与它应该的相反吗?

git github github-actions

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

标签 统计

git ×7

build ×1

changeset ×1

fabric ×1

github ×1

github-actions ×1

python ×1

tfs ×1

tfs-workitem ×1

xcode ×1

xcode4 ×1