Skip to content

Commit

Permalink
📝 Add merging repos
Browse files Browse the repository at this point in the history
  • Loading branch information
veit committed Aug 3, 2024
1 parent d655959 commit aec59e1
Showing 1 changed file with 34 additions and 7 deletions.
41 changes: 34 additions & 7 deletions docs/productive/git/workflows/split-repos.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,24 @@
..
.. SPDX-License-Identifier: BSD-3-Clause
Repos aufteilen und zusammenführen
==================================

Repos aufteilen
===============
---------------

Häufig ist es sinnvoll, ein großes Git-Repository in mehrere kleinere aufzuteilen.
Das kann in einem Projekt nötig sein, das stark angewachsen ist, oder wenn wir
ein Teilprojekt als eigenständiges Repo auslagern möchten.
Natürlich könnten wir einfach ein neues Repository erstellen und die Dateien für das Teilprojekt hineinkopieren.
Allerdings würden wir dabei die gesamte Versionsgeschichte verlieren.
Häufig ist es sinnvoll, ein großes Git-Repository in mehrere kleinere
aufzuteilen. Das kann in einem Projekt nötig sein, das stark angewachsen ist,
oder wenn wir ein Teilprojekt als eigenständiges Repo auslagern möchten.
Natürlich könnten wir einfach ein neues Repository erstellen und die Dateien für
das Teilprojekt hineinkopieren. Allerdings würden wir dabei die gesamte
Versionsgeschichte verlieren.

Hier beschreibe ich, wie ihr ein Git-Repository aufteilen könnt, ohne die
jeweils zugehörige Historie zu verlieren.

Szenario und Ziele
------------------
~~~~~~~~~~~~~~~~~~

Wir wollen aus dem Jupyter-Tutorial-Repository denjenigen Teil herauslösen, der
sich mit der Visualisierung der Daten befasst: ``docs/viz/``. Die
Expand Down Expand Up @@ -62,3 +66,26 @@ Pfad:
$ python3 ../git-filter-repo --invert-paths --path docs/viz
$ git remote add origin [email protected]:veit/jupyter-tutorial.git
$ git push -f -u origin main
Repos zusammenführen
--------------------

Repos mit unterschiedlicher Historie können auch zusammengeführt werden. Dies
kann :abbr:`z.B. (zum Beispiel)` wünschenswert sein, wenn ein Projekt lokal
begonnen wurde, auf dem Git-Server jedoch ein Projekt mit einem initialen Commit
angelegt wurde. In diesem Fall könnt ihr dann einfach ``git pull
--allow-unrelated-histories`` verwenden; dabei wird dann die Option an das
darunterliegende ``git merge`` weitergereicht.

Wollt ihr zwei größere Projekte zusammenführen, könnt ihr dies folgendermaßen:

.. code-block:: console
$ git remote add -f other_project /path/to/
$ git merge -s ours --no-commit --allow-unrelated-histories other_project/main
$ git commit -m "Merge other_project as subdirectory"
$ git push --force-with-lease
.. seealso::
`merge-options
<https://git-scm.com/docs/merge-options#Documentation/merge-options.txt---allow-unrelated-histories>`_

0 comments on commit aec59e1

Please sign in to comment.