2014-10-30 15 views
13

Chcę zatwierdzić wszystkie pliki oprócz jednego pliku. Czy mogę to zrobić za pomocą GitHub dla klienta Windows lub czy muszę użyć wiersza poleceń? Jeśli potrzebuję korzystać z wiersza poleceń, jak go używać?Jak zatwierdzić wszystkie pliki poza jednym w GitHub dla Windows

+0

Tak, można to zrobić za pośrednictwem klienta –

+0

http://stackoverflow.com/questions/4475457/add-all -files-to-a-commit-except-a-single-file Sprawdź ten link. To może ci pomóc. – user3269886

+0

Dzięki za sugestię, ale polecenie usuwa wszystkie zmodyfikowane pliki. Chcę tylko zatwierdzić wszystkie oprócz jednego pliku, a plik powinien mieć zmiany. –

Odpowiedz

23

O ile mi wiadomo, nie jest to możliwe bez użycia powłoki git/wiersza poleceń. W powłoce Git masz kilka opcji. Wszystkie dają nieco inny wynik.

  1. Jeśli tylko chcesz wykluczyć plik dla trochę czasu (może jeden commit) i dodać go w przyszłości popełnić można wykonać następujące polecenia:

    git add . 
    git reset filename 
    git commit -m "commit message" 
    

    Pierwsze polecenie dodaje wszystkie pliki do obszaru pomostowego. Then the second command removes the one file from the staging area. This means the file is not added in the commit but the changes to it are preserved on your local drive.

  2. Jeśli plik jest już zaangażowana w repozytorium, ale tylko sporadycznie chcą popełniania dalszych zmian w pliku, można użyć git update-index --assume-unchanged w ten sposób:

    `git update-index --assume-unchanged filename` 
    

    Jeśli następnie zmienić plik lokalnie nie zostanie dodane do obszaru przemieszczania, gdy wykonasz coś, aby dodać wszystkie pliki, takie jak git add .. When, after some time, you want to commit changes to the file again, you can run git update-index --no-assume-unchanged filename to stop ignoring the changes.

  3. Możesz użyć pliku .gitignore, jeśli nie chcesz w ogóle śledzić pliku. To ignore a file named filename you create, or edit, a file called .gitignore. Put filename on a line of its own to ignore that file. Teraz plik nie zostanie dodany do obszaru pomostowego po wykonaniu git add .. Uwaga: Jeśli plik jest już zaznaczony, musisz go usunąć z repozytorium, aby zacząć go ignorować. Wykonaj następujące właśnie do tego:

    `git rm --cached filename` 
    

    The --cached option specifies that the file should only be removed from the index. lokalnego pliku, czy zmieniona lub nie, pozostanie taka sama. Możesz dodać plik .gitignore i zatwierdzić, aby plik został zignorowany na innych komputerach z tym samym repozytorium.

  4. Jeśli chcesz zignorować nieskonowany plik, ale nie chcesz udostępniać tego ignorowania innym uczestnikom repozytorium, możesz umieścić nazwy zignorowanych plików w pliku .git/info/exclude. Katalog .git jest zwykle ukryty, ale możesz go pokazać, zmieniając opcje folderów. Podobnie jak w przypadku pliku .gitignore, musisz wykonać git rm --cached filename, jeśli plik został już pobrany przez poprzednie zatwierdzenie.

Kilka uwag:

  • Zmiany filename do rzeczywistej nazwy pliku, który chcesz wykluczyć.
  • Zamiast wykluczać pojedynczy plik, można również wykluczyć pełny katalog. Możesz to zrobić, po prostu wstawiając nazwę katalogu w miejsce filename.
  • Łatwym sposobem uruchomienia powłoki Git jest uruchomienie programu GitHub dla systemu Windows, kliknięcie prawym przyciskiem myszy projektu, w którym chcesz wykluczyć/zignorować plik i wybrać opcję Open in Git Shell. Teraz jesteś w katalogu głównym repozytorium git i możesz zacząć wykonywać polecenia, które są pokazane i opisane w tej odpowiedzi.
+0

Dziękuję. Zadziałało. –

+1

Niezwykle dobra informacja. Dziękuję bardzo! – adelineu

0

chciałbym wykonać następujące czynności:

git add . 
git checkout filename 
git commit -m "commit message" 

Pierwsza linia dodaje wszystkie pliki na liście, a druga linia usuwa plik, określić, gdzie „nazwa pliku” powinna być nazwa pliku nie chcesz w swoim zatwierdzeniu.

Albo

git checkout filename 
git commit -am "commit message" 

git commit -am dodaje pliki i robi commit wiadomość w tym samym czasie.

A jeśli trzeba usunąć zmiany wprowadzone w ostatnim pliku:

git stash -u 
Powiązane problemy