如何判断文件是否会正确上传到 git lfs?
How can I tell if a file will be uploaded to git lfs correctly?
我正在尝试将 MyProject/Frameworks/
下的所有内容添加到 git-lfs (large file storage). I'm what the proper format for matching all files and folders recursively under the Frameworks
folder is. says the proper format is git lfs track "MyProject/Frameworks/**"
, but Atlassian's help document 说我应该使用 git lfs track "MyProject/Frameworks/"
。我都试过了,但他们没有使用 git lfs
进行存储。它尝试直接上传文件。
当然,我很想知道正确的格式,但更重要的是,在我尝试将我的更改推送到 github 之前,我想验证匹配项和文件确实可以正常工作.这将允许我迭代并尝试新事物。
我看到两个可能有用的相关命令:git lfs status
and git lfs ls-files
。不清楚我应该使用哪一个以及我应该寻找什么输出。例如,当我 运行 git lfs status
时,它向我展示了 Git LFS objects to be committed
下的大量文件,让我认为它们将被添加到 Git LFS。然而,在尝试推送到 GitHub.com 之后,我意识到显然不是这样。如果有帮助,这些文件的输出总是在每个文件名后有类似 (Git: edee1ad)
的内容。
当我尝试使用 git lfs ls-files
时,我不确定在 git add
文件、提交文件或推送文件后是否需要 运行 它。大多数时候它只是向我显示空白输出。
本质上的问题是:如果我正确配置 git lfs
,我应该使用什么工具(例如 git lfs status
),我应该寻找什么输出 之前 我尝试commit/push?
注意:请不要只回答如何匹配所有递归文件的问题,因为这将帮助我一次(这个具体情况),而不是让我迭代和尝试新事物(任何情况)。
TL;DR
如果一切设置正确,您可以通过以下方式验证 git LFS 是否正常工作:
git add
有问题的文件。
- 执行以下操作之一:
- 运行
git lfs status
并确保有问题的文件出现在 Git LFS objects to be committed
下,并且它们在括号中具有 LFS
值;或
- 运行
git lfs ls-files
并确保相关文件出现在此输出中。
⚠️ Important: After running git lfs track
, you must run git add
to refresh the state of files before calling git lfs status
or git lfs ls-files
. Otherwise you'll see irrelevant output from those commands.
另外,郑重声明,git lfs track "MyProject/Frameworks/**"
似乎是递归匹配的正确答案。
设置和测试方法:
git lfs track "*.lfs"
。这会生成 .gitattributes
。让它不上演。
- 在根目录中创建一个文件,
Test.lfs
。让它不上演。
测试:
git lfs status
: 没有文件名输出
$ git lfs status
On branch master
Git LFS objects to be pushed to origin/master:
Git LFS objects to be committed:
Git LFS objects not staged for commit:
$
git lfs ls-files
: 无输出
$ git lfs ls-files
$
添加git add Test.lfs
.
测试:
git lfs status
:Test.lfs
现在将以 LFS
后缀列出。
$ git lfs status
On branch master
Git LFS objects to be pushed to origin/master:
Git LFS objects to be committed:
Test.lfs (LFS: 2ab9f1e)
Git LFS objects not staged for commit:
$
git lfs ls-files
: Test.lfs
现在将被列出。
$ git lfs ls-files
2ab9f1e447 * Test.lfs
$
提交更改。
测试:
git lfs status
: Test.lfs
将移动到 "to be pushed" 部分。它会有一个后缀,例如一堆 numbers/letters.
$ git lfs status
On branch master
Git LFS objects to be pushed to origin/master:
Test.lfs (2ab9f1e44720efb7a26553e06b667a270320efb3e906553b3f9e0702538a2b3f)
Git LFS objects to be committed:
Git LFS objects not staged for commit:
$
git lfs ls-files
: Test.lfs
将继续上市。
$ git lfs ls-files
2ab9f1e447 * Test.lfs
$
- 推送更改。包括 adding/committing/pushing .git 属性。
测试:
git lfs status
: 不再输出文件名
$ git lfs status
On branch master
Git LFS objects to be pushed to origin/master:
Git LFS objects to be committed:
Git LFS objects not staged for commit:
$
git lfs ls-files
: 继续输出跟踪文件
$ git lfs ls-files
2ab9f1e447 * Test.lfs
$
结论:
Git LFS objects not staged for commit
部分似乎具有误导性,因为它从未显示任何文件,即使是那些本应由 LFS 跟踪的文件。
- 如果您尝试使用非 git-lfs 跟踪文件进行先前的实验,您还会注意到它错误地出现在
Git LFS objects to be committed
下。它不是 Git LFS 对象。判断它实际上不是 Git LFS 对象的方法是查看它是如何结束的。如果它以 (Git: 111111111)
结尾,它将不会提交给 LFS。
- 为了避免上述混淆,您可能希望
git lfs ls-files
而不是 git lfs status
来确定某些内容是否将成为 git-lfs 的一部分。
- 另一个陷阱:某些应用程序,例如 Xcode 将以一种奇怪的方式
git add
文件,导致本应明确匹配的内容不被考虑用于 Git LFS。解决方案是取消暂存文件,然后重新暂存它们。
我正在尝试将 MyProject/Frameworks/
下的所有内容添加到 git-lfs (large file storage). I'm Frameworks
folder is. git lfs track "MyProject/Frameworks/**"
, but Atlassian's help document 说我应该使用 git lfs track "MyProject/Frameworks/"
。我都试过了,但他们没有使用 git lfs
进行存储。它尝试直接上传文件。
当然,我很想知道正确的格式,但更重要的是,在我尝试将我的更改推送到 github 之前,我想验证匹配项和文件确实可以正常工作.这将允许我迭代并尝试新事物。
我看到两个可能有用的相关命令:git lfs status
and git lfs ls-files
。不清楚我应该使用哪一个以及我应该寻找什么输出。例如,当我 运行 git lfs status
时,它向我展示了 Git LFS objects to be committed
下的大量文件,让我认为它们将被添加到 Git LFS。然而,在尝试推送到 GitHub.com 之后,我意识到显然不是这样。如果有帮助,这些文件的输出总是在每个文件名后有类似 (Git: edee1ad)
的内容。
当我尝试使用 git lfs ls-files
时,我不确定在 git add
文件、提交文件或推送文件后是否需要 运行 它。大多数时候它只是向我显示空白输出。
本质上的问题是:如果我正确配置 git lfs
,我应该使用什么工具(例如 git lfs status
),我应该寻找什么输出 之前 我尝试commit/push?
注意:请不要只回答如何匹配所有递归文件的问题,因为这将帮助我一次(这个具体情况),而不是让我迭代和尝试新事物(任何情况)。
TL;DR
如果一切设置正确,您可以通过以下方式验证 git LFS 是否正常工作:
git add
有问题的文件。- 执行以下操作之一:
- 运行
git lfs status
并确保有问题的文件出现在Git LFS objects to be committed
下,并且它们在括号中具有LFS
值;或 - 运行
git lfs ls-files
并确保相关文件出现在此输出中。
- 运行
⚠️ Important: After running
git lfs track
, you must rungit add
to refresh the state of files before callinggit lfs status
orgit lfs ls-files
. Otherwise you'll see irrelevant output from those commands.
另外,郑重声明,git lfs track "MyProject/Frameworks/**"
似乎是递归匹配的正确答案。
设置和测试方法:
git lfs track "*.lfs"
。这会生成.gitattributes
。让它不上演。- 在根目录中创建一个文件,
Test.lfs
。让它不上演。 测试:
git lfs status
: 没有文件名输出$ git lfs status On branch master Git LFS objects to be pushed to origin/master: Git LFS objects to be committed: Git LFS objects not staged for commit: $
git lfs ls-files
: 无输出$ git lfs ls-files $
添加
git add Test.lfs
.测试:
git lfs status
:Test.lfs
现在将以LFS
后缀列出。$ git lfs status On branch master Git LFS objects to be pushed to origin/master: Git LFS objects to be committed: Test.lfs (LFS: 2ab9f1e) Git LFS objects not staged for commit: $
git lfs ls-files
:Test.lfs
现在将被列出。$ git lfs ls-files 2ab9f1e447 * Test.lfs $
提交更改。
测试:
git lfs status
:Test.lfs
将移动到 "to be pushed" 部分。它会有一个后缀,例如一堆 numbers/letters.$ git lfs status On branch master Git LFS objects to be pushed to origin/master: Test.lfs (2ab9f1e44720efb7a26553e06b667a270320efb3e906553b3f9e0702538a2b3f) Git LFS objects to be committed: Git LFS objects not staged for commit: $
git lfs ls-files
:Test.lfs
将继续上市。$ git lfs ls-files 2ab9f1e447 * Test.lfs $
- 推送更改。包括 adding/committing/pushing .git 属性。
测试:
git lfs status
: 不再输出文件名$ git lfs status On branch master Git LFS objects to be pushed to origin/master: Git LFS objects to be committed: Git LFS objects not staged for commit: $
git lfs ls-files
: 继续输出跟踪文件$ git lfs ls-files 2ab9f1e447 * Test.lfs $
结论:
Git LFS objects not staged for commit
部分似乎具有误导性,因为它从未显示任何文件,即使是那些本应由 LFS 跟踪的文件。- 如果您尝试使用非 git-lfs 跟踪文件进行先前的实验,您还会注意到它错误地出现在
Git LFS objects to be committed
下。它不是 Git LFS 对象。判断它实际上不是 Git LFS 对象的方法是查看它是如何结束的。如果它以(Git: 111111111)
结尾,它将不会提交给 LFS。 - 为了避免上述混淆,您可能希望
git lfs ls-files
而不是git lfs status
来确定某些内容是否将成为 git-lfs 的一部分。 - 另一个陷阱:某些应用程序,例如 Xcode 将以一种奇怪的方式
git add
文件,导致本应明确匹配的内容不被考虑用于 Git LFS。解决方案是取消暂存文件,然后重新暂存它们。