我想要像getche()C中的类似选项.如何从命令行只读取一个字符输入?
read我们可以使用命令吗?
我已经与其他分支合并,并且在合并之后很少提交,之后我想要更改合并的消息.git rebase -i没有显示合并提交.
这就是我想要做的.我想在之前返回2次提交,将提交中更改的文件作为新提交带回来.但我不想失去我的最后一次承诺.我的最后一次提交在代码中有一些错误,但我现在想保留它.
我阅读了一些文档,但没有人清楚说明重置头部时会发生什么.例如,您是否会丢失所有提交,直到您重置为(向后)的提交?
我想了解这一切工作,但我比较困惑的git revert,reset和checkout命令.
我意识到我应该把最后一次提交藏起来而不是提交,但这是另一个故事.
我最近需要使用'git am'在我的仓库中应用16个补丁,我小心地为每个补丁使用'--committer-date-is-author-date'.但是,我还需要调整每个am'd补丁的提交消息,并且 - 在完成所有16个补丁后 - 我发现'commit --amend'碰到了每个补丁的提交者时间戳.
我终于知道我的问题可以一举解决
git rebase --committer-date-is-author-date <SHA-of-commit-prior-to-patches>
Run Code Online (Sandbox Code Playgroud)
但是在尝试使用'filter-branch'来解决我的问题之前没有这个问题.我很好奇我做错了什么.这是我的尝试:
git filter-branch --env-filter \
'export GIT_COMMITTER_DATE=$GIT_AUTHOR_DATE' SHA1..HEAD
Run Code Online (Sandbox Code Playgroud)
这是结果:
Rewrite 1c52265d1f06bd67e0fed1c09e1e75249424476e (1/15)/usr/lib/git-core/git-filter-branch: 1: export: -0500: bad variable name
Run Code Online (Sandbox Code Playgroud)
我做错了什么?我不允许在env-filter中设置/导出一个变量作为另一个变量的值吗?请注意,如果$ GIT_COMMIT匹配特定SHA,我会从有条件地更改GIT_AUTHOR_DATE和GIT_COMMITTER_DATE的方法调整我的方法,但在这种情况下,两个GIT _*_ DATE变量都被设置为常量字符串,而不是另一个变量.
如果我创建一个Git存储库并公开发布它(例如在GitHub上等),并且我从存储库的贡献者那里得到一个请求,无论出于何种原因删除或隐藏它们的名称,有没有办法轻松地这样做?
基本上,我有这样的请求,可能想用"匿名贡献者"或者他们的电子邮件地址或类似的东西替换他们的姓名和电子邮件地址.
我在Visual Studio Team Services中有一个团队项目,我使用git作为版本控制系统.
是否可以在Visual Studio网站中更改提交的作者姓名和电子邮件?
我最近在GitHub上开了一个回购.我是Git的新手.和新手一样,我承诺使用默认名称和电子邮件,我在最好的noob传统中发现了五次提交为时已晚.现在开始有趣了,因为我开始搜索有关如何更改这些提交的作者和提交者名称的信息.精细.我基本上找到了以下信息和很多副本:
这个问题似乎并不少见.我只能说没有一个解决方案有效.其中一半是同一git filter-branch -f --env-filter剧本的变体.我尝试多次处理该脚本.问题是在应用脚本后,我无法推送."快进推动被拒绝"或类似的东西.好吧,唯一的方法就是拉.拉动后,所有旧信息再次出现+带有新信息的新分支.我已经坐在这里有四个分支,以最恶劣的方式合并,都包含不同作者姓名的相同信息,包括我想删除的那个.
可以简短地删除它,我也试图删除选定的提交,这会产生我无法解决的令人毛骨悚然的冲突(如何???),并使用正确的作者信息将一些提交压缩到更新的提交中,导致当前项目状态遭到破坏.更好的是,我在执行后有时会出现分段错误git rebase -i,我在此通知:http://lists-archives.org/git/729800-rebase-i-segmentation-fault-and-another-problem.html完全是逻辑.(谢天谢地)唯一有用的是git rebase --abort,它多次保存了我的屁股.
我希望我的挫折感不会被击退,而是逗你,激励你去帮助我.我想要:
最后删除所述作者信息
奖励:摆脱包含相同信息的所有分支.
但是我对第一个也很满意,如果在没有破坏当前状态的情况下删除过去的分支的障碍对于一个git新手来说太过分了.提前致谢.
在工作中,我们有一个庞大的Perforce存储库(大约40k更改列表,总存储大小~145GB).我们对Perforce只有一些温和的抱怨感到满意,但我们计划采用更加分散的开发模式,因此,我们也希望转向更加分散的版本控制系统.
到目前为止,我已经看过通常的嫌疑人(git,mercurial和潜在的集市,因为我对它有很好的经验),但我们目前的主要障碍是从Perforce获取版本历史并导入各种DVCS,所以我们不要失去了历史.如果我们不一定要保留它,我们也不希望Perforce服务器徘徊 - 我这种迁移的经验是,一段时间后没有人看过旧的回购,所以你会失去历史那样.
由于有多个项目资源库中的想法是,当我们出口的历史,不是每个人都需要能够看到历史的每一个零件,将它拆分成多个DVCS项目.然而,我们最大的项目仍然包含大约2/3的承诺修订版,并且还占用了大约2/3的存储空间.它拥有最多的分支机构 - 大约30个.
到目前为止,我已经尝试了以下内容 - 一切都在Windows上,因为我们只是一个Windows专卖店:
hg convert扩展名导入Mercurial .这似乎对我正在转换的项目的主要分支非常有效,但是尝试使用分支图将Perforce分支转换为命名的Mercurial分支仍然会在默认分支上的每个签入时生成平面导入.也许那是因为我设置了分支映射错误,但hg help convert建议你只能将Perforce repo变成一个"扁平"结构而没有使用这个导入器的分支,这对我们的使用来说还不够好.所以,我的问题是:
如果提交已经完成并推送到存储库,并且如果想要为某个特定提交更改作者,我可以这样做:
git commit --amend --reset-author
Run Code Online (Sandbox Code Playgroud)
但是,这将改变原始的承诺日期.
如何重置作者,但保留原始提交者日期?
正如标题所说,我正在寻找一种方法来gpg签署我在存储库中的所有先前提交(最好不要在每次提交时输入我的密码).
谢谢!