Home System Tutorial LINUX Teach you to retrieve data in git stash data

Teach you to retrieve data in git stash data

Jan 07, 2024 am 10:21 AM
linux linux tutorial Red Hat linux system linux command linux certification red hat linux linux video

Introduction Due to incorrect git commands, he deleted the changes saved in stash. After this sad episode we tried to find a way to restore the work he had done and we did it! First a word of warning: when you're implementing a large feature, break it into small chunks and commit them regularly. Working for long periods of time without committing is not a good habit. Let's demonstrate how to recover accidentally deleted changes from stash.
Create test branch

In the warehouse I used as an example, there is only one source file "main.c", as shown below:

教你找回 git stash 数据中的数据
It has only one commit, "Initial commit":
教你找回 git stash 数据中的数据

The first version of this file is:

教你找回 git stash 数据中的数据

I will write some code in the file. For this example, I don't need to make any big changes, I just need something to put into stash, so we'll just add one line. The output of "git diff" is as follows:
教你找回 git stash 数据中的数据

Misoperation of git stash

Now, let's say I want to pull some new changes from the remote repository, without committing my own changes yet. So, I decided to stash it first, wait for the changes in the remote warehouse to be pulled, and then revert my changes to the main branch. I executed the following command to move my changes into stash:

git stash
Copy after login

Use the command "git stash list" to view stash. You can see my changes here:

教你找回 git stash 数据中的数据

My code is already in a safe place, and the master branch is currently clean (use the command git status to check). Now I just need to pull the changes from the remote repository and revert my changes to the master branch, which is what I should do.

But I executed the command incorrectly:

git stash drop
Copy after login

It removed the stash instead of executing the following command:

stash pop
Copy after login

This command will apply stash before removing it from the stack. If I execute the command git stash list again, I can see that I deleted the changes without reverting them from the stack to the master branch. OMG! What to do next?

Retrieve git stash data

The good news is: git didn't delete the object containing my changes, it just removed the reference to it. To demonstrate this, I use the command git fsck, which verifies the connection and validity of the objects in the database. This is the output after I performed git fsck on the repository:
教你找回 git stash 数据中的数据

Due to the parameter --unreachable, I let git-fsck show all unreachable objects. As you can see, it shows that there are no inaccessible objects. And when I deleted my changes from stash and executed the same command again, I got a different output:
教你找回 git stash 数据中的数据

There are now three inaccessible objects. So which one is my change? Actually, I don't know. I need to search each object by executing the command git show.

教你找回 git stash 数据中的数据

that's it! The ID number 95ccbd927ad4cd413ee2a28014c81454f4ede82c corresponds to my change. Now that I've found the missing changes, I can restore it. One way is to take this ID and put it into a new branch, or commit it directly. Once you have the ID number of your change object, you can decide the best way to revert the change back to the master branch. For this example, I used git stash to revert the changes to my master branch.

git stash apply 95ccbd927ad4cd413ee2a28014c81454f4ede82c
Copy after login

Another important thing to remember is that git will periodically execute its garbage collection program (gc). After it is executed, you can no longer see inaccessible objects using git fsck.

The above is the detailed content of Teach you to retrieve data in git stash data. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Roblox: Bubble Gum Simulator Infinity - How To Get And Use Royal Keys
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusion System, Explained
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers Of The Witch Tree - How To Unlock The Grappling Hook
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1665
14
PHP Tutorial
1270
29
C# Tutorial
1250
24
Linux Architecture: Unveiling the 5 Basic Components Linux Architecture: Unveiling the 5 Basic Components Apr 20, 2025 am 12:04 AM

The five basic components of the Linux system are: 1. Kernel, 2. System library, 3. System utilities, 4. Graphical user interface, 5. Applications. The kernel manages hardware resources, the system library provides precompiled functions, system utilities are used for system management, the GUI provides visual interaction, and applications use these components to implement functions.

How to check the warehouse address of git How to check the warehouse address of git Apr 17, 2025 pm 01:54 PM

To view the Git repository address, perform the following steps: 1. Open the command line and navigate to the repository directory; 2. Run the "git remote -v" command; 3. View the repository name in the output and its corresponding address.

How to run java code in notepad How to run java code in notepad Apr 16, 2025 pm 07:39 PM

Although Notepad cannot run Java code directly, it can be achieved by using other tools: using the command line compiler (javac) to generate a bytecode file (filename.class). Use the Java interpreter (java) to interpret bytecode, execute the code, and output the result.

How to run sublime after writing the code How to run sublime after writing the code Apr 16, 2025 am 08:51 AM

There are six ways to run code in Sublime: through hotkeys, menus, build systems, command lines, set default build systems, and custom build commands, and run individual files/projects by right-clicking on projects/files. The build system availability depends on the installation of Sublime Text.

What is the main purpose of Linux? What is the main purpose of Linux? Apr 16, 2025 am 12:19 AM

The main uses of Linux include: 1. Server operating system, 2. Embedded system, 3. Desktop operating system, 4. Development and testing environment. Linux excels in these areas, providing stability, security and efficient development tools.

laravel installation code laravel installation code Apr 18, 2025 pm 12:30 PM

To install Laravel, follow these steps in sequence: Install Composer (for macOS/Linux and Windows) Install Laravel Installer Create a new project Start Service Access Application (URL: http://127.0.0.1:8000) Set up the database connection (if required)

git software installation git software installation Apr 17, 2025 am 11:57 AM

Installing Git software includes the following steps: Download the installation package and run the installation package to verify the installation configuration Git installation Git Bash (Windows only)

How to use sublime shortcut keys How to use sublime shortcut keys Apr 16, 2025 am 08:57 AM

Sublime Text provides shortcuts to improve development efficiency, including commonly used (save, copy, cut, etc.), editing (indentation, formatting, etc.), navigation (project panel, file browsing, etc.), and finding and replacing shortcuts. Proficiency in using these shortcut keys can significantly improve Sublime's efficiency.

See all articles