Git check out 旧分支 : any way to not delete newly created files?

标签 git

情况是这样的。我们有:

branch_old
branch_new

Branch_new 包含一个新创建的文件,DeveloperOptions。这个文件是 repo 的一部分(因此它会随着新安装而被删除),但是,当他们编译将添加 git --assume-unchanged 的项目时,一个脚本会在开发人员机器上运行那个文件。然后允许开发人员通过修改该文件(主要是输出日志级别和输出自定义)来指定他们自己的编译“选项”,这种方式将被 git 忽略,因此永远不会在远程提交/推送/更改。

这就是问题所在:当我们从 branch_new(有文件) check out 到 branch_old(没有文件)时,git 不允许 check out ,因为“你的工作树包含会被 check out 覆盖的更改”现在,如果我们将 branch_new 分支到 branch_very_new,我们可以毫无问题地无限地来回反弹。但是在旧分支上,因为文件不存在,git 试图在 checkout 时将其从系统中删除,从而导致警告。

有什么办法解决这个问题吗?或者,是否有任何合适的方法让 git 忽略所有 future 对被跟踪文件的更改?这就是我们真正要做的。

最佳答案

Git 非常小心,不会覆盖您的更改。因此,您需要为更改分支编写别名或脚本,以便您的用户更改不会被覆盖。

git update-index --no-assume-unchanged <config file>
git stash //Put it in the stash to change branches
git checkout <branchname>
git stash pop //Bring back your changes
git update-index --assume-unchanged <config file>

您的 assume-unchanged 会阻止 git 跟踪更改。所以它把它当作一个未跟踪的文件,你的另一个分支有旧的更改并检查该分支意味着 git 将要应用这些更改(如果分支正在跟踪你的分支中未跟踪的文件,也会发生这种情况). Git 不确定如何解决差异,因此它会停止 checkout 以防止丢失任何东西。

关于Git check out 旧分支 : any way to not delete newly created files?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22848131/

相关文章:

Eclipse 更新 2021-03 后 git auth 失败

git - 如何将虚幻引擎中的项目提交到github

git - 忽略除一个文件夹以外的所有文件夹

java - 可以响应 git 命令的本地嵌入式 HTTP 服务器?

git - 第一次 Git 推送被拒绝

git:如何恢复已删除的文件?

git - 如何启用 gerrit 钩子(Hook)?

git - 在 Gitlab 中获取贡献

git - 从 Jenkins 中删除 git 缓存

python - 如何从 cx_Freeze 发行版中排除 gitignore 文件