# GIT

# Remove unwanted files from a git repo AFTER adding a .gitignore.

```bash

# See the unwanted files:
git ls-files -ci --exclude-standard

# Remove the unwanted files: 
git ls-files -ci --exclude-standard -z | xargs -0 git rm --cached

# Commit changes
git commit -am "Removed unwanted files marked in .gitignore"

# Push
git push origin master # or whatever branch you're on
```

[source](https://gist.github.com/jeffjohnson9046/80bc182db7ae2f4a6150 "where I found this")

# origin

Wofür steht eigentlich "origin"?

Wenn du ein Repository mit `git clone <URL>` von GitHub, GitLab oder Bitbucket auf deinen Rechner holst, passiert im Hintergrund automatisch Folgendes:

1. Git lädt den Code herunter.
2. Git merkt sich die URL, von der der Code kam.
3. Weil sich niemand lange URLs wie `https://github.com/user/projekt-name.git` merken oder sie ständig eintippen will, gibt Git dieser URL den Standard-Spitznamen **`origin`** (engl. für *Ursprung* oder *Herkunft*).

#### 1. Beim Anlegen eines Remotes (`git remote add...`)

Wenn du ein brandneues Projekt lokal auf deinem Rechner startest (per `git init`) und es danach auf GitHub hochladen willst, existiert diese automatische Verknüpfung noch nicht. Du musst sie selbst anlegen:

```bash
git remote add origin https://github.com/deinname/dein-projekt.git
```

Dieser Befehl sagt Git: *„Hey, merk dir bitte diese lange GitHub-URL unter dem kurzen Namen `origin`.“* *(Hinweis: Du könntest das Ding hier auch `banane` oder `server` nennen. Aber `origin` hat sich als weltweiter Standard etabliert, so wie `main` oder `master` für den Haupt-Branch).*

#### 2. Beim Pushen eines neuen Branches (`git push -u origin...`)

Wenn du einen neuen lokalen Branch namens `feature-xyz` erstellt hast und ihn das erste Mal hochladen willst, sagst du:

```bash
git push -u origin feature-xyz
```

Das bedeutet übersetzt: *„Git, pushe meinen lokalen Branch `feature-xyz` zu dem Server, den ich vorhin **`origin`** genannt habe, und richte dort einen gleichnamigen Branch ein.“* (Das `-u` sorgt nur dafür, dass sich Git diese Verbindung für die Zukunft merkt, sodass danach ein einfaches `git push` reicht).

# Umzug eines Repositories

von GitHub zu Forgejo via Migration

Der Umzug eines Repositories von GitHub zu Forgejo lässt sich schnell durchführen, da Forgejo eine eingebaute **Migration-Funktion** bietet. Dadurch werden nicht nur der Code und die Commits, sondern optional auch Issues, Pull Requests, Releases und Wikis automatisch übernommen.

Hier sind die Schritte für die Migration:

<div _ngcontent-ng-c3547852805="" aria-busy="false" aria-live="polite" class="markdown markdown-main-panel enable-luminous-fast-follows enable-updated-hr-color md-content" dir="ltr" id="bkmrk-1.github-personal-ac" inline-copy-host=""><div class="attachment-container unknown"><div class="sequence-container" data-hveid="0" data-ved="0CAAQse0SahcKEwi63K-v_YaWAxUAAAAAHQAAAAAQYw" decode-data-ved="1" jslog="308913;track:impression,attention"><div class="sequence-event ng-star-inserted"><div class="sequence-event-content"><div class="sequence-event-description gds-body-l"><span class="only-show-to-message-actions" data-test-id="sequence-export-header">**1.GitHub Personal Access Token erstellen:** Erforderlich für private Repositories oder Meta-Daten wie PRs und Issues.</span>1. Gehe auf GitHub zu **Settings** -&gt; **Developer Settings** -&gt; **Personal Access Tokens** -&gt; **Tokens (classic)**.
2. Erstelle einen neuen Token (*Generate new token*).
3. Gib ihm mindestens die Berechtigung `repo` (für Zugriff auf Repositories) und erstelle den Token. Kopiere ihn direkt ab.

</div></div></div><div class="sequence-event ng-star-inserted"><div class="sequence-event-content"><div class="sequence-event-description gds-body-l"><span class="only-show-to-message-actions" data-test-id="sequence-export-header">**2.Migration in Forgejo starten:**</span>1. Melde dich bei deiner Forgejo-Instanz an.
2. Klicke oben rechts auf das **+**-Symbol und wähle **Neue Migration** (oder *New Migration*).
3. Wähle **GitHub** als Quell-Plattform aus.

</div></div></div><div class="sequence-event ng-star-inserted"><div class="sequence-event-content"><div class="sequence-event-description gds-body-l"><span class="only-show-to-message-actions" data-test-id="sequence-export-header">**3.Zugangsdaten und Optionen konfigurieren:**</span>1. Trage dein GitHub Personal Access Token im Feld **Access Token** ein.
2. Gib die **Clone URL** des GitHub-Repositories an (z. B. `[https://github.com/user/repo.git](https://github.com/user/repo.git)`).
3. Wähle den neuen Repository-Namen und den Eigentümer (User oder Organisation) in Forgejo aus.
4. Setze Haken bei den Elementen, die du migrieren möchtest:
    
    
    - **Code &amp; Commits**
    - **Issues &amp; Issue-Kommentare**
    - **Pull Requests**
    - **Releases &amp; Attachments**
    - **Wiki**
5. Klicke auf **Migration starten**.

</div></div></div><div class="sequence-event ng-star-inserted"><div class="sequence-event-content"><div class="sequence-event-description gds-body-l"><span class="only-show-to-message-actions" data-test-id="sequence-export-header">**4.Lokales Git Remote aktualisieren:**Lokal auf deinem Computer ausführen.</span></div></div></div></div></div></div>Wenn du das Repository bereits lokal gekontrollierst oder daran arbeitest, passe die Remote-URL an deine Forgejo-Instanz an:

<div _ngcontent-ng-c3547852805="" aria-busy="false" aria-live="polite" class="markdown markdown-main-panel enable-luminous-fast-follows enable-updated-hr-color md-content" dir="ltr" id="bkmrk-" inline-copy-host=""><div class="attachment-container unknown"><div class="sequence-container" data-hveid="0" data-ved="0CAAQse0SahcKEwi63K-v_YaWAxUAAAAAHQAAAAAQYw" decode-data-ved="1" jslog="308913;track:impression,attention"><div class="sequence-event ng-star-inserted"><div class="sequence-event-content"><div class="sequence-event-description gds-body-l"></div></div></div></div></div></div><div _ngcontent-ng-c2273258466="" class="code-block ng-tns-c2273258466-31 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="1" id="bkmrk-bash" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_3525046f56ee2608","c_cc161d4411f4ff06",null,"rc_ab74377076fc3f29",null,null,"de",null,1,null,null,1,0]]"><div _ngcontent-ng-c2273258466="" class="formatted-code-block-internal-container ng-tns-c2273258466-31"><div _ngcontent-ng-c2273258466="" class="animated-opacity ng-tns-c2273258466-31"><div _ngcontent-ng-c2273258466="" class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c2273258466-31 ng-star-inserted"><span class="ng-tns-c2273258466-31">Bash</span><div _ngcontent-ng-c2273258466="" class="buttons ng-tns-c2273258466-31 ng-star-inserted"><button aria-label="Code herunterladen" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted"></button><button aria-label="Code kopieren" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted"></button></div></div></div></div></div>```bash
# Aktuelle URL prüfen
git remote -v

# Remote auf Forgejo umstellen
git remote set-url origin https://deine-forgejo-instanz.de/user/repo.git

# Änderungen zur Bestätigung pushen/fetchen
git fetch origin

```

<div _ngcontent-ng-c2273258466="" class="code-block ng-tns-c2273258466-31 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="1" id="bkmrk--1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_3525046f56ee2608","c_cc161d4411f4ff06",null,"rc_ab74377076fc3f29",null,null,"de",null,1,null,null,1,0]]"><div _ngcontent-ng-c2273258466="" class="formatted-code-block-internal-container ng-tns-c2273258466-31"><div _ngcontent-ng-c2273258466="" class="animated-opacity ng-tns-c2273258466-31"></div></div></div><div _ngcontent-ng-c3547852805="" aria-busy="false" aria-live="polite" class="markdown markdown-main-panel enable-luminous-fast-follows enable-updated-hr-color md-content" dir="ltr" id="bkmrk--2" inline-copy-host=""><div class="attachment-container unknown"><div class="sequence-container" data-hveid="0" data-ved="0CAAQse0SahcKEwi63K-v_YaWAxUAAAAAHQAAAAAQYw" decode-data-ved="1" jslog="308913;track:impression,attention"><div class="sequence-event ng-star-inserted"><div class="sequence-event-content"><div class="sequence-event-description gds-body-l"></div></div></div></div></div></div>#### Was du beachten solltest

<div _ngcontent-ng-c3547852805="" aria-busy="false" aria-live="polite" class="markdown markdown-main-panel enable-luminous-fast-follows enable-updated-hr-color md-content" dir="ltr" id="bkmrk-github-actions-vs.-f" inline-copy-host="">- **GitHub Actions vs. Forgejo Actions:** CI/CD-Pipelines (`.github/workflows/`) werden als Dateien mitkopiert, funktionieren auf Forgejo aber nur, wenn dort **Forgejo Actions** (basierend auf *act\_runner*) aktiviert ist. Eventuell musst du Syntax-Details anpassen.
- **Webhooks &amp; Integrations:** Externe Anbindungen (Discord-Bots, Deployment-Hooks etc.) werden nicht automatisch übertragen und müssen in Forgejo unter *Repository-Einstellungen -&gt; Webhooks* neu angelegt werden.

</div><div _ngcontent-ng-c3547852805="" aria-busy="false" aria-live="polite" class="markdown markdown-main-panel enable-luminous-fast-follows enable-updated-hr-color md-content" dir="ltr" id="bkmrk--3" inline-copy-host=""><div class="attachment-container unknown"></div></div><div _ngcontent-ng-c3547852805="" aria-busy="false" aria-live="polite" class="markdown markdown-main-panel enable-luminous-fast-follows enable-updated-hr-color md-content" dir="ltr" id="bkmrk--4" inline-copy-host=""></div>

# Umzug eines Repositories

via git push --mirror

Der manuelle Umzug per `--mirror` ist ideal, wenn du ein reines Git-Repository inklusive aller **Branches, Tags und der kompletten Commit-Historie** übertragen möchtest – ganz ohne GitHub-Tokens oder Metadaten wie PRs und Issues.

Hier ist der genaue Ablauf über das Terminal:

<div _ngcontent-ng-c3547852805="" aria-busy="false" aria-live="polite" class="markdown markdown-main-panel enable-luminous-fast-follows enable-updated-hr-color md-content" dir="ltr" id="bkmrk-1.leeres-repository-" inline-copy-host=""><div class="attachment-container unknown"><div class="sequence-container" data-hveid="0" data-ved="0CAAQse0SahgKEwi63K-v_YaWAxUAAAAAHQAAAAAQlAE" decode-data-ved="1" jslog="308913;track:impression,attention"><div class="sequence-event ng-star-inserted"><div class="sequence-event-content"><div class="sequence-event-description gds-body-l"><span class="only-show-to-message-actions" data-test-id="sequence-export-header">**1.Leeres Repository in Forgejo erstellen:**Auf der Ziel-Plattform.</span>1. Melde dich bei deiner Forgejo-Instanz an.
2. Klicke auf das **+**-Symbol oben rechts und wähle **Neues Repository**.
3. Gib den Repository-Namen ein.
4. **Wichtig:** Initialisiere das Repository **nicht** (keine README, keine `.gitignore` und keine Lizenz anlegen lassen). Es muss vollkommen leer sein.
5. Kopiere die Git-URL des neuen Repositories (z. B. `[https://forgejo.dein-server.de/user/repo.git](https://forgejo.dein-server.de/user/repo.git)` oder per SSH `git@forgejo.dein-server.de:user/repo.git`).

</div></div></div><div class="sequence-event ng-star-inserted"><div class="sequence-event-content"><div class="sequence-event-description gds-body-l"><span class="only-show-to-message-actions" data-test-id="sequence-export-header">**2.Bare-Clone des GitHub-Repositories erstellen:**Lokal auf deinem Computer.</span></div></div></div></div></div></div>Erstelle einen temporären "Bare-Clone" des GitHub-Repositories. Dieser enthält nur die Git-Datenbank ohne Arbeitsverzeichnis:

<div _ngcontent-ng-c3547852805="" aria-busy="false" aria-live="polite" class="markdown markdown-main-panel enable-luminous-fast-follows enable-updated-hr-color md-content" dir="ltr" id="bkmrk-" inline-copy-host=""><div class="attachment-container unknown"><div class="sequence-container" data-hveid="0" data-ved="0CAAQse0SahgKEwi63K-v_YaWAxUAAAAAHQAAAAAQlAE" decode-data-ved="1" jslog="308913;track:impression,attention"><div class="sequence-event ng-star-inserted"><div class="sequence-event-content"><div class="sequence-event-description gds-body-l"></div></div></div></div></div></div><div _ngcontent-ng-c2273258466="" class="code-block ng-tns-c2273258466-88 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="1" id="bkmrk-bash" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_3acbd7899f951fcc","c_cc161d4411f4ff06",null,"rc_13dd601b739db358",null,null,"de",null,1,null,null,1,0]]"><div _ngcontent-ng-c2273258466="" class="formatted-code-block-internal-container ng-tns-c2273258466-88"><div _ngcontent-ng-c2273258466="" class="animated-opacity ng-tns-c2273258466-88"><div _ngcontent-ng-c2273258466="" class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c2273258466-88 ng-star-inserted"><span class="ng-tns-c2273258466-88">Bash</span><div _ngcontent-ng-c2273258466="" class="buttons ng-tns-c2273258466-88 ng-star-inserted"><button aria-label="Code herunterladen" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted"></button><button aria-label="Code kopieren" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted"></button></div></div></div></div></div>```
git clone --bare https://github.com/nutzername/repository.git mirror-temp.git
cd mirror-temp.git

```

<div _ngcontent-ng-c2273258466="" class="code-block ng-tns-c2273258466-88 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="1" id="bkmrk--1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_3acbd7899f951fcc","c_cc161d4411f4ff06",null,"rc_13dd601b739db358",null,null,"de",null,1,null,null,1,0]]"><div _ngcontent-ng-c2273258466="" class="formatted-code-block-internal-container ng-tns-c2273258466-88"><div _ngcontent-ng-c2273258466="" class="animated-opacity ng-tns-c2273258466-88"></div></div></div><div _ngcontent-ng-c3547852805="" aria-busy="false" aria-live="polite" class="markdown markdown-main-panel enable-luminous-fast-follows enable-updated-hr-color md-content" dir="ltr" id="bkmrk-3.repository-zu-forg" inline-copy-host=""><div class="attachment-container unknown"><div class="sequence-container" data-hveid="0" data-ved="0CAAQse0SahgKEwi63K-v_YaWAxUAAAAAHQAAAAAQlAE" decode-data-ved="1" jslog="308913;track:impression,attention"><div class="sequence-event ng-star-inserted"><div class="sequence-event-content"><div class="sequence-event-description gds-body-l"></div></div></div><div class="sequence-event ng-star-inserted"><div class="sequence-event-content"><div class="sequence-event-description gds-body-l"><span class="only-show-to-message-actions" data-test-id="sequence-export-header">**3.Repository zu Forgejo spiegeln:**</span></div></div></div></div></div></div>Pushe den gesamten Stand (alle Referenzen, Branches und Tags) per Mirror-Option zu Forgejo:

<div _ngcontent-ng-c3547852805="" aria-busy="false" aria-live="polite" class="markdown markdown-main-panel enable-luminous-fast-follows enable-updated-hr-color md-content" dir="ltr" id="bkmrk--2" inline-copy-host=""><div class="attachment-container unknown"><div class="sequence-container" data-hveid="0" data-ved="0CAAQse0SahgKEwi63K-v_YaWAxUAAAAAHQAAAAAQlAE" decode-data-ved="1" jslog="308913;track:impression,attention"><div class="sequence-event ng-star-inserted"><div class="sequence-event-content"><div class="sequence-event-description gds-body-l"></div></div></div></div></div></div><div _ngcontent-ng-c2273258466="" class="code-block ng-tns-c2273258466-89 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="4" id="bkmrk-bash-1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_3acbd7899f951fcc","c_cc161d4411f4ff06",null,"rc_13dd601b739db358",null,null,"de",null,1,null,null,1,0]]"><div _ngcontent-ng-c2273258466="" class="formatted-code-block-internal-container ng-tns-c2273258466-89"><div _ngcontent-ng-c2273258466="" class="animated-opacity ng-tns-c2273258466-89"><div _ngcontent-ng-c2273258466="" class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c2273258466-89 ng-star-inserted"><span class="ng-tns-c2273258466-89">Bash</span><div _ngcontent-ng-c2273258466="" class="buttons ng-tns-c2273258466-89 ng-star-inserted"><button aria-label="Code herunterladen" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted"></button><button aria-label="Code kopieren" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted"></button></div></div></div></div></div>```
git push --mirror https://forgejo.dein-server.de/user/repo.git

```

<div _ngcontent-ng-c2273258466="" class="code-block ng-tns-c2273258466-89 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="4" id="bkmrk--3" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_3acbd7899f951fcc","c_cc161d4411f4ff06",null,"rc_13dd601b739db358",null,null,"de",null,1,null,null,1,0]]"><div _ngcontent-ng-c2273258466="" class="formatted-code-block-internal-container ng-tns-c2273258466-89"><div _ngcontent-ng-c2273258466="" class="animated-opacity ng-tns-c2273258466-89"></div></div></div><div _ngcontent-ng-c3547852805="" aria-busy="false" aria-live="polite" class="markdown markdown-main-panel enable-luminous-fast-follows enable-updated-hr-color md-content" dir="ltr" id="bkmrk--4" inline-copy-host=""><div class="attachment-container unknown"><div class="sequence-container" data-hveid="0" data-ved="0CAAQse0SahgKEwi63K-v_YaWAxUAAAAAHQAAAAAQlAE" decode-data-ved="1" jslog="308913;track:impression,attention"><div class="sequence-event ng-star-inserted"><div class="sequence-event-content"><div class="sequence-event-description gds-body-l"></div></div></div></div></div></div>*(Wenn du SSH nutzt, verwende die SSH-URL: `git push --mirror git@forgejo.dein-server.de:user/repo.git`)*

<div _ngcontent-ng-c3547852805="" aria-busy="false" aria-live="polite" class="markdown markdown-main-panel enable-luminous-fast-follows enable-updated-hr-color md-content" dir="ltr" id="bkmrk-4.aufr%C3%A4umen-und-remo" inline-copy-host=""><div class="attachment-container unknown"><div class="sequence-container" data-hveid="0" data-ved="0CAAQse0SahgKEwi63K-v_YaWAxUAAAAAHQAAAAAQlAE" decode-data-ved="1" jslog="308913;track:impression,attention"><div class="sequence-event ng-star-inserted"><div class="sequence-event-content"><div class="sequence-event-description gds-body-l"></div></div></div><div class="sequence-event ng-star-inserted"><div class="sequence-event-content"><div class="sequence-event-description gds-body-l"><span class="only-show-to-message-actions" data-test-id="sequence-export-header">**4.Aufräumen und Remote-URL aktualisieren:**Saubermachen und bestehende Arbeitskopie anpassen.</span>1. Lösche den temporären Bare-Ordner wieder:

</div></div></div></div></div></div><div _ngcontent-ng-c2273258466="" class="code-block ng-tns-c2273258466-90 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="7" id="bkmrk-bash-2" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_3acbd7899f951fcc","c_cc161d4411f4ff06",null,"rc_13dd601b739db358",null,null,"de",null,1,null,null,1,0]]"><div _ngcontent-ng-c2273258466="" class="formatted-code-block-internal-container ng-tns-c2273258466-90"><div _ngcontent-ng-c2273258466="" class="animated-opacity ng-tns-c2273258466-90"><div _ngcontent-ng-c2273258466="" class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c2273258466-90 ng-star-inserted"><span class="ng-tns-c2273258466-90">Bash</span><div _ngcontent-ng-c2273258466="" class="buttons ng-tns-c2273258466-90 ng-star-inserted"><button aria-label="Code herunterladen" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted"></button><button aria-label="Code kopieren" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted"></button></div></div></div></div></div>```
cd ..
rm -rf mirror-temp.git

```

<div _ngcontent-ng-c2273258466="" class="code-block ng-tns-c2273258466-90 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="7" id="bkmrk--5" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_3acbd7899f951fcc","c_cc161d4411f4ff06",null,"rc_13dd601b739db358",null,null,"de",null,1,null,null,1,0]]"><div _ngcontent-ng-c2273258466="" class="formatted-code-block-internal-container ng-tns-c2273258466-90"><div _ngcontent-ng-c2273258466="" class="animated-opacity ng-tns-c2273258466-90"></div></div></div><div _ngcontent-ng-c3547852805="" aria-busy="false" aria-live="polite" class="markdown markdown-main-panel enable-luminous-fast-follows enable-updated-hr-color md-content" dir="ltr" id="bkmrk-wenn-du-bereits-eine" inline-copy-host=""><div class="attachment-container unknown"><div class="sequence-container" data-hveid="0" data-ved="0CAAQse0SahgKEwi63K-v_YaWAxUAAAAAHQAAAAAQlAE" decode-data-ved="1" jslog="308913;track:impression,attention"><div class="sequence-event ng-star-inserted"><div class="sequence-event-content"><div class="sequence-event-description gds-body-l">2. Wenn du bereits einen normalen Arbeitsordner des Repositories auf deinem Rechner hast, wechsle hinein und passe die Remote-URL an:

</div></div></div></div></div></div><div _ngcontent-ng-c2273258466="" class="code-block ng-tns-c2273258466-91 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="10" id="bkmrk-bash-3" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_3acbd7899f951fcc","c_cc161d4411f4ff06",null,"rc_13dd601b739db358",null,null,"de",null,1,null,null,1,0]]"><div _ngcontent-ng-c2273258466="" class="formatted-code-block-internal-container ng-tns-c2273258466-91"><div _ngcontent-ng-c2273258466="" class="animated-opacity ng-tns-c2273258466-91"><div _ngcontent-ng-c2273258466="" class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c2273258466-91 ng-star-inserted"><span class="ng-tns-c2273258466-91">Bash</span><div _ngcontent-ng-c2273258466="" class="buttons ng-tns-c2273258466-91 ng-star-inserted"><button aria-label="Code herunterladen" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted"></button><button aria-label="Code kopieren" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted"></button></div></div></div></div></div>```
cd dein-projekt-ordner
git remote set-url origin https://forgejo.dein-server.de/user/repo.git
git fetch origin

```

<div _ngcontent-ng-c2273258466="" class="code-block ng-tns-c2273258466-91 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="10" id="bkmrk--6" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_3acbd7899f951fcc","c_cc161d4411f4ff06",null,"rc_13dd601b739db358",null,null,"de",null,1,null,null,1,0]]"><div _ngcontent-ng-c2273258466="" class="formatted-code-block-internal-container ng-tns-c2273258466-91"><div _ngcontent-ng-c2273258466="" class="animated-opacity ng-tns-c2273258466-91"></div></div></div><div _ngcontent-ng-c3547852805="" aria-busy="false" aria-live="polite" class="markdown markdown-main-panel enable-luminous-fast-follows enable-updated-hr-color md-content" dir="ltr" id="bkmrk--7" inline-copy-host=""><div class="attachment-container unknown"><div class="sequence-container" data-hveid="0" data-ved="0CAAQse0SahgKEwi63K-v_YaWAxUAAAAAHQAAAAAQlAE" decode-data-ved="1" jslog="308913;track:impression,attention"><div class="sequence-event ng-star-inserted"><div class="sequence-event-content"><div class="sequence-event-description gds-body-l"></div></div></div></div></div></div>### Was macht `--mirror` anders als ein normaler Push?

<div _ngcontent-ng-c3547852805="" aria-busy="false" aria-live="polite" class="markdown markdown-main-panel enable-luminous-fast-follows enable-updated-hr-color md-content" dir="ltr" id="bkmrk-git-push---all-%C3%BCbert" inline-copy-host="">- **`git push --all`** überträgt nur alle lokalen Branches.
- **`git push --mirror`** spiegelt den *exakten* Zustand aller Referenzen: Lokale Branches, Remote-Tracking-Branches, Tags sowie Notizen (`refs/notes/`). Es überschreibt das Ziel-Repository komplett, damit es exakt dem Quell-Repository entspricht.

</div><div _ngcontent-ng-c3547852805="" aria-busy="false" aria-live="polite" class="markdown markdown-main-panel enable-luminous-fast-follows enable-updated-hr-color md-content" dir="ltr" id="bkmrk--8" inline-copy-host=""><div class="attachment-container unknown"></div></div><div _ngcontent-ng-c3547852805="" aria-busy="false" aria-live="polite" class="markdown markdown-main-panel enable-luminous-fast-follows enable-updated-hr-color md-content" dir="ltr" id="bkmrk--9" inline-copy-host=""></div>