我在提交消息中写了错误的东西.或者,我忘了包含一些文件.
如何更改提交消息/文件?提交尚未被推送.
我通常会提交一份提交列表以供审核.如果我有以下提交:
HEADCommit3 Commit2 Commit1...我知道我可以修改头部提交git commit --amend.但是我怎么能修改Commit1,因为它不是HEAD提交?
随着git rebase --interactive <commit>你能够压制任意数量的提交连成一个单一的一个.
除非你想将提交压缩到初始提交中,否则这一切都很棒.这似乎是不可能的.
有没有办法实现它?
在一个相关的问题中,我设法提出了一种不同的方法来解决第一次提交的问题,这也就是说,它是第二次提交.
如果您有兴趣:git:如何插入提交作为第一个,转移所有其他?
我希望在我的项目的第一次提交中更改某些内容而不会丢失所有后续提交.有没有办法做到这一点?
我不小心在源代码中的评论中列出了我的原始电子邮件,我想改变它,因为我从机器人索引GitHub收到垃圾邮件.
我之前已经问过如何在git存储库中压缩前两个提交.
虽然这些解决方案非常有趣,而且并不像git中的其他一些东西那样令人惊讶,但如果你需要在项目开发过程中多次重复这个过程,它们仍然是一个众所周知的伤害.
所以,我宁愿只经历一次痛苦,然后能够永远使用标准的交互式rebase.
那么,我想做的是拥有一个空的初始提交,仅仅是为了成为第一个提交.没有代码,没有任何东西.只是占用空间,因此它可以作为rebase的基础.
我的问题是,拥有一个现有的存储库,如何在第一个存储库之前插入一个新的空提交,并将其他所有人转移?
假设您有一个包含三个提交A,B和C的历史记录:
A-B-C
Run Code Online (Sandbox Code Playgroud)
我想将两个提交A和B组合到一个提交AB:
AB-C
Run Code Online (Sandbox Code Playgroud)
我试过了
git rebase -i A
Run Code Online (Sandbox Code Playgroud)
这打开了我的编辑器,其中包含以下内容:
pick e97a17b B
pick asd314f C
Run Code Online (Sandbox Code Playgroud)
我改成这个
squash e97a17b B
pick asd314f C
Run Code Online (Sandbox Code Playgroud)
然后Git 1.6.0.4说:
Cannot 'squash' without a previous commit
Run Code Online (Sandbox Code Playgroud)
有办法还是不可能?
➜~myprojectgit :(主人) git log
commit a99cce8240495de29254b5df8745e41815db5a75
Author: My Name <my@mail.com>
Date: Thu Aug 16 00:59:05 2012 +0200
.gitignore edits
commit 5bccda674c7ca51e849741290530a0d48efd69e8
Author: My Name <my@mail.com>
Date: Mon Aug 13 01:36:39 2012 +0200
Create .gitignore file
commit 6707a66191c84ec6fbf148f8f1c3e8ac83453ae3
Author: My Name <my@mail.com>
Date: Mon Aug 13 01:13:05 2012 +0200
Initial commit (with a misleading message)
Run Code Online (Sandbox Code Playgroud)
reword我第一次提交的提交消息(6707a66)➜~myprojectgit :(主人) git rebase -i 6707
(...进入vim)
pick 5bccda6 Create .gitignore file
pick a99cce8 .gitignore edits
# Rebase 6707a66..a99cce8 onto …Run Code Online (Sandbox Code Playgroud) 一个SVN仓库成功转换到Git的,我现在有一个我想分解成多个更小的存储库,并保持历史上的一个非常大的Git仓库.
那么,有人可以帮助拆分可能看起来像这样的回购:
MyHugeRepo/
.git/
DIR_A/
DIR_B/
DIR_1/
DIR_2/
Run Code Online (Sandbox Code Playgroud)
进入两个看起来像这样的存储库:
MyABRepo/
.git
DIR_A/
DIR_B/
My12Repo/
.git
DIR_1/
DIR_2/
Run Code Online (Sandbox Code Playgroud)
我试过以下几个方向在此之前的问题,但它试图把多个目录到一个单独的回购协议(时并不真正适合拆离(移动)子目录成独立的Git仓库).
我曾经git init创建一个新的回购,然后做了三次提交.现在我想改变回去修改我的第一次提交,但如果我这样做git rebase -i HEAD~3抱怨!如果我尝试相同HEAD~2然后它有点工作,但只允许我重新排列最后两个提交.
如何在有任何提交之前引用'commit'或者返回并插入空提交?
我收到了一些源代码并决定使用git,因为我的同事使用了mkdir $VERSION等方法.虽然代码的过去目前似乎并不重要,但我仍然希望将其置于git控制之下以更好地理解开发过程.所以:
将这些过去的版本放入我现有的git仓库的简便方法是什么?目前没有远程仓库,所以我不介意重写历史记录,但考虑到远程存储库的解决方案当然是首选,除非它更复杂.基于目录或基于档案文件的历史记录,不需要任何更多交互的脚本的加分点.
git ×10
git-rebase ×5
rebase ×4
git-commit ×2
git-amend ×1
message ×1
repository ×1
split ×1
squash ×1