相关疑难解决方法(0)

为什么我的 git pre-commit 钩子没有从行尾修剪空白?

我在 Mac Mojave 上。我在 ~/.git-templates/hooks/pre-commit 创建了一个文件,我想从我提交的文件的行尾删除空格。我希望这能在我所有的项目中在全球范围内发生。

# A git hook script to find and fix trailing whitespace in your commits. Bypass
# it with the --no-verify option to git-commit.

# detect platform
platform="win"
uname_result=`uname`
if [[ "$uname_result" == "Linux" ]]; then
  platform="linux"
elif [[ "$uname_result" == "Darwin" ]]; then
  platform="mac"
fi

# change IFS to ignore filename's space in |for|
IFS="
"

# remove trailing whitespace in modified lines
for line in `git diff --check --cached | sed '/^[+-]/d'` ; …
Run Code Online (Sandbox Code Playgroud)

git whitespace pre-commit-hook

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

更新版本控制上的 pre_commit 挂钩文件

我最近更新了我的pre_commit.sample文件以在提交时运行 rubocop(重命名为 pre_commit)。

#!/bin/sh
#
# Check for ruby style errors
rake run:rubocop
Run Code Online (Sandbox Code Playgroud)

我错误地认为这会在拉取更改时在其他开发人员计算机上更新。我如何确保任何提取更改的人都更新了其 pre_commit 文件

谢谢

git githooks

6
推荐指数
2
解决办法
2957
查看次数

可以在git hook中自定义GIT_COMMITTER_DATE吗?

我想手动控制git commit时间戳,以便我的GIT_COMMITTER_DATE始终与GIT_AUTHOR_DATE匹配。我已经看到许多使用filter-branch重写历史记录的解决方案,但是我宁愿对此保持主动,并将逻辑放在git hook中,以便它始终与向前匹配。

但是我发现,虽然这些变量如果在调用git的环境中定义时可以很好地工作,但是在预提交git钩子中定义它们时似乎没有任何作用。例如:

# this works if run directly on cmd line, but not inside the pre-commit hook
export GIT_AUTHOR_DATE='Mon, 11 Aug 2014 11:25:16 -0400'
export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"
Run Code Online (Sandbox Code Playgroud)

有什么方法可以在git钩子内动态调整这些值,以使提交自动具有所需的时间戳?我正在使用git版本1.8.5.2

git githooks

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

如何在git gui中逐行登台,尽管"文件末尾没有新行"警告

我使用git gui来选择要为提交暂存的行.这通常像魅力一样.我知道在命令行上执行相同操作的选项.

每当文件最初在文件末尾没有新行时,git gui会识别出这一点并在编辑器中附加警告消息,如屏幕截图所示.

Git Gui

问题

缺少换行符导致的问题是人们不能再分段和提交单独的行.当我右键单击以选择特定行并Stage line for commit从上下文菜单中选择时,会弹出一条错误消息.

错误:致命:第11行腐败的羊皮纸.

该问题并非特定于操作系统,可以在Windows,MacOSX和Linux上重新生成.我知道如果我在文件中添加新行并在继续选择单行之前提交此版本,我可以避免此问题.

重现问题的步骤

  1. 初始化新存储库.
  2. 创建一个包含三行内容的文件,每行包含"Hallo"一词.不要在文件末尾添加新行.
  3. 添加并提交文件.
  4. 编辑相同的文件,在三行之间放置单词.
  5. 打开git gui并尝试逐行进行更改.

请求

我想知道Git是否有一些配置允许我绕过这个问题.一些自动化,例如添加所需新线的钩子也可以.

错误报告

我向Git邮件列表发送了一个错误报告.您可以关注并参与此处的讨论.

git newline git-gui line-by-line git-index

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

我使用几台具有不同gitconfig的计算机.如何停止将我的电子邮件地址泄露给GitHub?

我在那里工作的计算机$HOME/.gitconfiguser.emailRotatingPieces@work.tld.我家的电脑已经$HOME/.gitconfiguser.emailRotating.P@SuperKawaiiAnimeWeb.net.并且有虚拟机R.Pieces@DogeMemes.net.而笔记本电脑......

这些电子邮件地址对于克隆在这些计算机上的大多数存储库都是正确的.但有时我会混淆我在什么机器上做的事情.在家里和其他方面做工作.

因此,当我在我的公共GitHub/BitBucket/GitLab/Whatever仓库中执行某些操作时,我会提交为RotatingPieces@work.tld.在家工作会创建提交Rotating.P@SuperKawaiiAnimeWeb.net.因此我偶然将这两个电子邮件地址链接在一起.它总是偶然发生.

有办法阻止这个吗?在不同的计算机上使用相同的存储库时,我该怎么做才能阻止自己泄露我的电子邮件地址?

不起作用的事情:

  • 更改$HOME/.gitconfig文件.这些电子邮件地址对于克隆在这些计算机上的大多数存储库都是正确的.
  • git commit --author=....我会一直忘记这个--author选项.
  • .git/config在克隆的存储库中设置电子邮件地址.这仅适用于此存储库的此计算机.我必须记住,每次我创建一个新的克隆库.太容易忘记.

最好的解决方案是服务器端或客户端提交挂钩,您可以将其提交到存储库,然后由git运行.或者我可以在GitHub Web UI中激活一些钩子或电子邮件地址过滤器.然而,出于明显的滥用原因,可能不存在这样的事情.

有人对解决方案有任何想法吗?

git privacy

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

如何在linux上安装最新的git core?

我正在尝试在 linux (debian/ubuntu) 上安装最新的 git

我试过

sudo apt-add-repository ppa:git-core/ppa
sudo apt-get update
sudo apt-get install git
Run Code Online (Sandbox Code Playgroud)

它让我

git --version
git version 2.7.4
Run Code Online (Sandbox Code Playgroud)

但根据这篇文章:/sf/answers/26071/​​93198 存在更新的版本。

https://github.com/git/git/blob/master/RelNotes

git version-control ubuntu apt debian-based

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