如何\n使用sed命令替换换行符()?
我没试成功:
sed 's#\n# #g' file
sed 's#^$# #g' file
Run Code Online (Sandbox Code Playgroud)
我如何解决它?
我写了一个Git post-commit钩子,它工作正常.但是,我想添加此钩子以应用于我正在处理的所有当前(和将来)git存储库.我尝试将钩子添加到我~/.git/hooks/而不是项目目录中的hooks目录中,但是,这似乎不起作用.
有没有办法创建将应用于我的系统上的所有存储库的全局Git挂钩(无需将它们复制到每个项目目录中)?如果没有,那么最好的解决方案是什么 - 也许是一个git-init模板?
Git有一个众所周知的,或者至少是众所周知的空树,其SHA1是:
4b825dc642cb6eb9a060e54bf8d69288fbee4904
Run Code Online (Sandbox Code Playgroud)
(你可以在任何仓库中看到这个,甚至是新创建的仓库,用git cat-file -t和git cat-file -p).
如果您努力工作并且非常小心,您可以使用这个空树来存储没有文件的目录(请参阅如何将空目录添加到git存储库的答案),尽管这不是一个好主意.
它作为一个参数更有用git diff-tree,其中一个示例钩子可以做到.
我想知道的是,
4b825dc642cb6eb9a060e54bf8d69288fbee4904? (创建符号名称的快速而肮脏的方法是将SHA1放入,例如,.git/Nulltree不幸的是,您必须为每个repo执行此操作.似乎更好地将幻数放在脚本中等等.我只是有一般的厌恶到魔术数字.)
我假设两者都以同样的方式工作.两者都将每个文件添加到索引.但我似乎错了.
git add .和之间有什么区别git add -u?当我开始时git rebase -i,我可以发出像git rebase --continue或的命令git rebase --abort.这些命令仅在rebase正在进行时才有效.
我如何知道是否有正在进行的改造?
(我非常感谢关于rebase如何在内部工作的一些细节; git对一个repo做了什么,使它具有"rebase in progress"状态,?)
我不小心在我的初始提交中放了一些空格- 它显示为红色git diff --color.什么是摆脱现有空白的最佳方法,我怎样才能避免这种情况再次发生?
我不一定在寻找内置的git命令.任何在Ubuntu上免费提供的外部程序也是受欢迎的.
我知道删除尾随空格可以使用预提交钩子完成.我有兴趣手动完成它.我在这里阅读了这个问题:
让Git在提交之前自动删除尾随空格 - Stack Overflow
最接近我想要的答案是来自ntc2的"自动版本":
(export VISUAL=: && git -c apply.whitespace=fix add -ue .) && git checkout . && git reset
Run Code Online (Sandbox Code Playgroud)
该命令运行良好,除了它似乎只是对已存在于repo中的文件的更改,而不是新文件.我有一堆新文件,这意味着它们还没有在回购中.我想从这些文件中删除空格,所以我尝试添加-A而不是-u,但这并没有什么区别.
当我做
git diff -w file_name
Run Code Online (Sandbox Code Playgroud)
我看到只添加了行,但是当我删除时,-w我看到很多被删除和重新添加的行.
我想更改文件,以便我只显示-w选项未忽略的更改.
那是否有命令?
我正在对 Microsoft Access VBA 代码进行版本控制,该代码通常不区分大小写。然而,变量名的情况在那时(由 Access 编译器或由开发人员)时不时地发生。这通常会导致我的 git 工作区发生巨大变化。
如何还原或忽略仅涉及文件内容大写或小写的更改?
一个例子:
git init
echo "public sub example()\nend sub" > mdlExample.ACM
# ^-- lower e
git add --all
git commit --all --message "Initial Commit"
echo "public sub Example()\nend sub" > mdlExample.ACM
# ^-- upper E
Run Code Online (Sandbox Code Playgroud)
我会喜欢这样的东西:
git restore --only-case-changes # not working
Run Code Online (Sandbox Code Playgroud)
进而:
git status
> On branch master
> nothing to commit, working tree clean
Run Code Online (Sandbox Code Playgroud) 我trim_trailing_white_space_on_save打开了一个选项.对于某些文件,我应该防止删除尾随空格,因为它们很重要.
如何删除某些文件的此行为,例如*.dat?
git ×8
whitespace ×2
bash ×1
code-cleanup ×1
diff ×1
git-add ×1
git-bash ×1
git-diff ×1
git-rebase ×1
githooks ×1
hook ×1
sed ×1
sublimetext2 ×1