- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
尝试实现基于终端的工作流程,在 Github 和 Git 上变得更加流畅,我想通过终端将所有本地 AppleScript 应用程序和脚本上传到存储库。在初始测试上传时,任何带有 .scpt
扩展名的内容都被视为二进制文件,不会呈现为原始文件,但只允许下载以查看原始文件。
因此研究一种将二进制文件转换为文本的方法,以便我可以利用版本控制,我发现“Should the .gitattributes file be in the commit?”并且:
我使用以下方法在终端本地克隆我的存储库:
git clone https://github.com/user/foobar.git
cd
进入该目录后,我执行以下操作:touch .gitattributes
验证文件在那里:ls -a
打开文件:open .gitattributes
将以下内容添加到 .gitattributes
:
## Explicitly declare text files you want to always be normalized and converted to native line endings on checkout.
*.scpt text
## Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary
回到终端,我执行 git commit -am "adding gitattributes"
运行 git push
在浏览器中,我验证文件 .gitattributes
是否存在并且我可以将其视为文本。
我将 foobar.scpt
添加到我的本地目录。在终端中,我运行 ls -a
来验证 foobar
是否存在。运行 git add foobar.scpt
然后使用 git commit -am "adding test script"
和 git push
。
当我在浏览器中打开文件 foobar.scpt
时,它仍然指示我只能下载以查看原始文件。进一步研究我发现:
我已经尝试了上面的方法:
.gitattributes
添加到我的本地作为 .git/info/.gitattributes
.gitattributes
作为 .git/info/gitattributes
添加到我的本地以复制 exclude
文件的外观。我已将 gitattributes
文件参数更改为:
*.scpt 文本
*.scpt 差异
在尝试了以上所有方法后,我仍然无法将某些文件作为文本而不是二进制文件获取。在本地创建 gitattributes
文件并将其推送到主服务器以便 Mac 文件将呈现为文本而不是二进制文件的正确方法是什么?
编辑:
建议评论How would you put an AppleScript script under version control?所以我 git rm foobar.scpt
、git commit -am "removed test"
和 git push
。
在本地删除 foobar
后,我将 ..gitattributes
更新为:
## Explicitly declare text files you want to always be normalized and converted to native line endings on checkout.
*.scpt diff=scpt
## Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary
添加到我的配置文件(在本地 .git/config
下):
[diff "scpt"]
textconv = osadecompile
binary=true
我创建了一个名为 test.scpt
的新脚本文件并通过浏览器和终端上传到,但仍然是原始文件。我做错了什么?
最佳答案
根据您的描述,我不能完全确定 .scpt
文件本质上是“部分”或“完全”二进制的。
如果它们是“完全”二进制的,ala dat
, exe
或 bin
格式,然后使用 Git LFS这样对待他们。
git lfs install # Installs the Git LFS hooks into you ./.git/ folder
git lfs track "*.scpt" # Registers the *.scpt file extention as a binary format
注意:双引号必须应用于所有*.scpt
文件不仅仅是项目根目录中的文件
这将使用通常的 Git 工作流程跟踪对文件的更改,因此您可以回滚到某个先前的状态。据我了解,Git LFS 按原样存储整个文件,并且不会像 git 那样跟踪更改,请考虑每个文件的多个副本/克隆。大文件很快会导致存储库变大,因此必须定期清除旧文件,从而丢失一些历史记录。
如果它们是“部分”二进制,ala pdf
或 docx
,然后可以使用 .gitattributes
为他们配置“读者” . Martin Fenner's article很好地涵盖了这一点(我不会链接四处飘荡的剽窃副本)。本质上他使用 .gitattributes
为 *.scrpt
识别不同的差异工具和编辑器文件和 .gitconfig
指定这些工具。
PATH/TO/Repository/.gitattributes
*.docx diff=scptdiff
SOME/PATH/.gitconfig
(我不记得 .gitconfig
住在哪里)
[diff "scptdiff"]
textconv=SCPT2TEXT ...
prompt = false
[alias]
scptdiff =SCPTDIFF ...
注: SCPT2TEXT
代表 *.scpt
阅读器/转换器和 SCPTDIFF
*.scpt
差异工具和 ...
他们的参数不包括文件名
这里是文件的 git 版本控制。它将为您跟踪更改,但可能会在 merge 期间导致问题;我有一段时间没有使用它了,但我记得它运行良好。
使用 .gitattributes
也可以将文件标记为二进制文件,在这种情况下,git 将简单地复制文件但不跟踪任何更改。两个人编辑文件最终会覆盖彼此的工作。这更适用于不经常更改的数据文件。
我个人怀疑您的问题更多地与行结尾有关。您似乎正在从 CRLF
更改至 LF
, 或相反亦然。当您推送到中央存储库时,这可能会破坏 scpt 格式。在推送过程中,行尾被转换并且文件“损坏”,然后您从服务器下载“损坏”文件却发现它真的被损坏了;这可能就是为什么它们在 Web 界面中不“可见”的原因。如果您恢复损坏文件中的行结尾,您将再次获得原始的“固定”文件。
我的规则是在 Windows <-> Linux
之间切换行结尾把它们留给Linux <-> Linux
;将服务器视为 Linux
盒子;治疗 Mac OS
作为Linux
.在系统/本地/用户中设置 .gitconfig
.只有在确实需要时才启用,text/crlf
,或禁用,text/crlf
, 线端切换共在.gitattributes
例如git 下的二进制文件,只有一个人可以编辑,否则会损坏。
同事也可能会破坏文件,因为他们在 pull 时进行转换,而在推送时不进行转换,反之亦然。再次在 .gitattributes
中启用/禁用它.
注意:这并没有完全回答问题;如有必要,请询问更多信息。另外,我不在 Mac OS 上工作,所以我可能会做一些事情
关于git - 为什么我的 .gitattributes 文件不能在我的 Mac 上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48478401/
好的,所以我想从批处理文件运行我的整个工作环境... 我想要实现什么...... 打开新的 powershell,打开我的 API 文件夹并从该文件夹运行 VS Code 编辑器(cd c:\xy;
我正在查看 Cocoa Controls 上的示例并下载了一些演示。我遇到的问题是一些例子,比如 BCTabBarController ,不会在我的设备上构建或启动。当我打开项目时,它看起来很正常,没
我刚刚开始学习 C 语言(擅长 Java 和 Python)。 当编写 C 程序(例如 hello world)时,我在 ubuntu cmd 行上使用 gcc hello.c -o hello 编译
我在 php 脚本从 cron 开始运行到超时后注意到了这个问题,但是当它从命令行手动运行时这不是问题。 (对于 CLI,PHP 默认的 max_execution_time 是 0) 所以我尝试运行
我可以使用命令行运行测试 > ./node_modules/.bin/wdio wdio.conf.js 但是如果我尝试从 IntelliJ 的运行/调试配置运行它,我会遇到各种不同的错误。 Fea
Error occurred during initialization of VM. Could not reserve enough space for object heap. Error: C
将 Anaconda 安装到 C:\ 后,我无法打开 jupyter 笔记本。无论是在带有 jupyter notebook 的 Anaconda Prompt 中还是在导航器中。我就是无法让它工作。
我遇到一个问题,如果我双击我的脚本 (.py),或者使用 IDLE 打开它,它将正确编译并运行。但是,如果我尝试在 Windows 命令行中运行脚本,请使用 C:\> "C:\Software_Dev
情况 我正在使用 mysql 数据库。查询从 phpmyadmin 和 postman 运行 但是当我从 android 发送请求时(它返回零行) 我已经记录了从 android 发送的电子邮件是正确
所以这个有点奇怪 - 为什么从 Java 运行 .exe 文件会给出不同的输出而不是直接运行 .exe。 当 java 在下面的行执行时,它会调用我构建的可与 3CX 电话系统配合使用的 .exe 文
这行代码 Environment.Is64BitProcess 当我的应用单独运行时评估为真。 但是当它在我的 Visual Studio 单元测试中运行时,相同的表达式的计算结果为 false。 我
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 8 年前。 Improve
我写了一个使用 libpq 连接到 PostgreSQL 数据库的演示。 我尝试通过包含将 C 文件连接到 PostgreSQL #include 在我将路径添加到系统变量 I:\Program F
如何从 Jenkins 运行 Android 模拟器来运行我的测试?当我在 Execiute Windows bath 命令中写入时,运行模拟器的命令: emulator -avd Tester 然后
我已经配置好东西,这样我就可以使用 ssl 登录和访问在 nginx 上运行的 errbit 我的问题是我不知道如何设置我的 Rails 应用程序的 errbit.rb 以便我可以运行测试 nginx
我编写了 flutter 应用程序,我通过 xcode 打开了 ios 部分并且应用程序正在运行,但是当我通过 flutter build ios 通过 vscode 运行应用程序时,我得到了这个错误
我有一个简短的 python 脚本,它使用日志记录模块和 configparser 模块。我在Win7下使用PyCharm 2.7.1和Python 3.3。 当我使用 PyCharm 运行我的脚本时
我在这里遇到了一些难题。 我的开发箱是 64 位的,windows 7。我所有的项目都编译为“任何 CPU”。该项目引用了 64 位版本的第 3 方软件 当我运行不使用任何 Web 引用的单元测试时,
当我注意到以下问题时,我正在做一些 C++ 练习。给定的代码将不会在 Visual Studio 2013 或 Qt Creator 5.4.1 中运行/编译 报错: invalid types 'd
假设我有一个 easteregg.py 文件: from airflow import DAG from dateutil import parser from datetime import tim
我是一名优秀的程序员,十分优秀!