比方说,你已经提交了所有的文件,但实际上意味着一些。
git commit -am "commit1" # should've been instead git add file1 file2 git commit -m "commit1"
我如何从提交中删除一些文件?我不想删除修改,我只想这次不要提交所有的文件。
oipij1gg1#
请尝试以下操作:
git reset HEAD^ git add <your files> git commit
说明:git reset在这种情况下会改变分支所指向的内容,而不会影响仓库中的文件。HEAD^指向的提交刚好在您所查看的提交之前,因此reset HEAD^会通过使分支指向提交历史中刚好在其之前的提交来"撤销"该提交。由于您保留了文件,因此可以根据需要重新添加它们。旁注:当你将分支指向上一个提交时,你当前的提交就变成了"孤儿",很难再被找到了.你可以用git reflog在reflog中找到它的提交ID,然后用git show <ID>或类似的命令显示它.你也可以在reset操作之前创建一个新的标签或分支.一般来说,只要您在某个时间点提交了数据,就不会丢失数据。@mariusm说的也很管用:你可以使用git checkout HEAD^ -- my-file.txt命令将不需要的文件恢复到以前的状态(小心,这会覆盖当前版本),然后使用git add my-file.txt; git commit --amend命令提交它。2根据你想要实现的目标,这可能会更复杂。
git reset
HEAD^
reset HEAD^
git reflog
git show <ID>
reset
git checkout HEAD^ -- my-file.txt
git add my-file.txt; git commit --amend
qni6mghb2#
如果你还没有艾德你的提交,那么就做你想做的事情,用git add或git rm添加修改,然后执行git commit --amend(你可能想修改消息,但这是这个命令的另一个选项)
git add
git rm
git commit --amend
kkih6yb83#
假设你想从提交<A>中获取一些文件,那么你可以:
<A>
git checkout <A> path/to/the/file.txt git commit --amend
通常情况下,当您错误地提交了文件时,您希望从上一次提交中 checkout 该文件:
git checkout HEAD^ path/to/the/file.txt git commit --amend
3条答案
按热度按时间oipij1gg1#
请尝试以下操作:
说明:
git reset
在这种情况下会改变分支所指向的内容,而不会影响仓库中的文件。HEAD^
指向的提交刚好在您所查看的提交之前,因此reset HEAD^
会通过使分支指向提交历史中刚好在其之前的提交来"撤销"该提交。由于您保留了文件,因此可以根据需要重新添加它们。
旁注:当你将分支指向上一个提交时,你当前的提交就变成了"孤儿",很难再被找到了.你可以用
git reflog
在reflog中找到它的提交ID,然后用git show <ID>
或类似的命令显示它.你也可以在reset
操作之前创建一个新的标签或分支.一般来说,只要您在某个时间点提交了数据,就不会丢失数据。@mariusm说的也很管用:你可以使用
git checkout HEAD^ -- my-file.txt
命令将不需要的文件恢复到以前的状态(小心,这会覆盖当前版本),然后使用git add my-file.txt; git commit --amend
命令提交它。2根据你想要实现的目标,这可能会更复杂。qni6mghb2#
如果你还没有艾德你的提交,那么就做你想做的事情,用
git add
或git rm
添加修改,然后执行git commit --amend
(你可能想修改消息,但这是这个命令的另一个选项)kkih6yb83#
假设你想从提交
<A>
中获取一些文件,那么你可以:通常情况下,当您错误地提交了文件时,您希望从上一次提交中 checkout 该文件: