相关疑难解决方法(0)

从Git存储库中删除文件而不从本地文件系统中删除它

我的初始提交包含一些日志文件.我已添加*log到我的.gitignore,现在我想从我的存储库中删除日志文件.

git rm mylogfile.log
Run Code Online (Sandbox Code Playgroud)

将从存储库中删除文件,但也将从本地文件系统中删除它.

如何在删除文件的本地副本的情况下从存储库中删除此文件?

git repository remote-server delete-file git-rm

2892
推荐指数
11
解决办法
78万
查看次数

如何在不删除磁盘的情况下git rm文件?

该命令将删除系统中的文件.我的意思是它只从Git-repository中删除文件.

如何在不删除系统中的文件的情况下从Git存储库中删除该文件?

git git-rm

349
推荐指数
2
解决办法
13万
查看次数

当前分支上有未提交的更改时,检出另一个分支

大多数时候,当我尝试检出另一个现有分支时,如果我在当前分支上有一些未提交的更改,Git不允许我.所以我必须首先提交或存储这些更改.

但是,偶尔Git允许我签出另一个分支而不提交或存储这些更改,它会将这些更改带到我签出的分支.

这里的规则是什么?更改是分阶段还是未分阶段是否重要?将更改传递给另一个分支对我没有任何意义,为什么git有时会允许它?也就是说,它在某些情况下有用吗?

git

319
推荐指数
4
解决办法
12万
查看次数

最终追溯 .gitignore(如何让 Git 完全/追溯忘记现在 .gitignore 中的文件)

前言

这个问题试图消除关于追溯应用 .gitignore 的混淆,而不仅仅是现在/未来。1

基本原理

我一直在寻找一种方法来追溯强制执行我当前的 .gitignore ,就像我在第一次提交中创建了 .gitignore 一样

我正在寻求的解决方案:

  • 不会需要手动指定文件
  • 要求提交
  • 将追溯适用于所有分支的所有提交
  • 忽略工作目录中指定的 .gitignore 文件,而不是删除它们(就像最初提交的根提交的 .gitignore 文件一样)
  • 将使用 git,而不是 BFG
  • 将适用于 .gitignore 异常,例如:
 *.ext
 !*special.ext
Run Code Online (Sandbox Code Playgroud)

不是解决方案

git rm --cached *.ext
git commit
Run Code Online (Sandbox Code Playgroud)

这需要 1. 手动指定文件和 2. 附加提交,这将导致在其他开发人员拉取时删除新忽略的文件。(它实际上只是一个git rm- 这是从 git 跟踪中删除- 但它会将文件单独留在本地(您的)工作目录中。 之后其他git pull将收到文件删除提交)

git filter-branch --index-filter 'git rm --cached *.ext' …
Run Code Online (Sandbox Code Playgroud)

git gitignore

8
推荐指数
2
解决办法
3439
查看次数

Git 忽略文件,而不删除它

我有一个使用 GIT 进行版本控制的网站。我有一个系统设置,基本上可以自动将我的master分支中的更改部署到我的生产服务器。也就是说,我的存储库中有一个 Web 钩子,它触发一个 PHP 脚本,该脚本基本上git pull在服务器上启动 a以便下拉更改。

我的问题在于我目前有一个config.php使用 git 跟踪的配置文件 ( )。我自己和另一个开发人员想要拥有config.php与服务器上的文件不同的我们自己的文件,因此我们想告诉 git 停止跟踪该文件并假装它不存在。

我们决定首先使用一个不太重要的文件进行测试,所以我们添加test.php到我们的.gitignore文件中,希望这能奏效。Git 仍在跟踪该文件,因此我尝试运行git rm --cached test.php以尝试停止跟踪该文件。这似乎奏效了,所以我们承诺并推动了我们的改变。

令我惊讶的是,当我们的部署脚本在我们的服务器上发起拉取时,我们发现该文件已从生产中删除。谢天谢地,删除test.php并不重要。

TLDR;我如何告诉 git 忽略它当前跟踪的文件,取消跟踪并从我的存储库中删除它,但在我的生产服务器上保持完整?

git deployment version-control gitignore

3
推荐指数
1
解决办法
1504
查看次数