相关疑难解决方法(0)

在git中处理文件重命名

我读过,当在git中重命名文件时,你应该提交任何更改,执行重命名,然后暂存重命名的文件.Git将从内容中识别文件,而不是将其视为新的未跟踪文件,并保留更改历史记录.

然而,今晚这样做我最终还是回归git mv.

> $ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   index.html
#
Run Code Online (Sandbox Code Playgroud)

将Finder中的样式表重命名iphone.cssmobile.css

> $ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   index.html
#
# Changed but not updated:
#   (use "git add/rm <file>..." to update what will be …
Run Code Online (Sandbox Code Playgroud)

git git-mv

422
推荐指数
8
解决办法
35万
查看次数

git-mv的目的是什么?

据我所知,Git并不需要跟踪文件重命名/移动/复制操作,那么git mv的真正目的是什么?手册页不是特别描述性的......

它已经过时了吗?它是一个内部命令,不是普通用户使用的吗?

git

275
推荐指数
7
解决办法
9万
查看次数

如何使用git真正显示重命名文件的日志?

我对git比较新,我之前使用过Subversion.

我注意到,如果文件已重命名,大多数图形git前端和IDE插件似乎都无法显示文件的历史记录.我用的时候

git log --follow
Run Code Online (Sandbox Code Playgroud)

在命令行上,我可以看到重命名的整个日志.

根据Linus Torvalds的说法--follow switch是一个"SVN noob",严肃的git用户不使用它:

--follow是一个彻底的黑客,意味着只是满足前SVN用户,他们从来不知道任何事情,如父母身份或漂亮的修订图表无论如何.

这并不是完全基本的,但是" - follow"的当前实现实际上是一个快速的预处理事物,它固定在修订行走逻辑上,而不是真正的整体.

它实际上被设计为"SVN noob",而不是"真正的git功能".我们的想法是,你要摆脱思维的(破碎)思维方式,重新命名大局.

我的问题:你们中的硬核git用户如何在重命名时获取文件的历史记录?这样做的"真实"方法是什么?

git

121
推荐指数
5
解决办法
3万
查看次数

VS Code 'git mv' 来保存文件历史记录?

VS Code 中是否有任何方法可以更改文件名,以便将文件历史记录保留在 git 中,并且不会认为跟踪的文件已被删除?

我希望命令的 GUI 实现:

git mv oldName.abc newName.xyz
Run Code Online (Sandbox Code Playgroud)

谢谢

git visual-studio-code

15
推荐指数
3
解决办法
2949
查看次数

在git下提交文件时如何控制重命名阈值?

我正在尝试将特定项目的连续快照放入git的历史记录中.我这样做是通过使用每个快照的内容填充存储库目录然后运行

git add -A .
git commit -m 'Version X'
Run Code Online (Sandbox Code Playgroud)

这是本答案中推荐的方法.但是,我看到只有当100%的文件内容保持不变时,提交才会识别文件重命名.有没有办法影响重命名检测,git commit使其找到重命名文件内容已经改变了一点?我看到了git merge并且git diff有各种控制重命名阈值的选项,但这些选项不存在git commit.

我尝试过的事情:

  • 在提交新文件内容之前,使用home-brew脚本定位重命名的文件,并使用原始文件执行提交重命名为新位置.然而,这引入了一个人工提交,并且似乎不优雅,因为它不使用git的重命名检测功能.
  • 为每个快照创建一个单独的分支,然后将连续的分支合并到master使用上

    git merge -s recursive -Xtheirs -Xpatience -Xrename-threshold=20

    但是,这使我保留了旧版本的重命名文件,同时也无法检测到重命名.

git rename git-commit

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

标签 统计

git ×5

git-commit ×1

git-mv ×1

rename ×1

visual-studio-code ×1