我第一次犯时犯了一个错误.我在另一个人的计算机上并用他们的user.name而不是我的推送了一个版本.我怎么能删除这个?
我想通过简单地触摸一个空的.gitignore文件并提交它,以"空"初始提交开始我的所有git存储库.我的理由与这个问题大致相同.通过Baiscally,第一个提交("尾部")没有父提交,因此会发生各种奇怪和意外的事情,这些事情不会发生在其他提交中.
那么有什么类似post-init钩子可以用来跟踪每个git init touch .gitignore && git commit .gitignore -m "Initial commit"吗?或者我应该编写自己的自定义init命令来执行此操作?
我实际上有两个存储库:
mainexternal该main仓库是一段时间后,将合并后external/main的目录(如子树).现在我想将所做的更改迁移external/main回main存储库,但只有这些提交而没有其他无关的提交external/<anything-else>.
我实际上尝试过经典:
git filter-branch --tag-name-filter cat --prune-empty --subdirectory-filter main -- --all
Run Code Online (Sandbox Code Playgroud)
但是这也删除了对初始main存储库所做的所有提交,只留下了在externalgit存储库中创建的提交.
那么:如何只保留提交:
a)制作初始main存储库
和
b)制作external(external/main)的子树
当我尝试时git pull -s subtree ../external,提交都被合并,包括在子树中没有改变任何内容的提交.我想只有实际改变子树中某些内容的提交,并且还只有来自子树的文件信息.
我正在使用一个理论上应该遵循Gitflow工作流程的存储库(参见Vincent Driessen 成功的git分支模型).但是,存储库上的初始提交是在develop分支上进行的,并且没有master可见的分支.它即将发布时间,我需要创建一个master分支,反映项目的生产就绪状态,应该从一开始就存在.请记住,develop分支有多个功能分支.存储库完全是本地的,尚未推送.
我的想法是创建一个孤儿分支master并将develop分支重新分支到它上面,但我不知道我该如何去做.
那么,我怎样才能创建master分支,就像它从一开始就创建一样?
更新:在我的情况下,第一次提交develop不是应该被认为适合生产的提交,因此使用它作为初始master提交将是不明智的.项目处于此状态的原因是因为它在决定使用Git时最初没有使用VCS.
我决定从其他旧版本控制系统追溯提交历史,这是 Git 中从未出现过的。所以我创建了一个孤立分支“newroot”,并将提交从其他版本控制系统导入到它。以下问题在 Git 中的根提交之前插入提交?
“newroot”分支最终得到与“master”分支的根提交完全匹配的文件。
现在我想将“master”分支重新设置为“newroot”孤儿分支,例如:
git rebase --onto newroot --root master
Run Code Online (Sandbox Code Playgroud)
问题是我被提示解决所有合并冲突。在多年的时间里,有数百次合并。我只是无法手动解决它们。而且真的没有必要,因为这些合并在过去已经解决了。由于 rebase 实际上不会改变内容(因为我在同一棵树上进行 rebase),我希望 Git 准确地“重放合并”。
有没有办法指定 rebase 应该使用与以前使用的相同的分辨率?
我知道“rerere”在这里可能会有所帮助。但是我必须在最初合并时已经启用它,对吗?或者我可以追溯重新创建“rerere”缓存?
我可以想象我的任务的替代解决方案。以某种方式要求 Git 连接“newroot”和“master”分支,而不实际重新定位。但我不确定这是否可能。
找到一篇关于使用空提交启动存储库的文章。看了几遍帖子,还是不明白其中的道理:
\n\n\n1.
\ngit log和其他命令会出现可怕的错误消息。2. 您可以\xe2\x80\x99
\ngit reset回到初始状态。
根据上面前两节的标题,我怀疑这可能是一篇讽刺作品。
\n\n\n3. 您可以\xe2\x80\x99t 重新设置初始提交的基准。
\n
然而,这似乎是一个有效的观点(与链接文章《鲜为人知的 Git 命令》相呼应)呼应),但当我开始思考它时,我只是看不出这在实践中有何用处(或者什么)它试图阻止)。
\n原帖链接:(2008?)Git Magic - 附录\xc2\xa0A.\xc2\xa0Git 缺点:初始提交
\n我同意“从 0 开始计数”的观点,但除了迂腐之外,仍然不明白空的初始提交有什么好处。
\n原帖链接:(2010) 如何初始化我的 Git\xc2\xa0repositories | 凯文·德尔戴克
\n这篇文章确实给出了使用此技巧进行代码考古目的的基本原理(仍然不了解具体细节,但我知道这是针对特殊用例的)。
\n第 3 项和第 4 项中的链接显然已经过时,并且整个想法显然从未成功(?),但我仍然想知道它是否仍然有好处 - 或者从那时起 Git 的变化消除了它的必要性。
\n当然,在输入所有这些内容后,我找到了 SO 线程:
\n