博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Git 撤消操作(分布式版本控制系统)
阅读量:7054 次
发布时间:2019-06-28

本文共 2170 字,大约阅读时间需要 7 分钟。

1、覆盖提交

  • 有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。此时,可以运行带有 --amend 选项的提交命令尝试重新提交。

    $ git commit --amend或# git commit --amend -m [提交内容说明]$ git commit --amend -m "Amend commit dsc"
    • 这个命令会将暂存区中的文件提交。如果自上次提交以来你还未做任何修改(例如,在上次提交后马上执行了此命令),那么快照会保持不变,而你所修改的只是提交信息。

    • 文本编辑器启动后,可以看到之前的提交信息。编辑后保存会覆盖原来的提交信息。

  • 例如,你提交后发现忘记了暂存某些需要的修改,可以像下面这样操作。

    $ git commit -m 'initial commit'$ git add forgotten_file$ git commit --amend
    • 最终你只会有一个提交 - 第二次提交将代替第一次提交的结果。

2、取消暂存的文件

  • 接下来的两个小节演示如何操作暂存区域与工作目录中已修改的文件。这些命令在修改文件状态的同时,也会提示如何撤消操作。

  • 例如,你已经修改了两个文件并且想要将它们作为两次独立的修改提交,但是却意外地输入了 git add * 暂存了它们两个。如何只取消暂存两个中的一个呢?git status 命令提示了你。

    $ git add *$ git statusOn branch masterChanges to be committed:  (use "git reset HEAD 
    ..." to unstage) renamed: README.md -> README modified: CONTRIBUTING.md
  • 在 “Changes to be committed” 文字正下方,提示使用 git reset HEAD <file>... 来取消暂存。所以,我们可以这样来取消暂存 CONTRIBUTING.md 文件。

    # git reset HEAD [文件名]$ git reset HEAD CONTRIBUTING.md
    Unstaged changes after reset:M   CONTRIBUTING.md$ git statusOn branch masterChanges to be committed:  (use "git reset HEAD 
    ..." to unstage) renamed: README.md -> READMEChanges not staged for commit: (use "git add
    ..." to update what will be committed) (use "git checkout --
    ..." to discard changes in working directory) modified: CONTRIBUTING.md
  • 虽然在调用时加上 --hard 选项可以令 git reset 成为一个危险的命令(可能导致工作目录中所有当前进度丢失!),但本例中工作目录内的文件并不会被修改。不加选项地调用 git reset 并不危险 — 它只会修改暂存区域。

3、撤消对文件的修改

  • 如果你并不想保留对 CONTRIBUTING.md 文件的修改怎么办?你该如何方便地撤消修改 - 将它还原成上次提交时的样子(或者刚克隆完的样子,或者刚把它放入工作目录时的样子)?幸运的是,git status 也告诉了你应该如何做。在最后一个例子中,未暂存区域是这样。

    Changes not staged for commit:  (use "git add 
    ..." to update what will be committed) (use "git checkout --
    ..." to discard changes in working directory) modified: CONTRIBUTING.md
  • 它非常清楚地告诉了你如何撤消之前所做的修改。

    # git checkout -- [文件名]$ git checkout -- CONTRIBUTING.md
    $ git statusOn branch masterChanges to be committed:  (use "git reset HEAD 
    ..." to unstage) renamed: README.md -> README
  • git checkout -- [file] 是一个危险的命令。对那个文件做的任何修改都会消失 - 你只是拷贝了另一个文件来覆盖它。除非你确实清楚不想要那个文件了,否则不要使用这个命令。

转载地址:http://pvlol.baihongyu.com/

你可能感兴趣的文章
Some Parameter Interpretation On Using Mininet
查看>>
sublime text 3创建新文件插件-AdvanceNewFile
查看>>
Inside i++
查看>>
linux bash Shell脚本经典 Fork炸弹演示及命令详解
查看>>
配置防盗链 访问控制Directory 访问控制FilesMatch
查看>>
翻译:SET Variable(已提交到MariaDB官方手册)
查看>>
JVM从理论到实践
查看>>
notepad把某个字母或者标定符号后面的内容全部删除
查看>>
KVO VS isa
查看>>
windows MSOCache删除
查看>>
【C#】C#线程_混合线程的同步构造
查看>>
install lsa package for R on ubuntu 10.04 lts lucid
查看>>
英文单词缩写查询
查看>>
由网页下载程序(完美下载图片、js、css、修改网页)解析三大网页难题
查看>>
[转载]c#委托事件简单例子
查看>>
Lua脚本语法说明(修订) - 沐枫 - 博客园
查看>>
【My Project】织物疵点检测机器视觉系统 软件测试平台
查看>>
程序3
查看>>
HDOJ---1267 下沙的沙子2[DP或卡特兰数]
查看>>
love2d教程26--对话条
查看>>