Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git commit--修改导致重基的别名_Git_Git Alias - Fatal编程技术网

Git commit--修改导致重基的别名

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别名被卡住了,以及它是如何导致重基的

复制步骤:

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
解决了这家伙的问题,所以我没有再看下去。我已经让那个家伙不接受我的回答,所以我可以删除它,不用担心。是的,那可能是最好的办法。另一个选项是编辑