我很清楚Git如何支持文件移动:因为它使用文件哈希,"添加"文件很容易被检测为与"删除"文件相同.
我的问题是关于重构:考虑到Java,包声明会发生变化,因此文件内容将不相同.在这种情况下,Git如何确定"添加"文件与"已删除"文件共享历史记录?它是否检查"最相似的内容",假设我只做了一些小改动,或类似的非确定性解决方案?
我知道有很多现有问题看起来很相似,所以让我在问我之前总结一下.
第一个答案,我不同意,因为我之前已经这样做了.第二个答案是我问这个问题的原因.也就是说,
我发现我一直在做git mv,但有时它被视为移动/重命名,有时它被视为删除+添加.因此,我想知道如何让它始终移动/重命名?
以这一个为例,在底部,我们可以看到几个移动/重命名的情况,比如easygenapi/tf-varcaser.go ? tf-varcaser.go.请注意,这些移动是在文件夹之间/之间!即,我做到了!
但是还有很多其他案例git mv被视为删除+添加,显示在完全相同的更改日志中.再一次,我一直在做git mv.为什么git表现不一样?
在保留历史记录的同时,有没有可靠的方法来移动/重命名git文件?
我遇到的最糟糕的一个是git子模块.我在github上有一个项目的子模块.该项目没有维护,我想提交补丁,但不能,所以我分叉了.现在子模块指向原始库,我需要它指向fork.所以我删除了旧的子模块,并在同一次提交中将其替换为新项目的子模块.事实证明这打破了其他人的存储库.我还是不知道的处理这种情况的正确方法是什么,但我最终删除的子模块,有大家拉和更新,然后我创建了新的子模块,并有大家拉和再次更新.花了一天的时间来解决这个问题.
其他人做了什么,以非显而易见的方式意外搞砸了git存储库,你是如何解决它的?
我有两个文件签入github.
现在我想重新命名backup.html成index.html,反之亦然.我并不关心维护每个文件的更改历史记录.我怎么用git做这个?
我有一个项目需要将Git存储库移植到SVN.我尝试了几种在线发布的方式,但它们都不适合我.如果有人能提供帮助,我们将非常感激.
我按照指南
git svn rebase和git svn dcommit这种方法的问题是我的Git存储库有一个复杂的历史.有许多分支出局和合并.当我选择樱桃时,它只会回收最终存储库的一部分.
问题:有没有办法避免樱桃采摘和git svn rebase?也许用其他东西替换它?
我关注这篇网络帖子:将Git repo迁移到svn
这篇文章基本上
git svn clonegit svn rebase)git dcommit 这种方法的问题类似于我在第一篇中所遇到的问题:当我这样做时git svn rebase,存在很多冲突.另外,当我跳过所有冲突时,git dcommit失败了.它告诉我:Unable to determine upstream svn information from HEAD history.
我不知道从这一点开始还有什么可以尝试的.如果您发现我做错了或有其他办法,请提出任何建议.赞赏它!!
我知道git提供'git rm'和'git mv'来删除/移动文件或目录.但是,我无法看到实际用例.
通常情况下,我只是mv或rm文件或命令行中的任何内容,在完成所有必要的操作后,我可以运行'git add -u'和'git add.',就像我问的那样答案在这里.
我错过了什么吗?有没有只有'git rm'和'git mv'的情况?
如果文件的名称和内容已更改,是否可以在提交后标记移动?
例如
file1.txt更改为file2.txt和内容更改。git commitfile1.txt已被删除并且file2.txt是一个不相关的新文件。有没有办法在提交发生后将其标记为重命名?
我想重组一个 git repo 来管理多个项目。我有一个喜欢
my-org
|--cool-repo
|--file-one
|--file-two
Run Code Online (Sandbox Code Playgroud)
我想让它像
my-org
|--cool-repo
|--project-one
|--file-one
|--file-two
|--project-two
Run Code Online (Sandbox Code Playgroud)
我已经阅读了一些 git 文档,但我不确定我应该学习哪些命令。我不需要合并代码,或者,净,删除任何东西。
我不想破坏任何东西。
当我的团队开始第二个、第三个和以后的项目时,我想组织“子目录”或“子项目”(我不确定要使用的术语)来保存与这些添加的项目相关的文档。
我应该怎么做,或者我在哪里可以最好地恢复调查?
谢谢!
我有以下源结构:
/dir1
file1
file2
file3
Run Code Online (Sandbox Code Playgroud)
dir1 不需要,因为存储库本身可以像一个文件夹,所以我希望我的git存储库看起来像这样:
file1
file2
file3
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能做到这一点?
如何在JGit中重命名文件.也就是说,给定一个名为file1的工作文件.
命令行将是:
git mv file1 file2
Run Code Online (Sandbox Code Playgroud) 我正在为我的软件公司寻找一个新的版本控制系统,这个系统相当小.到目前为止,我一直在使用CVS,但我有点关于重组文件结构的OCD,因此,我似乎总是在我的所有代码的版本1(因为更改目录名称会引发CVS的版本控制窗户).是否有更多针对开发阶段的版本控制系统(项目目录树不断变化)或者我是否需要扣下并开始编写自己的版本控制系统?基本上,我需要它来基于物理文件路径之外的其他东西来跟踪文件的版本,这样移动不会影响文件版本信息.任何建议将不胜感激.谢谢!
干杯,Lukas Rezek
git ×11
file-rename ×2
rename ×2
svn ×2
cvs ×1
dvcs ×1
git-merge ×1
git-mv ×1
git-rm ×1
hash ×1
jgit ×1
migration ×1
move ×1
refactoring ×1
repository ×1
versioning ×1