Skip to content

Commit

Permalink
Poprawki i dodanie Konflikty wersji w Git.
Browse files Browse the repository at this point in the history
  • Loading branch information
xinulsw committed Feb 28, 2017
1 parent 10290e2 commit 56747c0
Show file tree
Hide file tree
Showing 2 changed files with 78 additions and 9 deletions.
Binary file added docs/tools/git/img/git_edit.jpg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
87 changes: 78 additions & 9 deletions docs/tools/git/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ Git wyróżnia **trzy przestrzenie**:

* katalog roboczy (ang. *working directory*);
* poczekalnia (ang. staging area);
* repozytorium (katalog .git).
* repozytorium (katalog :file:`.git`).

.. figure:: img/areas.png

Expand Down Expand Up @@ -437,15 +437,15 @@ Do zarządzania plikami używamy następujących poleceń:

.. code-block:: bash
~/mojprojekt$ git rm --cached "*.txt"
~/mojprojekt$ git rm --cached "pierwszy.txt"
~/mojprojekt$ git mv doc/katalog.rst doc/projekt.rst
~/mojprojekt$ git status
~/mojprojekt$ git commit -a -m "Porządki w projekcie"
~/mojprojekt$ git commit -am "Porządki w projekcie"
~/mojprojekt$ git reset --soft HEAD~1
~/mojprojekt$ git status
~/mojprojekt$ git rm -f "*.txt"
~/mojprojekt$ git status
~/mojprojekt$ git commit -a -m "Porządki w projekcie"
~/mojprojekt$ git push
~/mojprojekt$ git commit -am "Porządki w projekcie"
* ``git rm --cached`` – usuwa pliki śledzone z poczekalni, ale nie zdysku;
* jeżeli mają być usunięte również z dysku, używamy tylko ``git rm``;
Expand All @@ -455,11 +455,80 @@ Do zarządzania plikami używamy następujących poleceń:
jeżeli usuwany plik ma niezatwierdzone zmiany.


Rozwiązywanie konfliktów
------------------------
Konflikty wersji
----------------

W czasie pracy nad projektem zdarzyć się może, że jakiś plik został
zmieniony zarówno w repozytorium zdalnym, np. przez współpracownika,
jak i lokalnie przez nas. Jeżeli nie ściągnęliśmy ostatniej zdalnej
wersji pliku, próba wysłania naszych zmian na serwer wywoła komunikat
o konflikcie. Przećwiczmy taką możliwość.

**Na początku w repozytorium zdalnym zmieniamy plik :file:`pierwszy.txt`.**

Następnie lokalnie dodajemy usunięty wcześniej z projektu
plik :file:`pierwszy.txt`, wprowadzamy zmiany, zatwierdzamy i próbujemy
wgrać je na serwer:

.. code-block:: bash
~/mojprojekt$ git add .
~/mojprojekt$ echo "Zmiana lokalna w pierwszym" >> pierwszy.txt
~/mojprojekt$ git commit -am "Zmiana w pierwszym"
~/mojprojekt$ git push
Username for 'https://github.com': lo1cgsan
Password for 'https://lo1cgsan@github.com':
To https://github.com/lo1cgsan/mojprojekt.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'https://github.com/lo1cgsan/mojprojekt.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Powyższy komunikat zawiera sugestię, co zrobić. Zastosujemy się do niej
i pobierzemy zmiany z serwera:

.. code-block:: bash
~/mojprojekt$ git pull
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/lo1cgsan/mojprojekt
0dbc52a..1bd4122 master -> origin/master
Auto-merging pierwszy.txt
CONFLICT (content): Merge conflict in pierwszy.txt
Automatic merge failed; fix conflicts and then commit the result.
Konflikt dotyczy pliku :file:`pierwszy.txt`. Zawartość pobrana z serwera
nie zgadza się z lokalną. Zgodnie z podpowiedzią:
``fix conflicts and then commit the result`` – musimy naprawić konflikt
i dopiero wtedy zatwierdzić zmiany. W dowolnym edytorze otwieramy zatem plik:

.. figure:: img/git_edit.jpg


[todo]
Git używa znaczników, aby wskazać różnice:

* ``<<<<<<< HEAD`` – początek różnic;
* ``=======`` – separator zmian lokalnych i zdalnych;
* ``>>>>>>> skrót`` – znacznik końca bloku różnic.

Usuwamy znaczniki, ustalamy ostateczną wersję pliku,
zatwierdzamy i wysyłamy zmiany na serwer:

.. code-block:: bash
~/mojprojekt$ cat pierwszy.txt
Dodanie pliku na github.com
Zmiana lokalna w pierwszym
i
Zmiany w pierwszym zdalne.
~/mojprojekt$ git commit -am "Rozwiązanie konfliktu w pierwszy.txt"
~/mojprojekt$ git push
Materiały
=========
Expand Down Expand Up @@ -503,5 +572,5 @@ Odwiedź
1. `Strona projektu Git <http://git-scm.com/>`_.
2. `Pro Git v. 1 <https://git-scm.com/book/pl/v1>`_ – wersja polska.
3. `Python 101 – Git <http://python101.readthedocs.io/pl/latest/git/index.html>`_ (materiał w j. polskim)
4. :download:`Git Cheat Sheet <https://services.github.com/on-demand/downloads/github-git-cheat-sheet.pdf>`
4. `Git Cheat Sheet <https://services.github.com/on-demand/downloads/github-git-cheat-sheet.pdf>`_
5. `Pro Git v. 2 <https://git-scm.com/book/en/v2>`_ – wersja angielska.

0 comments on commit 56747c0

Please sign in to comment.