.gitignore
可以忽略整个文件,但是否有一种方法在编码时忽略特定行的代码?
我在项目中经常重复添加相同的调试代码行,只需记得在提交之前删除它们。 我想保留这些行的代码,并让 git 忽略它们。
<project root>/.gitattributes
(将被提交到仓库)<project root>/.git/info/attributes
(不会被提交到仓库)*.rb filter=gitignore
,即在所有*.rb
文件上运行名为gitignore
的过滤器gitconfig
中定义gitignore
过滤器:
$ git config --global filter.gitignore.clean "sed '/#gitignore$/d'"
,即删除这些行$ git config --global filter.gitignore.smudge cat
,即从仓库拉取文件时不进行任何操作#gitignore
结尾时,此方法适用于ruby文件,在~/.gitconfig
中全局应用。根据您的需求进行修改。git stash save "proj1-debug"
(暂时在gitconfig
或其他地方禁用它)。这样,我的调试代码可以随时git stash apply
到我的代码中,而不必担心这些行会被意外提交。git config --global filter.gitignore.clean sed '/#gitignore$/d'
,因为你已经将过滤器命名为 gitignore
。 - Onur Yıldırımflags = foo | bar
更改为flags = foo | bar | debug_thingy
,则必须确保在之后添加一个全新的行,如flags |= debug_thingy
。 - Katgit config --global filter.gitignore.clean "sed 's/.*gitignore//'"
并替换这样的代码 , var x = replaced #gitignore var x = 42
。所以在 #gitignore
后面的内容将替换该行,因此必须保留 #gitignore
后面的缩进。 - Jp_"sed '/^# start git-block-ignore/,/^# end git-block-ignore/d;'"
。 - Jp_#!/bin/bash
#
# This hook will look for code comments marked '//no-commit'
# - case-insensitive
# - dash is optional
# - there may be a space after the //
#
noCommitCount=$(git diff --no-ext-diff --cached | egrep -i --count "(@No|\/\/\s?no[ -]?)commit")
if [ "$noCommitCount" -ne "0" ]; then
echo "WARNING: You are attempting to commit changes which include a 'no-commit'."
echo "Please check the following files:"
git diff --no-ext-diff --cached --name-only -i -G"(@no|\/\/s?no-?)commit" | sed 's/^/ - /'
echo
echo "You can ignore this warning by running the commit command with '--no-verify'"
exit 1
fi
.git/hooks/pre-commit
中,并给予它chmod +x .git/hooks/pre-commit
权限。sed
等的过滤解决方案更简单易懂和声明式。不错。 - user3275211
sed
的正则表达式。 - Kache