2013-02-25 18 views
18

Wchodzę w cudowny świat git. muszę przedstawić kilka zmian, które zrobiłem w moim programie, znajdujących się w katalogu o nazwie: /var/www/MojaAplPolecenie "git add" zwraca komunikat o błędzie "fatal: outside repository"

Został utworzony nowy katalog „/ home/mylogin/gitclone ". Z tego katalogu zrobiłem polecenie "git clone" na publicznym repo i udało mi się uzyskać najnowszą kopię.

Próbuję teraz dowiedzieć się, jak zabrać wszystkie pliki z mojego folderu roboczego (/ var/www/myapp) i "sprawdzić je" do głównego repozytorium.

Od /home/mylogin/gitclone, Próbowałem następujące polecenia:

"git add/var/www/myapp" ale dostaję komunikat o błędzie, że folder I próbował dodać jest poza repozytorium.

Czy możesz dać mi kilka wskazówek na temat tego, co robię źle? Chciałbym też dodać wszystko, niezależnie od tego, czy różni się od mistrza, czy nie. Dzięki.

Odpowiedz

11

pierwsze w folderze klonu można utworzyć oddział (tak pan pozostać nietknięty)

Git Branch [name] 

Po prostu skopiuj plik (w starym folderze) do folderu klonu.

Kiedy skończysz, po prostu dodaj/popełnić swoją zmianę i Merge your branch do „master” oddział

To będzie patrzeć na coś takiego.

git add . 
git commit -m "Comments" 
git checkout master 
git merge [new_branch] 

Spróbuj tutorial from GitHub

+0

hej dzięki. Dam to spróbować, gdy wrócę do biura, aby sprawdzić, czy to działa. – dot

+0

JudgeProphet - kiedy mówisz "skopiuj plik, który chcesz (w starym folderze) do folderu klonowania - czy nadpisuję rzeczy w folderze klonowania? Kiedy zrobiłem polecenie" git clone ", skopiowałem wszystkie moje rzeczy z Więc czy mówisz, że nadpisałbym zawartość moją wersją kodu? – dot

+0

@dot Powiedziałbym tak, jeśli "sklonowany Repo" nie jest twoją najnowszą wersją i jeśli "inny" folder pominie aktualne materiały: – JudgeProphet

2

To dlatego, że są wersjami rzeczy wewnątrz /home/mylogin/gitclone i git śledzi wszystko wewnątrz tym folderze. Nie można śledzić innych folderów poza tym repozytorium.

Rozwiązanie może być stworzenie submodule, lub za pomocą łącza symbolicznego przy użyciu ln -s

+0

Symlinks byłoby świetnie, ale Git nie wydaje się dodawać połączonych danych http://stackoverflow.com/a/18791647/1043529 –

+0

git dodaje plik sys tem link do git, a nie do zawartości. –

3

Musisz przenieść wszystkie pliki z katalogu/var/www/myapp/home/mylogin/gitclone a następnie zrobić git add ., a następnie git commit -m "Your message".

1

Aby dodać niektóre pliki lub foldery do repozytorium, muszą znajdować się w folderze utworzonym za pomocą "git clone". Więc skopiuj/wklej swoją aplikację do lokalnego folderu git, a następnie przejdź do niej i wykonaj "git add *", a następnie będziesz mógł zatwierdzić serwer z "git commit -m" message "" i ostatecznie wypchnij zmiany na serwerze za pomocą "git push"

0

Git tylko śledzi pliki i foldery w folderze głównym, który zawiera katalog .git i podfoldery w folderze głównym. Folder, który próbujesz dodać, znajduje się poza zakresem git.

Co byś chciał zrobić, to najpierw git checkout -b myapp, który utworzy i sprawdzi nowy oddział w oparciu o główny repozytorium sklonowanego repozytorium. Wtedy faktycznie skopiowałbyś wszystkie swoje pliki i zatwierdził je przy pomocy git commit -a -m "Short descriptive name about what you did". Parametr -a przekazany do git commit służy do włączenia wszystkich zmian dokonanych w repozytorium, a -m ma zawrzeć komunikat zatwierdzenia w rzeczywistym poleceniu. Następnie możesz albo push wrócić do głównego repozytorium, jeśli masz do niego dostęp do zapisu, albo popchnąć go do własnego publicznego repozytorium, albo nie naciskaj go wcale.

To, co opisałem powyżej, jest podstawą git. Spróbuj przeczytać tę book, która jest dość opisowa.

0

Ta wiadomość może być również wyświetlana, gdy nazwa pliku znajduje się na liście w pliku .gitignore.

1

Kiedy zaktualizowany do wersji 2.12.2 git się, że błąd, ja nooted I dodać plik z pełną ścieżką jak:

git add c:\develop\project\file.text 

po usunięciu pełną ścieżkę rozpocznie pracę, jak:

git add file.text 
0

Mój scenariusz jest taki, że ścieżka do repozytorium git ma dowiązanie symboliczne, a git wyrzuca ten błąd, gdy add file mówi do "/ home/abc/GIT_REPO/my_dir/my_file". i "/ home" jest w rzeczywistości miękkim odnośnikiem do "/ devhome".

code ninja dał mi trochę światła, gdy próbowałem debugować tę sprawę.

Próbowałem więc pobrać katalog docelowy za pomocą polecenia readlink -f /home/abc/GIT_REPO przed uruchomieniem polecenia dodaj.

A potem wszystko działa jak czar!

Powiązane problemy