- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在将父存储库 pull 入复刻并正确解决冲突时遇到问题。看起来,如果一个文件在 fork 中被重命名并且被父级和 fork 修改,git 只会将其视为 被我们删除
。
当我使用 git pull/path/to/parent master
和 git merge upstream/master
时会发生这种情况 (with upstream configured) .
我如何使用 git 来提示我解决重命名文件的冲突,而不是让 git 假设文件是被我们删除
?
这是一个演示我遇到的问题的设置。这可以在本地或在线托管系统中完成(我在 Azure DevOps/VSTS 中体验过)。
我在 GitHub 中用这两个 repos 复制了下面的大部分步骤:
您可以克隆 fork 并执行 git pull https://github.com/Daniel-Khodabakhsh/TestForkPull.git master
以查看问题。
创建一个小项目,其中包含名为 A.txt
、B.txt
和 C.txt
的任意文本文件 repo 路径 /path/to/parent
。
通过将此存储库复制到 /path/to/fork
并切换到此路径来创建此存储库的分支。
在这个新的 fork 仓库中,按以下方式重命名文件并提交。我是通过操作系统而不是使用 git mv
完成的,但这应该无关紧要,因为 git 的工作方式。
A.txt → X.txt
B.txt → Y.txt
C.txt → Z.txt
git diff --name-status HEAD~1
并注意 'R'
指示检测到重命名来验证 git 识别重命名。$ git diff --name-status HEAD~1
R100 A.txt X.txt
R100 B.txt Y.txt
R100 C.txt Z.txt
在父代码库中,修改文件 A.txt
和 B.txt
的内容。
在 fork 仓库中,修改文件 Y.txt
和 Z.txt
的内容。
到目前为止,您在两个存储库中都有以下文件:
A.txt → X.txt - Modified in parent
B.txt → Y.txt - Modified in both
C.txt → Z.txt - Modified in fork
git pull/path/to/parent master
将父仓库“pull ”到 fork 中。您将获得以下输出:$ git pull /path/to/parent/ master
remote: Enumerating objects: 7, done.
remote: Counting objects: 100% (7/7), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 4 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (4/4), done.
From D:/path/to/parent
* branch master -> FETCH_HEAD
CONFLICT (modify/delete): B.txt deleted in HEAD and modified in ba146eba53bd7d51c9977238d9d62b56f7a984f7. Version ba146eba53bd7d51c9977238d9d62b56f7a984f7 of B.txt left in tree.
Automatic merge failed; fix conflicts and then commit the result.
$ git status
On branch master
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Changes to be committed:
modified: X.txt
Unmerged paths:
(use "git add/rm <file>..." as appropriate to mark resolution)
deleted by us: B.txt
这里 X.txt
正确地只显示来自父 repo 的修改,Z.txt
正确地未被 fork repo 的更改所影响,但是 Y。 txt
(B.txt
) 没有正确显示为冲突,而是显示为仅被我们删除
。
最佳答案
It appears that if a file is renamed in the fork and is modified by both the parent and the fork, git only treats it as being deleted by us.
请注意,git 不跟踪文件重命名或移动。这意味着当文件在分支上移动并在另一个分支上修改时,您将遇到 merge 冲突,如您所见。
How can I use git such that I am prompted to resolve the conflict on the renamed file instead of having git assume the file was deleted by us?
您必须在文件的移动版本中手动进行修改。
关于Git - 从父仓库中提取时如何处理本地重命名文件的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56348599/
Hortonworks 数据平台 HDP 3.0 有 spark 2.3 和 Hive 3.1,默认情况下 spark 2.3 应用程序(pyspark/spark-sql 等)使用 spark 数据
是否最好让一个软件仓库包含多个文件夹,这些文件夹映射到工作区中的不同路径。或者一个仓库中的多个文件夹映射到多个工作区,或多个仓库映射到多个工作区。 有人对此事有任何实用建议吗? 我还注意到,当我在仓库
Git 是分布式源代码控制系统,对吧。如何在没有集中存储库的情况下连接两个开发人员。 我们的团队使用 Github,如果两个开发人员想在同一个分支上工作,似乎需要将该分支推送到远程,然后他们才能访问它
Maven – 仓库 什么是 Maven 仓库? 在Maven 的术语中,仓库是一个位置(place),例如目录,可以存储所有的工程 jar 文件、library jar 文件、插件或任何其他的工
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 3年前关闭。 Improve this questi
我开始将 git 与我的 .git 目录以及网络根目录中的其他所有内容一起使用。进一步阅读后,这似乎是一种不好的做法。我现在将我的应用程序和系统文件夹放在网络根目录之外。我的网络根目录中唯一剩下的就是
有没有可能没有历史的 Git 仓库?例如,我有一个我工作的本地 Git 存储库,我想将最新版本推送到生产服务器。生产服务器上不应存储任何历史记录。我该怎么做? 最佳答案 你可以看到命令 git arc
Laravel 中的 Repositories 有什么优势?它似乎是从应用程序的业务逻辑中抽象出模型层。虽然这似乎只是让整个请求生命周期变得更加复杂,但收效甚微。 有人可以阐明 Laravel 存储库
我有一个本地 git 服务器在我的 NAS 上运行,我正在我的笔记本电脑和工作站上进行开发,所有这些都在我的本地网络中。所以,如果我想在一个新的空 repo 中开始一个项目,我会关注 this ans
我们正在使用 SVN 来存储 maven 依赖项(组织限制不能像现在那样使用 nexus 或 artifactory maven 存储库)。 SVN 在使用 https 协议(protocol)的网络
我想允许某人查看我在我的私有(private)存储库中所做的工作。我该怎么做? 我看了https://help.github.com/articles/making-a-private-reposit
我试图阻止同事在 git 中再次推送已删除的标签(因为它被错误地推送了一次)。 我知道如何在本地执行此操作以及如何将其推送到远程以及如何指示我的同事以正确的方式从他们的本地存储库中删除已删除的标签。
我已经使用 url 克隆了一个 friend 的 git repo git 克隆 https://github.com/user/repo_name.git 然后我创建了我的分支,提交并尝试将我的代码
我目前正在我的代理机构安排比赛。我想对开发人员可以使用的模块进行一些管理。 是否可以托管 Play 模块和 Maven 库的镜像存储库并将 play 配置为仅使用这些存储库? 我已阅读此内容 docu
我正在尝试在我的 readme.md 中嵌入图像用于在 GitHub 上显示。我以前在公共(public)存储库中没有遇到任何问题,格式如下: ![header image](https://raw.
我想访问公司内部Artifactory实例上自定义开发的Gradle插件。对于公司内部发生的每一个Gradle构建,我都希望如此。我是否缺少任何东西,或者建议的方法是在每个项目的每个Gradle构建之
我想保留我在 docker hub 帐户中使用的图像,同时保持对拉取图像的引用。就像你在 github 上 fork 一个项目一样。 目前我已经尝试过jwilder/nginx-proxy图片。现在我
Perforce 中是否有命令可以获取客户端从软件仓库映射到特定文件夹的信息? 示例: 我有仓库位置//depot/myfolder/somefile.java 我想知道哪些客户端将此位置映射到哪个路
我被指派为一个项目开发一项功能。在几周的时间里,我将花几天时间研究该功能。我将克隆中央仓库。然后我将在本地工作 3 周。在此过程中,我会多次将我的进度提交到我的 repo 协议(protocol)中。
我发现自己越来越喜欢将Rstudio与R markdown文件(.rmd)一起使用,并且我非常喜欢“编织HTML +发布到Rpubs”的便利与同事共享我的工作。不幸的是,发布的文件必须是公开可见的,而
我是一名优秀的程序员,十分优秀!