2015-06-12 35 views
7

Mam repozytorium bitbucket, o następującej strukturze:Jak zaktualizować katalog w git

Directory-A-> 
    directory a 
    directory b 
    file a 
    file b 
    file c 

teraz chcę przenieść plik „b” i plik „C” do „katalogu jest”

Kiedy robię to na komputerze lokalnym i zatwierdzam to przez dodanie git. Dostaję plik b i plik c w katalogu a, ale nadal istnieje poza nim.

+0

Gdy przenosisz pliki, musisz "dodać" nowe (nowa lokalizacja), ale także "rm" stare (stara lokalizacja). – Peque

+0

Mam setki plików i nie chcę używać rm dla każdego z nich. –

+1

'git add --all' może ci pomóc. – Peque

Odpowiedz

4

Kiedy robię to na komputerze lokalnym i zatwierdzam to przez dodanie git. Dostaję plik b i plik c w katalogu a, ale nadal istnieje poza nim.

To dlatego, że zrobił git add . w directory a zamiast git add -A . w Directory-A.

Po pierwsze, trzeba być w Directory-A (jednego korzenia) po wykonaniu git add -A . (co jest git add -u + git add .) z folderu głównego:

Directory-A-> <====== there: git add -A . 
    directory a 
    file b 
    file c 
    directory b 
    file a 

A 'git add -A .' w Directory-A wykryje usunięcie tych plików w Directory-A i ich dodanie w directory a.

Zobacz więcej w "Difference between “git add -A” and “git add .":

4

Tutaj jest lepszą alternatywą. Spróbuj wykonać następujące czynności:

git mv "file b" "file c" "directory a" 

Obserwowani przez:

git commit -am "hey I moved filed" 

Uwaga: Użyłem tylko flagę -am w celach demonstracyjnych. To nie jest dobra praktyka. Powinieneś zatwierdzać tylko pliki z powiązanymi zmianami, co sprawia, że ​​twoje repozytorium można utrzymywać.

0

zwykle zrobić to tak, wierzę, że jeszcze łatwiej i będzie pracować dla całego projektu:

  1. fizycznie przenieść pliki b i c w katalogu (przy użyciu Eksploratora plików lub wiersz poleceń).

  2. Run to polecenie git w projekcie:

    git add -u

    (to będzie auto usunąć wszystkie usunięte pliki z indeksem Git: odkąd przeniósł swoje pliki fizycznie Git je rozważyć „usunięty” z poprzedniej lokalizacji i stworzył na nową)

  3. teraz dodać wszystkie zmienione/utworzonych plików do nowych popełnić:

    git add .

  4. dokonać zmian jak zwykle:

    git commit -m "Moved files b and c into directory a"


Oto więcej informacji na temat polecenia git add -u (-u jest skrótem --update):

... usuwa a także modyfikuje wpisy indeksu w celu dopasowania do drzewa roboczego, ale nie dodaje nowych plików ... wszystkie śledzone pliki w całym drzewie roboczym są aktualizowane ...

Źródło: http://www.git-scm.com/docs/git-add (poszukaj --update sekcji)

0

Quick Fix. Run:

git add -A :/ 
git status 

Następnie upewnij się, że tylko pliki chcesz dodać/usunąć/zmienić zostały wystawił. To bardzo ważne. Jeśli przypadkowo wprowadziłeś nieistotne zmiany, uruchom git reset. Jeśli jesteś pewien, że chcesz kontynuować, uruchom git commit.

Bez -A, git add tylko etapy dodawania i modyfikacji plików. Nie kasuje całych plików, a ruchy zamieniają się w kopie. git add -A usuwa pliki, które już nie istnieją.

:/ to skrót, który oznacza katalog główny repozytorium, a nie katalog bieżący. Jeśli twój bieżący katalog jest katalogiem głównym repozytorium, możesz to pominąć.

Należy pamiętać, że uruchamianie git add -A - szczególnie w katalogu głównym repozytorium - jest ogólnie uważane za niebezpieczne. Nie wpadaj w nawyk ślepego angażowania się we wszystkie zmiany, które wprowadziłeś: tylko etap, który wiesz, że chcesz zmienić. Jednak gdy przenosisz dużą liczbę plików, jest to przydatne narzędzie.

0

To powinno zadziałać.

git mv "złożyć" "katalogowej"/

git mv "file b" "katalogowej"/

git commit -m "Pliki A i B są przenoszone do katalogu jest"

Happy Coding.