• Git


    必要的概念

    • 当前编辑界面:工作区(workspace)
    • “git add”命令:将改动加入到缓存区(Index)
    • ”git commit”命令:提交代码到本地库(Local Repository)
    • ”git push”命令:提交代码到远程库(Remote Repository)

    未使用“git add”命令缓存代码时

    git checkout

    git checkout -- <filepathname>  # 丢弃工作区某个文件的修改
    git checkout .  # 丢弃工作区所有文件的修改
    

    注意:此命令不会删除掉新建的文件,需要手动删除。

    已使用“git add”命令缓存代码

    git reset

    git reset HEAD <filepathname>  # 撤销暂存区某个文件的修改,重新放回工作区
    git reset HEAD .  # 撤销暂存区所有文件的修改,重新放回工作区
    

    注意:相当于撤销“git add”命令,但只是将本地的修改从暂存区回退到工作区。

    已使用“git commit”命令提交代码

    git reset

    git reset --hard HEAD^ <filepathname>   // 回退某个文件到上一次commit的状态
    git reset --hard HEAD^    // 回退所有文件到上一次commit的状态
    git reset --hard  <commit id>   // 回退所有文件到某个commit
    

    git commit --amend

    重做上一次commit,并包括指定文件的新变化。
    合并缓存区的修改和最近的一次commit,并尝试重新commit。可以理解为,用一个全新的commit整个替换了最近一次commit。
    如果缓存区没有内容, 可以用来编辑上一次的commit描述。
    不要对一个公共的commit使用amend。如果amend了一个被其他开发者使用的commit, 可能会严重影响其他开发者。

    git rebase

    重新定义分支的起点,也就是将当前分支从一个commit移动到另一个commit作为起点。
    分支上的老commit将被删除,保持了项目历史的干净。建议不要在一个公共的分支中使用rebase。

    git rebase <base>   # 将<base>做为当前分支的新起点, <base>可以是任何一种commit引用(如ID,branch name,tag,HEAD~N等)。
    git rebase -i <base>    # 交互式地将<base>做为当前分支的新起点,过程中可以对要rebase的commit做一定的修改。
    

    "git reset"命令

    用来撤销本地的修改。建议不要reset一个公共的项目历史。

    主要参数:

    • --soft 回退后a分支修改的代码被保留并标记为add的状态(git status 是绿色的状态)
    • --mixed 重置索引,但不重置工作树,更改后的文件标记为未提交(add)的状态。默认操作。
    • --hard 重置索引和工作树。
    git reset  # 回退版本库到上一个commit的状态, 工作区不变。
    git reset <commit>  # 回退版本库到指定的<commit>,  工作区不变。
    
    git reset --hard  # 回退版本库和工作区到上一次commit的状态。 --hard表明覆盖所有的修改,  而且是不可逆的, 因此使用之前要谨慎。
    git reset --hard <commit>  # 回退版本库和工作区到指定的<commit>。
    
    git reset --hard origin/master  # 将版本库和工作区回退到和远程的一样。
    

    回退到上个版本:git reset --hard HEAD^ <filepathname> git reset --hard HEAD^ git reset --hard HEAD~
    回退到上上个版本:git reset --hard HEAD^^ git reset --hard HEAD~1
    以此类推。

  • 相关阅读:
    node.js的request模块
    PHP实现一个简单url路由功能
    关于seajs
    CodeIgniter集成Smarty
    node.js批量修改图片名
    Node.js创建目录实例
    Bootstrap的表单设计器
    onbeforeunload事件被a链接触发的问题
    Socket.IO + Express实现的跨浏览器、子域的聊天室
    NodeJS获取命令行后面的参数
  • 原文地址:https://www.cnblogs.com/anliven/p/6354610.html
Copyright © 2020-2023  润新知