首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何撤消我上一次添加的git

如何撤消我上一次添加的git
EN

Stack Overflow用户
提问于 2016-04-07 05:05:10
回答 2查看 148关注 0票数 0

只是好奇的想知道。假设我有一个名为git add的文件,我将Hello World\n添加到该文件并测试它。

现在,在登台区域中,应该有一个名为test with content Hello World\n的文件。

现在我添加另一行Hello World 2\n,然后git add它。

现在我的中转区将是文件测试,其内容为"Hello World\n Hello World2\n“。

现在,我有什么方法可以撤销我的第二个git-add,使登台区域返回到内容为"Hello World\n“的文件测试。

假设:此时可能会有任何提交,也可能没有。请考虑两个条件。

Additions:如果有多个git-add,我想要撤销它们的最后n次怎么办。

EN

回答 2

Stack Overflow用户

发布于 2016-04-07 05:22:06

一旦你做了git add,Git就会开始跟踪文件,并在每次你向登台区域添加文件时创建一个-1

只要git gc没有压缩和清理存储库,您就可以恢复和恢复登台区域中的任何版本。

假设您没有运行git gc,那么您只需要知道文件的SHA-1即可。

当我再次将同一文件添加到临时区域时会发生什么情况?

一旦您添加了相同的文件来存储新的内容,Git就会为该文件计算新的SHA-1,并使用新的SHA-1更新树。旧的SHA-1仍然存储在.git/objects下。

如何恢复“旧的”暂存文件?

首先,您需要找到所需文件的SHA-1。

代码语言:javascript
运行
复制
# print the list of all the dangling files in the repo
git fsck

# now you need to manually search the files to find the desired 
# "old file" and then restore it using git cat-file -p

一个完整的例子:

代码语言:javascript
运行
复制
cd tmp
mkdir repo1
cd repo1
git init
echo 'line1' > a.txt
git add .
echo 'line2' >> a.txt
git add .
git fsck
git cat-file -p a29bdeb434d874c9b1d8969c40c42161b03fafdc
git cat-file -p c0d0fb45c382919737f8d0c20aaf57cf89b74af8

票数 3
EN

Stack Overflow用户

发布于 2016-04-07 05:09:58

stage不保存单个操作,它只保存文件的状态。因此,如果您进行多次添加,您只会在阶段中看到结果,而不是一系列操作。

Git本身告诉您如何恢复分段更改:

代码语言:javascript
运行
复制
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        new file:   blah.txt
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36462328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档