2016-05-31 17 views
0

Ich bin relativ neu zu Git (von Svn kommt).Git Stash Pop druckt "von uns gelöscht" für Datei, die nie auf Master erstellt wurde

ich die folgenden Schritte aus, die in erster Linie, dass ich eine Datei auf einem Zweig bearbeiten, einen Vorrat ausführen und dann versuchen, das Versteck an den Master anzuwenden (die diese Datei nicht hat) .:

user1:~/gittest$ ls 
user1:~/gittest$ git init 
Initialized empty Git repository in /home/user1/gittest/.git/ 

user1:~/gittest$ touch file1 
user1:~/gittest$ git add file1 
user1:~/gittest$ git commit -m "committing file1" 
[master (root-commit) 7c29335] committing file1 
1 file changed, 0 insertions(+), 0 deletions(-) 
create mode 100644 file1 

user1:~/gittest$ git checkout -b br1 
Switched to a new branch 'br1' 

user1:~/gittest$ touch file2 
user1:~/gittest$ git add file2 
user1:~/gittest$ git commit -m "committing file2" 
[br1 b565401] committing file2 
1 file changed, 0 insertions(+), 0 deletions(-) 
create mode 100644 file2 

user1:~/gittest$ echo "updated.." >> file2 
user1:~/gittest$ git add file2 
user1:~/gittest$ git stash 
Saved working directory and index state WIP on br1: b565401 committing file2 
HEAD is now at b565401 committing file2 

user1:~/gittest$ git checkout master 
Switched to branch 'master' 

user1:~/gittest$ git stash pop 
CONFLICT (modify/delete): file2 deleted in Updated upstream and modified in Stashed changes. Version Stashed changes of file2 left in tree. 

user1:~/gittest$ git status 
On branch master 
Unmerged paths: 
    (use "git reset HEAD <file>..." to unstage) 
    (use "git add/rm <file>..." as appropriate to mark resolution) 

     deleted by us: file2 

no changes added to commit (use "git add" and/or "git commit -a") 

Meine Frage ist, warum git die Nachricht "von uns gelöscht" druckt, da Datei2 niemals auf Master erstellt und somit nie gelöscht wurde.

Ist dies eine irreführende Nachricht, oder fehlt mir etwas über die Art, wie git funktioniert.

Antwort

0

Es ist nur eine irreführende Nachricht; Es heißt gelöscht, aber es war einfach nie da, es unterscheidet nicht zwischen Dateien, die vorher da waren und jetzt gelöscht werden, oder Dateien, die nie da waren, wenn man es aus einer "Zweigperspektive" betrachtet.

file2 ist eigentlich eine bekannte Datei in Ihrem Git Repository, in gewisser Weise wurde es gelöscht, wenn Sie master ausgecheckt.

+0

Aber ist dieses Verhalten unvermeidbar? Wäre es unmöglich, es zu reparieren, da die Verschmelzung in git durchgeführt wird (z. B. hat es keine Möglichkeit zu wissen, ob diese Datei vorhanden war oder nicht)? –

+0

Ich würde annehmen, dass es repariert werden kann, und vielleicht ist es für neuere Version von Git, aber ich bin nicht vertraut mit dem Git-Quellcode ... –