Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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-如何撤消对本地提交文件的更改_Git_Git Commit_Revert - Fatal编程技术网

git-如何撤消对本地提交文件的更改

git-如何撤消对本地提交文件的更改,git,git-commit,revert,Git,Git Commit,Revert,我一直在我的本地BranchA上做以下事情: 修改文件a(错误) git添加文件a git提交-m“Modified FileA” 因此,FileA位于本地分支BranchA(也从未推送到远程)的本地提交(从未推送到远程)中 如何将更改还原到FileA 更新以及我是如何解决的 我从SourceTree撤销了对FileA的更改,而不是从git撤销,因为我意识到这对我来说更简单 为此,在SourceTree中,提交文件文件A上的r-c>“日志选择…”>选择上一次提交(您之前的提交)>提交文件上的r-

我一直在我的本地
BranchA
上做以下事情:

  • 修改
    文件a
    (错误)
  • git添加文件a
  • git提交-m“Modified FileA”
  • 因此,
    FileA
    位于本地分支
    BranchA
    (也从未推送到远程)的本地提交(从未推送到远程)中

    如何将更改还原到FileA

    更新以及我是如何解决的

    我从SourceTree撤销了对FileA的更改,而不是从git撤销,因为我意识到这对我来说更简单


    为此,在SourceTree中,提交文件文件A上的r-c>“日志选择…”>选择上一次提交(您之前的提交)>提交文件上的r-c,然后选择“重置为此提交”。这完成了任务,但谢谢大家

    您可以使用
    git reset HEAD~1
    将当前分支索引重置为上一次提交。添加
    --hard
    以重置工作目录,或者,如果要优化更改并重新提交,请将其关闭


    如果此后进行了其他更改,请先使用
    git-rebase
    将违规提交移动到堆栈顶部。

    可以使用
    git-reset-HEAD~1
    将当前分支索引重置为上一次提交。添加
    --hard
    以重置工作目录,或者,如果要优化更改并重新提交,请将其关闭


    如果此后您进行了其他更改,请首先使用git rebase将违规提交移动到堆栈顶部。

    要具体撤消该文件中的更改,但保持提交不变,请执行以下操作:

    1)将文件A恢复到以前的状态

    git checkout HEAD^ -- path/to/fileA
    
    2)在上次提交BranchA时将其包括在内

    git commit --amend
    

    (由于尚未推送,下次无需强制推送。)

    要具体撤消该文件中的更改,但保持提交不变,请执行以下操作:

    1)将文件A恢复到以前的状态

    git checkout HEAD^ -- path/to/fileA
    
    2)在上次提交BranchA时将其包括在内

    git commit --amend
    

    (由于尚未推送,下次无需强制推送。)

    首先将分支重置为上一次提交:

    git reset @^ --mixed
    
    然后,您可以使用
    签出
    将特定文件重置为旧状态:

    git checkout -- files...
    
    完成后,您可以重新提交更改:

    git add files...
    git commit -m "message"
    

    首先,将分支重置为上一次提交:

    git reset @^ --mixed
    
    然后,您可以使用
    签出
    将特定文件重置为旧状态:

    git checkout -- files...
    
    完成后,您可以重新提交更改:

    git add files...
    git commit -m "message"
    
    另一种方法(我假设您的提交仅在文件中有更改,您希望放弃这些更改):

    在你的小枝里

    git rebase -i HEAD~2
    
    它将给出两个提交的列表,按历史asc排序。最后一个是你想要改变的。因此,您希望放弃该提交。将光标移动到第二个提交位置,而不是选择
    类型
    拖放
    ,或者只选择
    d

    保存您的更改(取决于您的编辑器,它可以是
    CTRL
    +
    X
    +
    SHIFT
    +
    Y
    用于
    nano
    :wq
    用于
    vim
    ,也就是这样。

    另一种方法(我假设您的提交仅在文件中有更改,您希望放弃):

    在你的小枝里

    git rebase -i HEAD~2
    
    它将给出两个提交的列表,按历史asc排序。最后一个是您希望更改的内容。因此,您希望放弃该提交。将光标移动到第二个提交,而不是选择
    类型
    拖放
    ,或者只选择
    d


    保存您的更改(取决于您的编辑器,对于
    nano
    :wq
    对于
    vim
    ,它可以是
    CTRL
    +
    X
    +
    +
    而不是整个提交。我在提交中有FileA、FileB、FileC,我只想将FileA恢复到我之前的版本。)更改所以请关闭--hard,这样您就可以优化(git checkout--FileA)并重新提交。但我只希望撤销一个文件,而不是整个提交。我在提交中有FileA、FileB、FileC,我只希望FileA在更改之前还原为版本。所以请关闭--hard,这样您就可以优化(git checkout--FileA)由于
    git checkout HEAD^--path/to/fileA
    首先将文件写入索引,然后写入工作树,因此实际上不需要在此处执行
    git add
    步骤。但这是最短的步骤(可能是最好的)要使用的Git命令集;向上投票…谢谢,我接受你的答案,但因为我是从SourceTree改为从SourceTree执行的,所以没有机会尝试。在SourceTree中,提交文件上的r-c>日志选择…>选择上一次提交(在你之前的一次)>提交上的r-c,然后选择“重置到此提交”。这样做了,但谢谢大家,因为
    git checkout HEAD^--path/to/fileA
    首先将文件写入索引,然后写入工作树,实际上不需要在这里执行
    git add
    步骤。但这是最短的步骤(可能是最好的)要使用的Git命令集;向上投票…谢谢,我接受你的答案,但因为我是从SourceTree改过来的,所以没有机会尝试。在SourceTree中,提交文件上的r-c>日志选择…>选择上一次提交(在你之前的一次)>r-c,然后选择“重置到此提交”。这完成了任务,但谢谢大家