相关疑难解决方法(0)

使用Git检查脏索引或未跟踪文件

如何检查我的git存储库中是否有任何未提交的更改:

  1. 更改已添加到索引但未提交
  2. 未跟踪的文件

从脚本?

git-status git版本1.6.4.2似乎总是返回零.

git shell

236
推荐指数
7
解决办法
7万
查看次数

如果执行shell失败,请不要失败jenkins build

作为构建过程的一部分,我正在运行git commit作为执行shell步骤.但是,如果工作区中没有更改,Jenkins将无法进行构建.这是因为当没有提交更改时,git返回错误代码.我想要中止构建,或者只是在这种情况下将其标记为不稳定.有任何想法吗?

jenkins

110
推荐指数
11
解决办法
14万
查看次数

如果有变化,如何让Jenkins git提交?

我有一个Jenkins作业,它使用Maven(mvn clean install)从github.com存储库的主分支构建,然后检查Java文件中的许可证头和缺少的NOTICE文件,并在必要时添加它们(mvn license:format notice:generate).有时这会导致更改或添加文件,有时不会.

每当有已作出(由许可证插件)的任何改变我要推更改到GitHub库.

现在我无法弄清楚如何最好地实现这一目标.我在Maven许可插件之后添加了一个shell构建步骤,执行git命令:

git add . # Just in case any NOTICE files have been added
git commit -m "Added license headers"
Run Code Online (Sandbox Code Playgroud)

git add .单独工作,即不会破坏构建,即使没有添加任何文件.但是,git commit如果根本没有任何更改,请中断构建.

我不担心回到github,因为我相信Git Publisher的后期构建操作可以为我做这件事.有人可以指点我正确的git提交方向吗?

git bash build jenkins

11
推荐指数
3
解决办法
7610
查看次数

在 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 提交可以在命令行中使用,但在 golang 代码中会失败

我正在尝试执行下面提到的代码。代码创建一个分支,然后从工作树目录完成工作树和提交

代码失败并出现以下错误:

error= exit status 1
Run Code Online (Sandbox Code Playgroud)

如果我直接从命令行执行提交(Cmd3),它工作正常:

sh-3.2# /usr/bin/git -C /Users/gitissue/folder1/Outer commit -m Commiting-from-folder1-Outer
On branch Outer
nothing to commit, working tree clean
Run Code Online (Sandbox Code Playgroud)

脚步:

  1. 创建文件夹 /Users/gitissue
  2. cd /用户/gitissue
  3. git初始化
  4. 触摸t.txt
  5. git 添加 .
  6. git commit -m“提交”
  7. mkdir -p /用户/gitissue/folder1
  8. 执行下面提到的go代码

环境详情:

  • 苹果系统
  • git 版本 2.37.0
  • go版本go1.18.1 darwin/amd64

代码:

package main

import (
"fmt"
"io"
exec "os/exec"
)

func main() {

Cmd := exec.Command("git", "-C", "/Users/gitissue", "branch", "Outer")
fmt.Print("Cmd1= " + Cmd.String())
err := execBashCmd(Cmd)
if err != nil {
    fmt.Print("error1= …
Run Code Online (Sandbox Code Playgroud)

git go git-worktree

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

如何使用永久退出0状态进行git commit?

在Travis-ci中,我正在使用此命令。

git push origin HEAD:${TRAVIS_PULL_REQUEST_BRANCH:-$TRAVIS_BRANCH}

除非没有什么可提交的,否则所有这些工作都很好(响应:)Everything up-to-date

在我的情况下,这是一个很好的响应,但是它导致:exited with 1.这是我想避免的事情。无论它是否能够提交还是全部更新,我都希望做出回应exit 0

我怎样才能做到这一点?

更新:
正如@Mort在评论中所提到的,它|| true可以工作,但是现在我始终具有积极的退出状态。我只想更改的Git退出代码Everything up-to-date

git travis-ci

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

标签 统计

git ×5

jenkins ×2

bash ×1

build ×1

git-worktree ×1

github ×1

github-actions ×1

go ×1

shell ×1

travis-ci ×1