美文网首页
git常用命令行

git常用命令行

作者: 持心守正 | 来源:发表于2017-12-07 16:31 被阅读14次

    一.只git commit 而没有 git push的撤销:

    1. 找到上次git commit的 id
      git log
      找到你想撤销到的commit_id
    2. git reset --hard commit_id
      完成撤销,同时将代码恢复到commit_id 对应的版本。
    3. git reset commit_id
      完成Commit命令的撤销,但是不对代码修改进行撤销,可以直接通过git commit 重新提交对本地代码的修改。

    二:撤销已经push到远程的commit:

    情况1:
    在使用git时,push到远端后发现commit了多余的文件,或者希望能够回退到以前的版本。先在本地回退到相应的版本:
    git reset --hard <版本号>
    // 注意使用 --hard 参数会抛弃当前工作区的修改
    // 使用 --soft 参数的话会回退到之前的版本,但是保留当前工作区的修改,可以重新提交
    如果此时使用命令:git push origin <分支名>,会提示本地的版本落后于远端的版本;
    为了覆盖掉远端的版本信息,使远端的仓库也回退到相应的版本,需要加上参数--force
    git push origin <分支名> --force
    情况2:
    git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit
    看似达到的效果是一样的,其实完全不同.
    第一:
    上面我们说的如果你已经push到线上代码库, reset 删除指定commit以后,你git push可能导致一大堆冲突.但是revert 并不会.
    第二:
    如果在日后现有分支和历史分支需要合并的时候,reset 恢复部分的代码依然会出现在历史分支里.但是revert 方向提交的commit 并不会出现在历史分支里.
    第三:
    reset 是在正常的commit历史中,删除了指定的commit,这时 HEAD 是向后移动了,而 revert 是在正常的commit历史中再commit一次,只不过是反向提交,他的 HEAD 是一直向前的.

    相关文章

      网友评论

          本文标题:git常用命令行

          本文链接:https://www.haomeiwen.com/subject/dsxjixtx.html