当我开始我的git repo时,我提交了一些文件作为初始提交.现在,很多提交后来,我注意到我在这些文件中包含了一条信息,其中包含我不想发布的信息(与其他代码不同).所以我想删除/更改这一行并保留其余的代码.
在我周围搜索我找到了这个解决方案:插入一个空提交作为初始提交(这里描述:在Git中根提交之前插入一个提交?),对它做一个rebase,然后通过修改编辑旧的第一次提交.不幸的是,在rebase期间出现了许多残酷的合并冲突(如下所述:git:解决由rebase引起的冲突).
有没有不同的方法来解决我的问题,或者必须手动变基和编辑所有冲突?
提前致谢 :)
我学习了 Git 和使用 VSCode,只学习了提交“amend”命令,现在在 origin (GitHub) 上尝试它。
我找不到任何方法来做到这一点。我是否需要一些外部工具才能做到这一点?我在 VSCode 的 Git 菜单中没有看到任何“push amend”
为什么即使我在运行后没有对提交(消息,文件)进行任何更改,我最新提交的SHA-1哈希值也会发生变化git commit --amend?
假设我在命令行运行以下命令.
cd ~/Desktop
mkdir test_amend
cd test_amend
git init
echo 'foo' > test.txt
git add test.txt
git commit -m 'initial commit'
Run Code Online (Sandbox Code Playgroud)
然后,调用
git log --pretty=oneline --abbrev-commit
Run Code Online (Sandbox Code Playgroud)
打印以下消息:
b96a901 initial commit
Run Code Online (Sandbox Code Playgroud)
然后我做
git commit --amend
Run Code Online (Sandbox Code Playgroud)
但我改变主意,决定不改变最后一次提交中的任何内容.换句话说,我保持最后一次提交的文件,目录和消息不变(我只保存消息文件并关闭我的编辑器).
然后,我做
git log --pretty=oneline --abbrev-commit
Run Code Online (Sandbox Code Playgroud)
再一次,我看到提交的哈希值发生了变化:
3ce92dc initial commit
Run Code Online (Sandbox Code Playgroud)
是什么导致哈希改变?是否与提交的时间戳有关?
有没有办法从远程变更集中删除a,或删除整个变更集?我意外地将.war文件推送到远程仓库,我想将其删除.
我做了一个提交并推动回购.后来我通过使用修改了提交消息git commit --amend,在弹出窗口中我输入了新消息.我可以通过看到新消息git log.经过这一切,我的git status节目就像这样.我不知道如何将这个变化推向回购.
On branch master
Your branch and `origin/master` have diverged,
and have 1 and 1 different commit(s) each, respectively.
Run Code Online (Sandbox Code Playgroud)
期待一个可行的解决方案.
我经常跑
git commit --only --amend
Run Code Online (Sandbox Code Playgroud)
重写我所做的最新提交的提交消息.无论我的工作目录是否干净,这都可以.
今天我注意到,在执行此操作时,我写的提交消息的默认指令core.editor包括以下注释:
# Clever... amending the last one with dirty index.
Run Code Online (Sandbox Code Playgroud)
除了有一点复活节彩蛋的魅力,这个消息应该告诉我什么?这是否具有讽刺意味的说法,在弄乱以前的提交时我应该小心(特别是如果存在分阶段/未分阶段的更改)?即使我的工作目录是干净的,它为什么会出现?
我想修改我的最后一次提交,但是正在运行
hg commit --amend
Run Code Online (Sandbox Code Playgroud)
给我
hg commit --amend
Run Code Online (Sandbox Code Playgroud)
即使我知道编辑变更集也是安全的.如何更改上次提交的阶段和/或告诉Mercurial修改是否安全?
我有主/头的分支foo.我想修改主人/负责人并在分支foo上获取这些更改.我做了以下事情:
git checkout master
git add ...
git commit --amend
git checkout foo
git rebase master
Run Code Online (Sandbox Code Playgroud)
问题是旧的未修改的提交在修改后显示为分支foo的一部分,并且它被重新定位到master.我做了一个git rebase -i并删除了旧的提交,但是有效,但有一种更简单/更安全的方法来修改作为分支基础的提交吗?是的,这是所有未被推送的本地提交..
我是Gerrit的新手,想要在提交新的更改时创建一个新的Patch.我使用本指南https://review.typo3.org/Documentation/install-quick.html设置了Gerrit
然后我尝试使用http://gerrit.googlecode.com/svn/documentation/2.0/user-changeid.html创建一个新的补丁,并Change-Id在Commit-message的底部添加了一行.
但我正在获得新的改变,而不是新的Patchset.谁能帮我?
谢谢
虽然我经常使用Git,但我还是初学者.
有时,我犯了一个错误,但只有在我提交之后才发现它.在那时,我通常不得不花费很长时间在互联网上寻找我应该用来摆脱它的命令(在推送之前).
每当发生这种情况时,我发现自己想知道我经常遇到的四个术语之间的区别是什么:
我认为现在是时候一劳永逸地学习这些差异了.这些是什么?