kzen.dev
  • Kysymykset
  • Tunnisteet
  • Käyttäjät
Ilmoitukset
Palkinnot
Rekisteröinti
Kun olet rekisteröitynyt, sinulle ilmoitetaan vastauksista ja kommenteista kysymyksiisi.
Kirjaudu sisään
Jos sinulla on jo tili, kirjaudu sisään ja tarkista uudet ilmoitukset.
Lisätyt kysymykset, vastaukset ja kommentit palkitaan.
Lisää
Lähde
Muokkaa
Greg Hewgill
Greg Hewgill
Kysymys

Miten palauttaa pudonnut kätkö Gitissä?

Käytän usein git stash ja git stash pop tallentaakseni ja palauttaakseni muutoksia työpuussa. Eilen minulla oli joitakin muutoksia työpuussa, jotka olin tallentanut ja pannut, ja sitten tein lisää muutoksia työpuuhun. Haluaisin palata takaisin ja tarkastella eilen piilotettuja muutoksia, mutta git stash pop näyttää poistavan kaikki viittaukset siihen liittyvään toimitukseen.

Tiedän, että jos käytän git stash, niin .git/refs/stash sisältää viittauksen komitukseen, jota käytettiin kätkön luomiseen. Ja .git/logs/refs/stash sisältää koko kätkön. Mutta nämä viittaukset häviävät git stash pop:n jälkeen. Tiedän, että komitit ovat yhä jossain arkistossani, mutta en tiedä, mikä se oli.

Onko olemassa helppoa tapaa palauttaa eilisen kätkön commit-viittaus?

Huomaa, että tämä ei ole kriittistä minulle tänään, koska minulla on päivittäiset varmuuskopiot ja voin palata eiliseen työpuuhun saadakseni muutokset. Kysyn, koska täytyy olla helpompi tapa!

1602 2008-09-18T01:59:06+00:00 3
 Randall
Randall
Muokattu kysymysT44 heinäkuu 2016 в 6:30
Ohjelmointi
recovery
git
git-stash
Suosittuja videoita
Upload Project in Github Using Simple Git Commands#Git#Github#Projects#CollegeProjects#AndroidApp
Upload Project in Github Using Simple Git Commands#Git#Github#Projects#CollegeProjects#AndroidApp
1 vuosi sitten
Git: clone a repository (hebrew)
Git: clone a repository (hebrew)
2 vuotta sitten
GIT clone using SSH
GIT clone using SSH
2 vuotta sitten
How to  Create & Link GitHub Repository to Local Project: Step by Step Beginner friendly
How to Create & Link GitHub Repository to Local Project: Step by Step Beginner friendly
1 vuosi sitten
How to use Git and GitHub? | Screen Demo | Basic commands | GitHub Tutorial for Beginners #github
How to use Git and GitHub? | Screen Demo | Basic commands | GitHub Tutorial for Beginners #github
3 vuotta sitten
#10 : Course Git && Github |  Clone A Repository From Github To Your Local Computer | Git Clone
#10 : Course Git && Github | Clone A Repository From Github To Your Local Computer | Git Clone
2 vuotta sitten
Git and github
Git and github
2 vuotta sitten
Git Clone Add Commit and Push operations using GIT Bash for Beginners in windows 10 PCs and Laptops
Git Clone Add Commit and Push operations using GIT Bash for Beginners in windows 10 PCs and Laptops
2 vuotta sitten
installing git| making first repository| initializing git| Explained in hindi | simplified|#2
installing git| making first repository| initializing git| Explained in hindi | simplified|#2
2 vuotta sitten
Github Without command line | VSCode Github without Terminal
Github Without command line | VSCode Github without Terminal
2 vuotta sitten
Github fork clone commit push
Github fork clone commit push
2 vuotta sitten
PolyU ENG1003 AAE FP - (Web version) Commit but reject during the merge of repositories
PolyU ENG1003 AAE FP - (Web version) Commit but reject during the merge of repositories
2 vuotta sitten
Part 17 Introduction to Git - Pull Requests
Part 17 Introduction to Git - Pull Requests
2 vuotta sitten
Github & Github Desktop Basics
Github & Github Desktop Basics
2 vuotta sitten
« Edellinen
Seuraava »
Tässä kysymyksessä on 1 Vastaa englanniksi, voit lukea ne kirjaudu sisään tilillesi.
Ratkaisu / Vastaus
Aristotle Pagaltzis
Aristotle Pagaltzis
T33 syyskuu 2008 в 11:38
2008-09-18T11:38:25+00:00
Lisää
Lähde
Muokkaa
#8475725

Kun tiedät pudottamasi kätkön hash-komission, voit soveltaa sitä kätkönä:

git stash apply $stash_hash

Tai voit luoda sille erillisen haaran komennolla

git branch recovered $stash_hash

Sen jälkeen voit tehdä mitä haluat kaikilla tavallisilla työkaluilla. Kun olet valmis, puhalla haara vain pois.

Hashin löytäminen

Jos olet vasta ponnahtanut ja terminaali on vielä auki, sinulla on vielä git stash pop:n tulostama hash-arvo näytöllä (kiitos, Dolda).

Muussa tapauksessa voit löytää sen käyttämällä tätä Linuxissa, Unixissa tai Git Bashissa Windowsissa:

git fsck --no-reflog | awk '/dangling commit/ {print $3}'

...tai käyttämällä Powershelliä Windowsille:

git fsck --no-reflog | select-string 'dangling commit' | foreach { $bits = $_ -split ' '; echo $bits[2];}

Tämä näyttää sinulle kaikki commit-kuvaajasi kärjissä olevat komitukset, joihin ei enää viitata mistään haarasta tai tagista - jokainen kadonnut komitus, mukaan lukien jokainen koskaan luomaasi stash-komitus, on jossain tuossa kuvaajassa.

Helpoin tapa löytää haluamasi stash commit on luultavasti välittää tuo lista gitk:lle:

gitk --all $( git fsck --no-reflog | awk '/dangling commit/ {print $3}' )

...tai katso emraginsin vastaus, jos käytät Powershelliä Windowsille.

Tämä käynnistää arkistoselaimen, joka näyttää sinulle kaikkien arkiston kaikkien aikojen yksittäisten sitoumusten riippumatta siitä, onko se tavoitettavissa vai ei.

Voit korvata gitk siellä jollakin kuten git log --graph --oneline --decorate, jos haluat mieluummin kauniin graafin konsolissa kuin erillisen GUI-sovelluksen.

Löydät kätköjen komennukset etsimällä tämän muotoisia komennusviestejä:

        WIP on somebranch: commithash Jokin vanha commit-viesti.

Huomautus: Commit-viesti on tässä muodossa (alkaen "WIP on") vain, jos et antanut viestiä, kun teit git stash.

 jpaugh
jpaugh
Muokattu vastausta T33 helmikuu 2019 в 7:13
2580
0
Artificial intelligence to parse product page
productapi.dev
Greg Hewgill
Greg Hewgill
T33 syyskuu 2008 в 2:10
2008-09-18T02:10:13+00:00
Lisää
Lähde
Muokkaa
#8475724

Rakensin juuri komennon, joka auttoi minua löytämään kadonneen kätköni commit:

for ref in `find .git/objects | sed -e 's#.git/objects/##' | grep / | tr -d /`; do if [ `git cat-file -t $ref` = "commit" ]; then git show --summary $ref; fi; done | less

Tämä listaa kaikki objektit .git/objects-puussa, etsii ne, jotka ovat tyyppiä commit, ja näyttää sitten yhteenvedon jokaisesta objektista. Tästä eteenpäin oli vain katsottava commitit läpi löytääkseen sopivan "WIP on work": 6a9bb2" ("work" on haarani, 619bb2 on tuore commit).

Huomaan, että jos käyttäisin "git stash apply" "git stash pop" sijasta, minulla ei olisi tätä ongelmaa, ja jos käyttäisin "git stash save message", komitusta olisi ehkä ollut helpompi löytää.

Päivitys: Nathanin idean avulla tästä tulee lyhyempi:

for ref in `git fsck --unreachable | grep commit | cut -d' ' -f3`; do git show --summary $ref; done | less
72
0
Artificial intelligence to parse product page
productapi.dev
Nathan Jones
Nathan Jones
T33 syyskuu 2008 в 2:08
2008-09-18T02:08:15+00:00
Lisää
Lähde
Muokkaa
#8475723

git fsck --unreachable | grep commit pitäisi näyttää sha1:n, vaikka sen palauttama lista saattaa olla melko suuri. git show <sha1> näyttää, onko kyseessä haluamasi commit.

git cherry-pick -m 1 <sha1> yhdistää commitin nykyiseen haaraan.

Nathan Jones
Nathan Jones
Muokattu vastausta T33 syyskuu 2008 в 2:14
38
0
Lisää kysymys
Kategoriat
Kaikki
Teknologia
Kulttuuri / Virkistys
Elämä / Taide
Tiede
Ammattilainen
Liiketoiminta
Käyttäjät
Kaikki
Uusi
Suosittu
1
Inessa bu
Rekisteröity 1 kuukausi sitten
2
Denis Babushkin
Rekisteröity 1 kuukausi sitten
3
asakuno asakuno
Rekisteröity 1 kuukausi sitten
4
aldo salerno
Rekisteröity 1 kuukausi sitten
5
Анна Батицкая
Rekisteröity 1 kuukausi sitten
Artificial intelligence to parse product page
productapi.dev
DE
ES
FI
FR
ID
JA
KO
LT
NL
PT
RO
RU
SK
TR
ZH
© kzen.dev 2023
Lähde
stackoverflow.com
lisenssillä cc by-sa 3.0 omistusoikeudella