有一个文件被跟踪git,但现在该文件在.gitignore列表中.
但是,该文件在git status编辑后会一直显示.你怎么强迫git完全忘掉它?
我有一个带有Git子模块的项目.它来自ssh:// ... URL,并且在提交A.提交B已被推送到该URL,我希望子模块检索提交,并更改为它.
现在,我的理解是git submodule update应该这样做,但事实并非如此.它没有做任何事情(没有输出,成功退出代码).这是一个例子:
$ mkdir foo
$ cd foo
$ git init .
Initialized empty Git repository in /.../foo/.git/
$ git submodule add ssh://user@host/git/mod mod
Cloning into mod...
user@host's password: hunter2
remote: Counting objects: 131, done.
remote: Compressing objects: 100% (115/115), done.
remote: Total 131 (delta 54), reused 0 (delta 0)
Receiving objects: 100% (131/131), 16.16 KiB, done.
Resolving deltas: 100% (54/54), done.
$ git commit -m "Hello world."
[master (root-commit) 565b235] Hello world.
2 …Run Code Online (Sandbox Code Playgroud) 我正在使用Sparkleshare,它使用Git在我的笔记本电脑和备份服务器之间同步文件.
现在我希望能够浏览我上传到服务器的文件和目录,但我不知道怎么做?
我知道Git使用某种特殊的文件层次结构而我无法列出我的文件,对吧?
但是如何列出它们并浏览我的文件呢?
有什么问题可以git subtree解决?何时以及为什么要使用该功能?
我已经读过它用于存储库分离.但为什么我不只是创建两个独立的存储库而不是将两个不相关的存储库合二为一?
这个GitHub教程解释了如何执行Git子树合并.
我知道如何使用它,但不知道何时(用例)及其原因,以及它与之相关的方式git submodule.当我依赖于另一个项目或库时,我会使用子模块.
我有一个包含AngularJS Web应用程序的git repo.
它有一个名为的子文件夹build,它由gulp任务创建.我正在部署到Azure,因此它直接连接到我的bitbucket目录.
我想将build文件夹作为一个单独的git仓库,从中部署Azure应用程序.我如何在git中实现这一点?
我有一个像这样组织的顶级 git repo:
我怎样才能将 gitadd和commit repoA(和repoA/.git)当作常规文件/文件夹一样?
具体来说,我想绕过将此类文件夹作为子模块的处理,但我想保留嵌套 repo 的分支/历史记录(因此.git需要该文件夹)。
我不想改变嵌套存储库的状态(通过提交或合并历史记录),也不想将它推送到远程的单独存储库。
预期的结果与我稍后tar repoA取消的结果相同tar。也就是说,所有文件都是完整的,没有被 git 修改或特殊处理。
我注意到在我的目录中有两个模块是我的Git存储库的Subprojects.发生这种情况是因为我将它们全部移动到一个Git仓库并且这些模块(目录)有自己的.git目录.
当我在这些模块中更改任何内容时,我不会在主Git存储库中看到任何更改.我只会看到这个:
+Subproject commit e97ff0348e6adc697192ca4e6a367bdaeddcda6b-dirty
Run Code Online (Sandbox Code Playgroud)
等等
但我不需要那个.我只需要一个没有任何子项目的Git存储库.所以我删除了.git这些子项目中的目录.现在我在主存储库中看不到任何变化.
我试着add *和git init.但它只是看不到那些目录,即使它在存储库中.我怎样才能让Git看到那些目录,所以它会像其他模块一样跟踪它们的变化?
我的Git存储库看起来像这样:
my_project/
.git
dir1
dir2
dir3 # Let's say this is the one directory that Git does not see. So any changes I make here are not tracked at all.
...
...
Run Code Online (Sandbox Code Playgroud)
PS那些未跟踪的目录不为空.
更新
如果我重命名该目录,那么执行以下操作:
git diff
我明白了:
diff --git a/dir3 b/dir3
deleted file mode 160000
index e279fc4..0000000
--- a/dir3
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit e279fc481b9706ad79b24281efdbabd55179aee8
Run Code Online (Sandbox Code Playgroud)
如果我将该目录重命名为原始名称,那么执行git diff …
我知道 git LFS 导致 git 在文本文件中存储字符串“指针”,然后 git LFS 下载该目标二进制文件。这样,远程 git 服务器上的 git repos 就会更小。但是,git LFS 仍然必须存储二进制文件,所以在我看来,本地存储(经过一段时间后)git lfs pull)没有什么不同,并且远程 git LFS 服务器数据加上远程 git 数据的总和仍然相似。
我缺少什么?git LFS 如何高效跟踪二进制文件?
git lfs. 我现在建议反对使用git lfs也可以看看:
我开始提出这个问题是因为我相信 Git LFS 是令人惊奇和美妙的,并且我想知道如何做到这一点。相反,我最终意识到 Git LFS 是我日常工作流程问题的原因,我不应该再使用它,也不应该再推荐它。
概括:
对于个人、免费的 GitHub 帐户来说,它的限制太大了,而对于付费的公司帐户,它需要
git checkout花费几秒钟到长达 3 个多小时,特别是对于远程工作人员来说,这完全是浪费他们的时间。我处理这个问题三年了,这太可怕了。我编写了一个脚本每晚执行一次来缓解这种情况,但我的雇主拒绝给我购买更大的 SSD 来给我足够的空间每晚git lfs fetch执行一次,所以我仍然经常遇到多小时结账的问题。除非您删除整个 GitHub 存储库并从头开始重新创建,否则git lfs fetch --all也不可能撤消与存储库的集成。git …