Hoe berg je een bestand op dat niet getraceerd is?

Ik heb veranderingen aan een bestand, plus een nieuw bestand, en zou git stash willen gebruiken om ze op te bergen terwijl ik naar een andere taak overschakel. Maar git stash zelf stasht alleen de wijzigingen aan het bestaande bestand; het nieuwe bestand blijft in mijn werkstructuur, en vertroebelt mijn toekomstige werk. Hoe kan ik dit ongevolgde bestand stashen?

Oplossing

Om je werkdirectory op te slaan inclusief ongevolgde bestanden (vooral die bestanden die in de .gitignore staan) dan wil je waarschijnlijk dit cmd gebruiken:

git stash --include-untracked

Meer details:

Update 17 mei 2018:

Nieuwe versies van git hebben nu git stash --all die alle bestanden stasht, inclusief untracked en genegeerde bestanden.
git stash --include-untracked raakt genegeerde bestanden niet meer aan (getest op git 2.16.2).

Oorspronkelijk antwoord hieronder:

*[Waarschuwing, dit zal je bestanden permanent verwijderen als je enige directory/ entries in je gitignore bestand hebt]1**.

Vanaf versie 1.7.7 kun je git stash --include-untracked of git stash save -u gebruiken om untracked bestanden te stashen zonder ze te stagen.

Voeg het bestand toe (git add) en begin het te volgen. Dan stashen. Omdat de gehele inhoud van het bestand nieuw is, zal het worden gestasht, en kun je het manipuleren als dat nodig is.

Commentaren (23)

Voeg het bestand toe aan de index:

git add path/to/untracked-file
git stash

De volledige inhoud van de index, plus alle niet-geplaatste wijzigingen aan bestaande bestanden, zullen allemaal in de stash terechtkomen.

Commentaren (3)

Ik dacht dat dit opgelost kon worden door git te vertellen dat het bestand bestaat, in plaats van de hele inhoud ervan naar het staging gebied te committen, en dan git stash aan te roepen. Araqnid beschrijft hoe je het eerste kunt doen.

git add --intent-to-add path/to/untracked-file

of

git update-index --add --cacheinfo 100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 path/to/untracked-file

Het laatste werkt echter niet:

$ git stash
b.rb: not added yet
fatal: git-write-tree: error building trees
Cannot save the current index state
Commentaren (1)