Git commit--修改导致重基的别名
我想知道为什么我的git别名被卡住了,以及它是如何导致重基的 复制步骤:Git commit--修改导致重基的别名,git,git-alias,Git,Git Alias,我想知道为什么我的git别名被卡住了,以及它是如何导致重基的 复制步骤: git config--global alias.am“commit--amend” 我可以看到别名添加了以下内容: git-config-global-e [alias] am = commit --amend --no-edit 创建新的测试回购: >git init >git-am Ctrl+c,Ctrl+c 什么也没有发生,所以我必须手动关闭它。预期结果将是致命的:您没有任何需要修改的内容。在这种情况下,
git config--global alias.am“commit--amend”
我可以看到别名添加了以下内容:
git-config-global-e
[alias]
am = commit --amend --no-edit
创建新的测试回购:
>git init
>git-am
Ctrl+c,Ctrl+c
什么也没有发生,所以我必须手动关闭它。预期结果将是致命的:您没有任何需要修改的内容。在这种情况下,因为没有提交。但发生的事情是git现在处于rebase模式:(master | AM/rebase)
当在带有提交的repo中运行时,预期的结果是打开我的默认git编辑器,这样我就可以编辑提交消息,但上面解释的相同意外行为也会发生
问题
为什么我的git-am别名会像现在这样被卡住,它又是如何让我处于一种重新设置基础的状态的
我尝试过的
我猜我的git别名在某种程度上是有缺陷的,它会导致它启动git commit--amend
,但某种程度上它无法启动编辑器。既然git commit--amend可能在后台做了一个重基来完成它的工作,那么当我强制它中止时,它会保持在那个状态吗
但是,我尝试添加--no edit无效,因此它似乎不是编辑器错误
这个问题导致我意外地执行了一个git-rebase--abort
,并丢失了一些本地的非暂存更改
系统
我在Windows10上使用GitBash
我已经使用emacs和notepad作为默认git编辑器进行了测试,结果都是一样的。问题在于
git am
通常在处理git别名时,请注意
- 当您试图覆盖已经存在的文件时,Git不会给出任何警告 关键词
- Git仍然将别名保存在配置文件中
编写新的git别名时,请记住测试您要使用的别名是否已经存在,并希望以后不要将其作为关键字添加。问题在于
git am
通常在处理git别名时,请注意
- 当您试图覆盖已经存在的文件时,Git不会给出任何警告 关键词
- Git仍然将别名保存在配置文件中
编写新的git别名时,请记住测试您要使用的别名是否已经存在,并希望以后不要将其作为关键字添加。根据git config中的文档,< 为了避免脚本使用的混乱和麻烦,隐藏 忽略现有的Git命令
am
是现有的Git命令,因此忽略alias.am
git am
正在等待一些输入,但没有收到来自stdin或修补程序文件的任何内容。所以它看起来卡住了
按Ctrl+C退出时,
git am
的过程会中断,好像遇到冲突一样。在.git
下创建了一个临时文件夹rebase apply
。有了这个文件夹,Git知道它的状态是(master | AM/REBASE)
。您可以删除.git/rebase apply
或运行git am--abort
来删除它。根据git config
中的文档
为了避免脚本使用的混乱和麻烦,隐藏
忽略现有的Git命令
am
是现有的Git命令,因此忽略alias.am
git am
正在等待一些输入,但没有收到来自stdin或修补程序文件的任何内容。所以它看起来卡住了
按Ctrl+C退出时,
git am
的过程会中断,好像遇到冲突一样。在.git
下创建了一个临时文件夹rebase apply
。有了这个文件夹,Git知道它的状态是(master | AM/REBASE)
。您可以删除.git/rebase apply
或运行git-am--abort
来删除它。git-am
实际上对于需要处理修补程序(可能通过电子邮件发送)的人来说是众所周知的。这与git格式的补丁几乎相反。是的,你可能是对的。我是从我的角度考虑的,在工作中使用git进行共享私人回购,并在github上进行爱好项目。两者都不需要很多补丁。虽然我可能应该更仔细地研究一下这些临时代码丢失的情况,“git没有什么是它自己的命令”-事实上我不知道它,并且在14年我发布答案时对git来说是相当陌生的。rebase--abort
解决了这家伙的问题,所以我没有再看下去。我已经让那个家伙不接受我的回答,所以我可以删除它,不用担心。是的,那可能是最好的办法。另一个选择是编辑你的答案并删除我的?Duno这样做的支持者是什么。git-am
对于需要处理修补程序(可能通过电子邮件发送)的人来说,事实上是众所周知的。这与git格式的补丁几乎相反。是的,你可能是对的。我是从我的角度考虑的,在工作中使用git进行共享私人回购,并在github上进行爱好项目。两者都不需要很多补丁。虽然我可能应该更仔细地研究一下这些临时代码丢失的情况,“git没有什么是它自己的命令”-事实上我不知道它,并且在14年我发布答案时对git来说是相当陌生的。rebase--abort
解决了这家伙的问题,所以我没有再看下去。我已经让那个家伙不接受我的回答,所以我可以删除它,不用担心。是的,那可能是最好的办法。另一个选项是编辑