问题标签 [git-history]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - 将丢失的文件推送到 git lfs
不幸的是,我在.gitattributes
几周前(以及提交和推送)引入了一个错误。因此.gitignore
,我的项目的子文件夹被假定在 git lfs 上。但由于某种原因,它从未被推到那里。.gitattributes
我通过新的提交纠正了错误。现在,一切都很好,除了我无法签出旧提交,它假定文件存在于 git lfs 中。我收到以下错误:
我该如何解决?有没有办法手动推送文件并给它正确的ID?或者我可以回顾性地修复错误的提交吗?
git - 代码已经移动后,是否可以将历史记录从 TFVC 存储库迁移到 Git 存储库?
去年,来自 TFS TFVC 存储库的代码被复制到没有历史记录的 TFS Git 存储库。它只是将文件复制/粘贴到新的 git 存储库中。现在是否可以从旧的 TFVC 存储库迁移历史记录?
git - 无论git历史记录中的分支如何,如何检查最新提交?
在我的项目中有多个分支。我想检查哪个是历史记录中的最新提交,而与任何分支无关。
我已经尝试过 git log -n 1 --date-order
,但它在签出的分支中给出了提交
请帮我一个命令,我可以用它来查看不依赖于分支的 git 历史记录中的最新提交。结果应该给我提交和提交它的分支名称。
linux - 如何从 Git 存储库的历史记录中完全擦除二进制文件及其痕迹
语境
所以,我的存储库被一些讨厌的二进制文件污染了。有人推送*.zip
, *.tar.gz
, 和*.prm
文件——这是团队的决定。几周后,团队意识到移动 2Gb 数据并不方便。因此,我尝试按照git 文档永久删除大型二进制文件,但收效甚微。
我做了什么
1. 垃圾先收集并检查 repo 大小
2.查找Git历史上最大的文件
3.尝试从每次提交中永久删除文件(此步骤针对每个大文件执行)
...其次是...
4. 再次收集垃圾并重新检查 repo 大小
如您所见,size-pack
值从2690503
Kb 变为2690500
Kb,这并不是令人印象深刻的清理。但更重要的是,运行$ git rev-list --objects --all | grep 5d77503744dd5b13d49942557b867ab065f45ce1
5d77503744dd5b13d49942557b867ab065f45ce1 distribution/cylinders-server/cylinders-server-distribution-0.1.0-SNAPSHOT-distribution.tar.gz
仍然显示文件在那里......
git - 在 Git repro 的历史记录中搜索特定文件
如何在我的 git 存储库的历史记录中搜索特定文件类型?(例如 *.log)
我知道我可以在当前状态或特定提交中搜索 ls-files,但我想搜索所有提交。这确实包括在早期提交中已从分支中删除的文件。
最终结果应该列出所有文件名和文件生效的提交。使用该列表,我可以返回文件的早期版本并查看它。
git - 如何从 BitBucket git 存储库历史记录中删除带有密码的提交?
前段时间我不小心向 BitBucket git 存储库提交了密码,在当前 master 后面有几个提交。虽然我后来通过不使用它提交来删除密码,但它仍然存在于过去的几次提交中。
我不介意在这些提交期间丢失更改的历史记录。我也不担心有人在提交密码时看到了密码,但我想删除此历史记录以避免将来出现问题。
采取什么步骤来确保在这些步骤之后,以后访问此 BitBucket 存储库的任何人都无法找到此密码?
假设我的提交(从最旧到最新)带有(假)SHA1:c001 c002 c003 c004
c002 和 c003 是我想完全删除的“坏”提交的哈希值。我希望 master 留在 c004 上,但是如果我让他们访问这个 repo,任何人都无法再访问 c002 和 c003。我尝试按照关于提供重置或变基的类似问题的说明进行操作,但无法使它们正常工作;我要么设法删除我机器上的提交,但无法推回 BitBucket,或者在搞砸后无法完全删除我的机器。
有人可以解释一下所需的步骤: 1. 从存储库的历史记录中删除 c002 和 c003 2. 确保它保存在 BitBucket 上,并且人们既不能在 BitBucket 的 GUI 中查看这些提交,也不能通过将存储库克隆到他们的机器来查看这些提交
我会很感激能解释命令的作用的答案,而不仅仅是编写一些对我有用或对我不起作用的神奇 git 命令。此外,这个问题是专门针对 BitBucket 的,以防某些事情可能是特定的......我在尝试将更改推送回 BitBucket 后,在进行本地回购后遇到了“更新被拒绝,因为您当前分支的尖端落后”的问题用 reset --hard 改变。在几次失败的尝试和对 git 文档的挫败之后,我决定问 SO。
.
git - 如何从 git 历史记录中提取所有更改或添加的文件?
我可以从项目的 git 历史记录中提取修改/添加文件的文件名吗?我需要一个修改/添加文件的列表作为文本文件。
git - 为显式合并建立“干净”的 git 历史记录
我有一个使用GitFlow的 git 存储库(即,它有master
、develop
、release-*
和feature-*
分支)。然而,合作者并没有使用显式合并(即git merge --no-ff
),因此 eggit log --first-parent
没有提供迄今为止的合并历史的简单汇总。
展望未来,合作者将使用显式合并。但是,在他们这样做之前,我想确保历史记录是“干净的”,以便在调用git log --first-parent
. 但是,显然,我想在调用 unfiltered 时保持实际git log
的提交历史。
我的倾向是执行以下操作:
基本上,我们的想法是:
- 建立一个
--orphan
没有先前历史的新 ( ) 分支 - (可选)从工作树中删除所有文件,这样我们就不会重新提交它们
- 建立一个初始提交,以便我们有一些东西可以合并到
- 从分支执行显式合并(即, ) ,确认不相关的历史
--no-ff
develop
- 快进
develop
到我们刚刚执行的显式合并,以便表示历史
我的问题:在将其应用于生产环境之前,我应该了解这种方法的后果吗?是否有替代或更简单的方法更适合完成此类场景?
(在测试中,这似乎实现了我的目标,并且对现有分支或工作流程没有不利影响。但是,使用 git,我总是对我不知道我不知道的事情保持警惕。)
git - Git:将Master的提交历史替换为功能分支的历史
我是 Git 中交互式变基的新手,所以我创建了一个分支,我可以在其中压缩提交 ( squash-branch
),以防万一我毁了某些东西。我没有更改分支上的任何文件,只是更改了历史记录。我合并了分支以master
期望它将提交新的提交历史squash-branch
。
如何替换master
withsquash-branch
的历史记录的提交历史记录?换一种心情说,我想master
拥有squash-branch
的历史。
我已经尝试了两种强制覆盖master
的方法squash-history
。“我们的战略”和git branch -f master squash-branch
。
如果您需要更多详细信息,请通知!
谢谢!