Git忽略不工作

Git忽略不工作,git,gitignore,Git,Gitignore,这是我的设想。我在A分公司,在那里我对本地工作副本上的某些文件做了一些更改 /启动器/file.esb 我基本上想要以下几点: 完全忽略对此文件所做的更改。我是用 假设不变 从版本控制中取消跟踪此文件,我尝试使用.gitignore来完成此操作 签出不同的分支时,在本地工作文件夹中保留对此文件所做的更改。 A->开发->B->C等 这是我无法完成的。当我签出一个新分支并执行拉取操作时,旧的更改就会覆盖到文件上 为什么会这样?是否应该将此文件路径包含到.gitignore中,从而使此文件完全脱离版

这是我的设想。我在A分公司,在那里我对本地工作副本上的某些文件做了一些更改

/启动器/file.esb

我基本上想要以下几点:

  • 完全忽略对此文件所做的更改。我是用 假设不变
  • 从版本控制中取消跟踪此文件,我尝试使用.gitignore来完成此操作

  • 签出不同的分支时,在本地工作文件夹中保留对此文件所做的更改。 A->开发->B->C等

  • 这是我无法完成的。当我签出一个新分支并执行拉取操作时,旧的更改就会覆盖到文件上

    为什么会这样?是否应该将此文件路径包含到.gitignore中,从而使此文件完全脱离版本控制触角

    我怎样才能达到#3

    这个问题与“可能重复”链接中提到的问题不同。 原因如下:


    这基本上就是我想要的俗语。“将我的这一个特定文件放在一个‘shell’中,在任何git操作期间都不会被覆盖,如果更改,也不会被考虑”。它基本上排除了该文件和staging/remote之间任何形式的版本控制同步。此本地文件和登台/远程版本必须相互完全断开连接。

    这是因为该文件已经是存储库的一部分。因此,当您切换分支时,您将从要签出的分支获取此文件的版本。gitignore文件仅阻止git查看不属于存储库的文件。这就完成了,因此git不在命令中包括某些文件,如
    git add.
    git commit-a
    。假设unchanged选项诱使git看不到更改,但这意味着git可以在签出时随意覆盖该文件,因为它知道该文件与提交的版本没有什么不同


    如果您想从git控件中删除此文件并自己管理对它的更改,那么可以使用
    git rm--cached/launcher/file.esb
    并提交更改。这将从索引中删除该文件,git将不再跟踪该文件。
    --cached
    选项防止git从工作目录中实际删除文件。不过,您可能必须为每个分支分别执行此操作,因为从一个分支删除文件不会从其他分支删除它。要做到这一点,您可能需要撤消假定未更改,然后使用
    git stash
    命令临时隐藏本地更改

    发生这种情况是因为文件已经是存储库的一部分。因此,当您切换分支时,您将从要签出的分支获取此文件的版本。gitignore文件仅阻止git查看不属于存储库的文件。这就完成了,因此git不在命令中包括某些文件,如
    git add.
    git commit-a
    。假设unchanged选项诱使git看不到更改,但这意味着git可以在签出时随意覆盖该文件,因为它知道该文件与提交的版本没有什么不同

    如果您想从git控件中删除此文件并自己管理对它的更改,那么可以使用
    git rm--cached/launcher/file.esb
    并提交更改。这将从索引中删除该文件,git将不再跟踪该文件。
    --cached
    选项防止git从工作目录中实际删除文件。不过,您可能必须为每个分支分别执行此操作,因为从一个分支删除文件不会从其他分支删除它。要做到这一点,您可能需要撤消假定未更改,然后使用
    git stash
    命令临时隐藏本地更改

    从版本控制中取消跟踪此文件,我尝试使用.gitignore来完成此操作

    你试过了,但失败了
    .gitignore
    在您更新索引(即准备下一次提交)时为只读。如果文件已提交,将其添加到
    .gitignore
    无助于告诉
    Git
    停止跟踪该文件

    您还必须从索引中删除(使用[
    git rm--cached](https://git-scm.com/docs/git-rm)
    )并提交更改。只有这样,
    Git
    才会停止跟踪文件。将其名称添加到
    .gitignore
    只会告诉它停止在
    git status
    输出的
    Untracked files
    部分中列出它

    但是,如果签出在从repo中删除文件之前创建的提交,则提交包含该文件,Git也将尝试签出该文件

    从版本控制中取消跟踪此文件,我尝试使用.gitignore来完成此操作

    你试过了,但失败了
    .gitignore
    在您更新索引(即准备下一次提交)时为只读。如果文件已提交,将其添加到
    .gitignore
    无助于告诉
    Git
    停止跟踪该文件

    您还必须从索引中删除(使用[
    git rm--cached](https://git-scm.com/docs/git-rm)
    )并提交更改。只有这样,
    Git
    才会停止跟踪文件。将其名称添加到
    .gitignore
    只会告诉它停止在
    git status
    输出的
    Untracked files
    部分中列出它

    但是,如果您签出在从repo中删除文件之前创建的提交,则该提交包含该文件,Git也将尝试签出它。

    Git rm--cached的可能副本的可能副本,我已经尝试了数百万次。问题是,当我提交git rm'd文件并将分支推送到origin时,该文件在PR期间显示为“deleted”。当我尝试将我的分支与development合并时,该文件实际上是remo吗