3 Stimmen

git und lokale Änderungen

Ich lerne gerade, wie man Git benutzt.

Ich habe gerade den folgenden Test gemacht:

  1. einen Ordner und 2 Dateien erstellen
  2. dann git init, git add ., git commit -m "initial commit"
  3. einen Zweig erstellen: git branch experimental, git checkout experimental
  4. dann den Namen des Ordners ändern und eine der Dateien löschen, dann git add ., git commit -m "experimental"
  5. zurück zum Master: git checkout master

    Überraschung: Ich finde den Master nicht mehr so vor, wie ich ihn verlassen habe; der Ordner ist verschwunden. Und ich muss einen git -reset --hard durchführen, um meinen Ordner zu finden.

    Ich frage mich, ob ich etwas falsch gemacht habe oder ob ich nicht verstanden habe, wie Git lokale Änderungen verwaltet. Vielen Dank für Ihre Hilfe.

Detailliertes Szenario:

mkdir GitTest
cd GitTest/
mkdir Folder1
echo "master" > Folder1/File1.txt
echo "master" > File2.txt
git init
git add .
git commit -m "init"
git branch expe
git checkout expe
mv File2.txt File3.txt 
mv Folder1/ Folder1-exp/
echo "expe" >> Folder1-exp/File1.txt 
git add .  
git commit -m "expe"
git checkout master
ls
git checkout expe
ls

2voto

VonC Punkte 1117238

Der Grund dafür ist die Unterschied zwischen git add . y git add -A .

Nur mit git add -A werden neue Dateien aufgenommen y gelöschte Dateien.

Als Sie Ihr zweites git add . hier was git status zu sagen hatte:

C:\HOMEWARE\git\tests\p2>git status
# On branch exp
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   f2/f1b.txt
#
# Changed but not updated:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       deleted:    f1/f1a.txt
#       deleted:    f1/f1b.txt
#

Im Arbeitsbaum wurde das erste Verzeichnis gelöscht.

Wenn Sie also zurück zum Master wechseln, bleibt dieser Arbeitsbaum erhalten:

C:\HOMEWARE\git\tests\p2>git checkout master
D       f1/f1a.txt
D       f1/f1b.txt
Switched to branch 'master'

Daher das Verschwinden von f1 '...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X