聊天社交软件件上怎么与女孩聊天

- 最好的系统光盘下载网站!
当前位置: >
> 详细页面
Linux系统如何在Git里撤销操作
来源:系统之家
作者:zhijie
  可以说,所有的操作系统都有撤销的操作,当然也不例外。而且在Linux的 Git中就可以撤销掉绝大部分的错误操作,一起来看一下吧。
  当你进行一次新的提交的时候,Git 会保存你代码库在那个特定时间点的快照;之后,你可以利用 Git 返回到你的项目的一个早期版本。
  在本篇博文里,我会讲解某些你需要&撤销&已做出的修改的常见场景,以及利用 Git 进行这些操作的最佳方法。
  撤销一个&已公开&的改变
  场景: 你已经执行了 git push, 把你的修改发送到了 GitHub,现在你意识到这些 commit 的其中一个是有问题的,你需要撤销那一个 commit.
  方法: git revert 《SHA》
  原理: git revert 会产生一个新的 commit,它和指定 SHA 对应的 commit 是相反的(或者说是反转的)。如果原先的 commit 是&物质&,新的 commit 就是&反物质& & 任何从原先的 commit 里删除的内容会在新的 commit 里被加回去,任何在原先的 commit 里加入的内容会在新的 commit 里被删除。
  这是 Git 最安全、最基本的撤销场景,因为它并不会改变历史 & 所以你现在可以 git push 新的&反转& commit 来抵消你错误提交的 commit。
  修正最后一个 commit 消息
  场景: 你在最后一条 commit 消息里有个笔误,已经执行了 git commit -m &Fxies bug #42&,但在 git push 之前你意识到消息应该是 &Fixes bug #42&P。
  方法: git commit --amend 或 git commit --amend -m &Fixes bug #42&
  原理: git commit --amend 会用一个新的 commit 更新并替换最近的 commit ,这个新的 commit 会把任何修改内容和上一个 commit 的内容结合起来。如果当前没有提出任何修改,这个操作就只会把上次的 commit 消息重写一遍。
  撤销&本地的&修改
  场景: 一只猫从键盘上走过,无意中保存了修改,然后破坏了编辑器。不过,你还没有 commit 这些修改。你想要恢复被修改文件里的所有内容 & 就像上次 commit 的时候一模一样。
  方法: git checkout -- 《bad filename》
  原理: git checkout 会把工作目录里的文件修改到 Git 之前记录的某个状态。你可以提供一个你想返回的分支名或特定 SHA ,或者在缺省情况下,Git 会认为你希望 checkout 的是 HEAD,当前 checkout 分支的最后一次 commit。
  记住:你用这种方法&撤销&的任何修改真的会完全消失。因为它们从来没有被提交过,所以之后 Git 也无法帮助我们恢复它们。你要确保自己了解你在这个操作里扔掉的东西是什么!(也许可以先利用 git diff 确认一下)
  重置&本地的&修改
  场景: 你在本地提交了一些东西(还没有 push),但是所有这些东西都很糟糕,你希望撤销前面的三次提交 & 就像它们从来没有发生过一样。
  方法: git reset 《last good SHA》 或 git reset --hard 《last good SHA》
  原理: git reset 会把你的代码库历史返回到指定的 SHA 状态。 这样就像是这些提交从来没有发生过。缺省情况下, git reset 会保留工作目录。这样,提交是没有了,但是修改内容还在磁盘上。这是一种安全的选择,但通常我们会希望一步就&撤销&提交以及修改内容 & 这就是 --hard 选项的功能。
  在撤销&本地修改&之后再恢复
  场景: 你提交了几个 commit,然后用 git reset --hard 撤销了这些修改(见上一段),接着你又意识到:你希望还原这些修改!
  方法: git reflog 和 git reset 或 git checkout
  原理: git reflog 对于恢复项目历史是一个超棒的资源。你可以恢复几乎 任何东西 & 任何你 commit 过的东西 & 只要通过 reflog。
  你可能已经熟悉了 git log 命令,它会显示 commit 的列表。 git reflog 也是类似的,不过它显示的是一个 HEAD 发生改变的时间列表。
栏目热门教程
人气教程排行
热门系统下载
本站发布的系统与软件仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,否则后果自负,请支持购买微软正版软件!如侵犯到您的权益,请及时通知我们,我们会及时处理。
Copyright&2011 系统之家(www.xitongzhijia.net) 版权所有 闽ICP备号-1git 放弃文件修改 和 版本回退 - 黄彪学习笔记 - ITeye技术网站
博客分类:
一、放弃对git管理的文件修改
条件:bb.txt文件已经被git管理
过程:发现bb.txt文件被修改了,发现改了之后不是自己想要的结果
目的:想恢复到没有被修改的状态
解决办法:
git checkout bb.txt
git放弃对当前文件夹的所有文件的修改?
git checkout .
二、将文件放入到暂存区后,希望撤销暂存区的文件,与版本库的文件一致。
三、对没有被git管理的文件修改
条件:cc.txt文件没有被git管理
过程:添加的文件太多太紊乱了,
目的:想直接回复到某个版本
解决办法:
git reset --hard {版本号}
浏览 28136
浏览: 2028603 次
来自: 长沙
debug版本的apk没有问题,签名以后的apk 就不跳转链接 ...
直接用缓存啊 干嘛用map
不错。不知道你知不知道,缓存写磁盘,再恢复的问题
下载439次,就没一个说谢谢。ps:谢谢博主的分享。超级有用的git&reset&--hard和git&revert命令
很多时候,git新手容易误操作,比如,在levelIISZ-1.4.dev分支下,运行了git pull idc
cpp-1.0的结果,这样做麻烦很大,经常导致maven项目格式不正确,这个时候,可以用git reset --hard
去撤销这次修改
但是这样做也有问题,可能之前本地的,没有提交的修改,都消失了。可以尝试git revert命令
reset是指将当前head的内容重置,不会留任何痕迹。
Sets the current head to the specified commit and optionally
resets the index and working tree to match.&
&git reset --hard HEAD~3
会将最新的3次提交全部重置,就像没有提交过一样。
根据--soft --mixed
--hard,会对working tree和index和HEAD进行重置。
revert是撤销某次提交,但是这次撤销也会作为一次提交进行保存(这样就不会丢失原来修改过,但是没有提交的内容?)。
//////////////////////////////////////////////////////////////////////////////////
非常好的一篇文章
http://alpha-blog.wanglianghome.org//git-partial-rollback/
如何使用git回退部分修改
人总有犯错误的时候,如果发现不小心把私货提交到公共代码库,改如何挽回呢?
例如如下代码库:
$ mkdir git-partial-revert
$ cd git-partial-revert
$ echo "hello a" &a.txt
$ echo "hello b" &b.txt
$ git init
Initialized empty Git repository in
/home/liang/project/git/git-partial-revert/.git/
$ git add *.txt
$ git commit -m "initial version"
[master (root-commit) b5e1a24] initial version
&2 files changed, 2 insertions(+), 0
deletions(-)
&create mode 100644 a.txt
&create mode 100644 b.txt
commit b5e1a24fc435750dd9fb5e0d04d0
Author: Liang Wang &a@b.c&
Date:&& Fri Jul 30 13:20:38 2010
&initial version
以下是一次错误的修改。
$ echo "hello a from b" &&a.txt
$ echo "hello b from a" &&b.txt
$ git commit -a -m "hello a from b"
[master df3144e] hello a from b
&2 files changed, 2 insertions(+), 0
deletions(-)
$ git push origin master
commit dfec189ed0b2be862fe5
Author: Liang Wang &a@b.c&
Date:&& Fri Jul 30 13:22:51 2010
&hello a from b
commit b5e1a24fc435750dd9fb5e0d04d0
Author: Liang Wang &a@b.c&
Date:&& Fri Jul 30 13:20:38 2010
&initial version
错误在于只应该提交对于a.txt的修改,b.txt的修改是私货,应该留在本地,以后提交。
第一种方法:纯手工修改。取决于要修改的内容多少,这可能是最简单也可能是最笨的方法。
如果错误发生在最新的commit里面,可以使用git reset修改。如下:
$ git reset b5e1a24f -- b.txt
Unstaged changes after reset:
$ cat b.txt
hello b from a
commit dfec189ed0b2be862fe5
Author: Liang Wang
Date:&& Fri Jul 30 13:22:51 2010
&hello a from b
commit b5e1a24fc435750dd9fb5e0d04d0
Author: Liang Wang &a@b.c&
Date:&& Fri Jul 30 13:20:38 2010
&initial version
$ git diff
diff --git a/b.txt b/b.txt
index b1bdbca..ab
--- a/b.txt
+++ b/b.txt
@@ -1 +1,2 @@
+hello b from a
$ git status
# On branch master
# Changes to be committed:
#&& (use "git reset HEAD
&file&..." to unstage)
modified:&& b.txt
# Changed but not updated:
#&& (use "git add
&file&..." to update what will be
committed)
#&& (use "git checkout --
&file&..." to discard changes in
working directory)
modified:&& b.txt
$ git diff --cached
diff --git a/b.txt b/b.txt
index ab47375..b1bdbca 100644
--- a/b.txt
+++ b/b.txt
@@ -1,2 +1 @@
-hello b from a
$ git commit -m "revert change in b"
[master d49f9f2] revert change in b
&1 files changed, 0 insertions(+), 1
deletions(-)
$ git push origin master
$ git status
# On branch master
# Changed but not updated:
#&& (use "git add
&file&..." to update what will be
committed)
#&& (use "git checkout --
&file&..." to discard changes in
working directory)
modified:&& b.txt
no changes added to commit (use "git add" and/or "git commit
$ git diff
diff --git a/b.txt b/b.txt
index b1bdbca..ab
--- a/b.txt
+++ b/b.txt
@@ -1 +1,2 @@
+hello b from a
$ git log --stat
commit d49f9fea53006bd698bbcdd54698e9
Author: Liang Wang &a@b.c&
Date:&& Fri Jul 30 13:34:43 2010
&revert change in b
&1 files changed, 0 insertions(+), 1
deletions(-)
commit dfec189ed0b2be862fe5
Author: Liang Wang &a@b.c&
Date:&& Fri Jul 30 13:22:51 2010
&hello a from b
&2 files changed, 2 insertions(+), 0
deletions(-)
commit b5e1a24fc435750dd9fb5e0d04d0
Author: Liang Wang &a@b.c&
Date:&& Fri Jul 30 13:20:38 2010
&initial version
&2 files changed, 2 insertions(+), 0
deletions(-)
这时b的修改就从公共代码库上拿掉了,但是还保留在本地。
或者也可以使用git revert。下面操作的缺点是没有保留对于b.txt的修改。如何保留修改留给读者作为习题 :-)
$ git revert -n df3144e31
Finished one revert.
$ git status
# On branch master
# Changes to be committed:
#&& (use "git reset HEAD
&file&..." to unstage)
modified:&& a.txt
modified:&& b.txt
$ git diff --cached
diff --git a/a.txt b/a.txt
index 2c5e468..644
--- a/a.txt
+++ b/a.txt
@@ -1,2 +1 @@
-hello a from b
diff --git a/b.txt b/b.txt
index ab47375..b1bdbca 100644
--- a/b.txt
+++ b/b.txt
@@ -1,2 +1 @@
-hello b from a
$ git reset HEAD a.txt
Unstaged changes after reset:
$ cat a.txt
$ git checkout -- a.txt
$ cat a.txt
hello a from b
$ cat b.txt
$ git commit -m "revert change in b"
[master 5f6a2e1] revert change in b
&1 files changed, 0 insertions(+), 1
deletions(-)
$ git log --stat
commit 5f6a2e16bfde3644aa8
Author: Liang Wang &a@b.c&
Date:&& Fri Jul 30 14:17:44 2010
&revert change in b
&1 files changed, 0 insertions(+), 1
deletions(-)
commit dfec189ed0b2be862fe5
Author: Liang Wang &a@b.c&
Date:&& Fri Jul 30 13:22:51 2010
&hello a from b
&2 files changed, 2 insertions(+), 0
deletions(-)
commit b5e1a24fc435750dd9fb5e0d04d0
Author: Liang Wang &a@b.c&
Date:&& Fri Jul 30 13:20:38 2010
&initial version
&2 files changed, 2 insertions(+), 0
deletions(-)
如果错误的修改已经不是最新的commit,则只能使用git revert。
/////////////////////////////////////////////////////////////////////////////
我们teamleader的总结,很不错的!!!
/blog/1014369
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。您还可以使用以下方式登录
当前位置:&>&&>& > git 中的reset和revert
git reset revert git 中的reset和revert
git 中的reset和revert。最近用github做我的博客,有些时候会设置错误需要用撤回操作,这时就用到Git revert与reset。reset(版本撤回)格式git reset [-q] [] [--] ...git reset (--patch | -p) [] [--] [...]git reset (--soft | --mixed | --hard | --merge | --keep) [-q] []用法git reset --mixed 回退commit,保留源码,默认方式.git reset --soft 回退至某个版本,只回退commit信息git reset --hard 彻底回退至某个版本回退所有内容到上一个版本 git reset HEAD^回退a.py这个文件的版本到上一个版本 git reset HEAD^ a.py向前回退到第3个版本 git reset &soft HEAD~3将本地的状态回退到和远程的一样 git reset &hard origin/master回退到某个版本 git reset 057d回退到上一次提交的状态,按照某一次的commit完全反向的进行一次commit git revert HEADrevert(撤消操作)撤销某次操作,此次操作之前的commit都会被保留. git reset 是撤销某次提交,但是此次之后的修改都会被退回到暂存区.格式git revert [--edit | --no-edit] [-n] [-m parent-number] [-s] ...git revert --continue git revert --quit git revert --abort示例git revert HEAD~3:丢弃最近的三个commit,把状态恢复到最近的第四个commit,并且提交一个新的commit来记录这次改变。git revert -n master~5..master~2:丢弃从最近的第五个commit(包含)到第二个(不包含),但是不自动生成commit,这个revert仅仅修改working tree和index。reset与revert的区别git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit&中和&之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。就爱阅读网友整理上传,为您提供最全的知识大全,期待您的分享,转载请注明出处。
欢迎转载:
推荐:    }

我要回帖

更多关于 社交聊天软件排行榜 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信