Ein paar Git-Tricks und Tipps


Bildquelle

Ich bin kein Profi mit gitdavon lerne ich noch https://git-scm.com, und so viele andere Ressourcen. Ein paar nützliche Befehle sparen meine Stunden, wenn ich einen engen Zeitplan habe, um meine Projekte abzuschließen. Ich würde mich freuen, wenn sie dir auch helfen. Bitte kommentieren Sie, wenn ich ein Missverständnis bei der Verwendung habe.

drin:

Wir alle verwenden git init es erstellt einfach ein leeres git Repository im aktuellen Verzeichnis. Sie können auch den Pfad des Zielverzeichnisses angeben, unter dem eine leere git repo kann initialisiert werden. Wenn Sie also ein leeres Git-Repo unter erstellen möchten ~/Desktop/Test wird Ihr Befehl sein

git init ~/Desktop/Test

Klon:

Gleiches gilt auch für clone Befehl. Wenn Sie ausführen git clone https://github.com/sauvikdolui/SDStateTableView.git wird das Projekt darunter geklont SDStateTableView Verzeichnis. Dies ist das Standardverhalten. Stattdessen können Sie auch den Pfad des Verzeichnisses angeben, wo git muss einen Klon machen. Um also in ein Zielverzeichnis zu klonen, verwenden Sie den folgenden Befehl

git clone <url_of_the_repo> <path_of_the_empty_directory>

Nur einen bestimmten Zweig klonen:

Gelegentlich ist es erforderlich, einen bestimmten Zweig zu klonen, da Sie nur einen Blick auf die Codebasis dieses Zweigs werfen möchten. In diesem Szenario können Sie einfach verwenden

git clone -b <name_of_the_branch> --single-branch <url_of_the_git_repo>

Unterschied:

Verwenden Sie die folgenden Befehle, um die Änderungen vor dem Staging anzuzeigen

// Shows changes made to all files in current working tree
git diff

// Shows changes made so far on a specific file only
git diff <path_to_file>

// Shows differences made on files even when they are staged
git diff --staged

hinzufügen:

Wir verwenden im Allgemeinen git add --all alle hinzuzufügen verfolgt oder nicht verfolgt Dateien in den aktuellen Git-Arbeitsbaum. Hier sind einige weitere Verwendungen von git add

// Adds all .swift files under current directory only1. 
git add *.swift

// Adds all files under Login directory only2. 
git add Login/

// Adds all .swift files under Login directory only3. 
git add Login/*.swift

// Adds all .swift files from current and sub-directories4. 
git add '*.swift'

Konfiguration:

Arbeiten auf dem System eines anderen:

Manchmal müssen wir mit dem System eines anderen arbeiten. Bevor Sie Ihr eigenes Commit erstellen, konfigurieren Sie bitte Git mit den folgenden Elementen

git config --local user.name 'your_user_name'
git config --local user.email 'your_user_email_id'

// You also need to disable current credential helper 
git config credential.helper ''

Wann immer Sie versuchen, Ihren Code zu pushen, git wird explizit nachgefragt username und password.

Notiz: Bevor Sie den Credential Helper deaktivieren, notieren Sie sich seinen aktuellen Wert mit

git config --show credential.helper
// For OS X it is file:.git/config osxkeychain

Credential Helper zurücksetzen mit git config credential.helper 'osxkeychain' .

hinzufügen & verpflichten in einem einzigen Befehl:

Wir allgemein add ein paar Dateien (neu oder geändert) und danach commit Sie. Wir können dies jedoch mit einem einzigen Befehl tun nur wenn es keine neue Datei gibt.

git commit -a -m 'your commit message'

An einer Datei vorgenommene Änderungen verwerfen:

Manchmal nehmen wir einige verrückte Änderungen an einer aktuellen Datei vor Arbeitsverzeichnis was nicht war inszeniert noch. Verwenden checkout um die Änderungen daran zu verwerfen.

git checkout -- <path_to_file>

Unstaging einer Datei:

Wenn Sie eine Datei aus der Staging-Umgebung entfernen möchten, verwenden Sie den folgenden Befehl

git reset HEAD <path to file>

Bearbeiten der letzten Commit-Nachricht:

git commit --amend hilft Ihnen, Ihre dummen Fehler zu beheben, die Sie beim Eingeben Ihrer letzten Commit-Nachricht gemacht haben.

Commits verwerfen:

Der sanfte Weg: Änderungen beibehalten

Bei diesem Vorgang wird die Änderungen, die nach dem letzten Commit an den Dateien vorgenommen wurden, werden nicht verworfen, nur der Commit wird aus dem Arbeitsablauf entfernt.

// Moves the added files in last commit back to staged area
git reset --soft HEAD^

// Discards last two commits and HEAD points two commits back
git reset --soft HEAD^^

// Discards last n commits and HEAD points n commits back
git reset --soft HEAD~n

The Hard Way: Ich kümmere mich nicht um Änderungen

Nun, das ist ein bisschen gefährlich und geradlinig. Wenn wir verwenden --hard statt Option --soft die Änderungen, die in nachfolgenden Commits an den Dateien vorgenommen werden, gehen verloren. Sie enden einfach mit einer Nachricht nothing to commit, working tree is clean wenn Sie verwenden git status nach der Verwendung git reset --hard.

Ihren letzten Push verwerfen (nur Notfall🚨):

Wenn Sie sind betrunken und habe ein paar Zeilen deines geheimen Gedichts niedergeschrieben (💑) auf Ihre Quelldatei und geschoben es zu remote , dann könnten Sie in Schwierigkeiten geraten. Die folgenden beiden Befehle löschen den letzten Push auf dem Server.

Notiz: Wenden Sie sich immer an die Mitglieder Ihres Entwicklerteams, bevor Sie fortfahren!!!!!

// Move back to one commit earlier
git reset --hard HEAD^

// Push the commit forcefully to remotegit push -f

Zeig mir die Bedeutung… ODER Herkunft?

Vielleicht möchten Sie

  1. Listen Sie alle Remote-Zweige auf und
  2. die Zuordnung zwischen lokalen und entfernten Zweigen kennen
  3. Der Einfluss von git ziehen und git push auf lokalen und entfernten Zweigen
  4. Synchronisieren Sie den Status jeder lokalen Niederlassung mit ihren entsprechenden Remotes.

Dann der folgende Befehl

// Syntax
git remote show <remote_name>

// Example
git remote show origin

wird die beste Option für Sie sein. Es ist genau für diese Zwecke konzipiert.

ziehen

So git remote show origin hilft Ihnen, die Karte zwischen den lokalen und entfernten Niederlassungen herauszufinden. Angenommen, Ihr lokales Repository verfolgt fälschlicherweise einen Feature-Branch feat/backend/global_country_zip_map und kürzlich hat es ein Update mit einer 250-MB-Datenbankdatei erhalten. Sie sind ein iOS-Entwickler und möchten diese 250 MB wirklich nicht ziehen .db Datei in Ihr lokales System. Sie sind nur daran interessiert, den iOS-Funktionszweig herunterzufahren feat/ios/address_management only_._ Sie müssen also einen einzelnen Zweig herunterziehen.

Ziehen Sie nur einen einzelnen Zweig herunter:

// Basic Syntax
git pull <remote> <remote-branch-name>

// Examplegit pull origin feat/ios/address_management

git pull: Hinter der Haube

git pull ist ein zweistufiger Prozess

  1. git fetch ruft die entfernten Branches ab
  2. git merge FETCH-HEAD und führt die Lokalen mit dem neuesten HEAD zusammen, der für jeden Zweig verfügbar ist.

Vermeide es, den Verlauf mit git pull zu verschmutzen:

Wenn Sie dieser ernsthafte Typ sind, der hasst Commit zusammenführen , Sie können ganz einfach eine Option für hinzufügengit pull --rebasestatt merge mit dem folgenden Befehl.

git pull --rebase

Zweig:

Listen Sie alle Zweige auf:

git branch -a // Shows remote and local branches
git branch // Shows only local branches

Erstellen und Auschecken in einen Branch:

// Syntax
git branch <branch_name>

// Creating a feature branch for address managementgit branch feat/ios/address_management

// Checking into thatgit checkout feat/ios/address_management

// Creating and checking in with a single linegit checkout -b feat/ios/address_management

Lokale Filiale löschen:

Es hat sich bewährt, für jedes einzelne Feature einen separaten Zweig zu erstellen, und sobald die Aufgabe abgeschlossen ist, führen Sie den Zweig zusammen develop und löschen Sie den lokalen Feature-Branch.

// Syntax
git branch -d <branch>

// Deleting a local feature branch
git branch -d feat/ios/address_management

Angenommen, ich habe einetemp Zweig mit ein paar Änderungen innerhalb dessen, die nicht in einen anderen Hauptstrom-Zweig überführt werden. Wenn ich diesen Zweig löschen möchte, gitzeigt mir folgenden Fehler

error: The branch ‘temp’ is not fully merged.
If you are sure you want to delete it, run ‘git branch -D temp’.

Löschen temp Führen Sie den Befehl zwangsweise mit Option aus -D

git branch -D temp

Mehrere lokale Zweigstellen gleichzeitig löschen:

Während Sie Ihr lokales Repository bereinigen, können Sie mehrere Zweige mit dem folgenden Befehl löschen

git branch -d local_branch1 local_branch2 local_branch3

Verzweigung aus der Ferne löschen:

Manchmal sichern wir unsere Feature-Zweige, indem wir sie einfach hineinschieben remotes wenn die Aufgabe länger als einen Tag dauert. Das Löschen dieser Feature-Zweige ist wichtig für die Bereinigung remotes.

// The basic syntax to delete a remote branch
git push <remote> :<branch_name>

// Deleting feat/ios/address_management from remote origingit push origin :feat/ios/address_management

// Deleting multiple remote branches at once
git push origin :feat/ios/address_management :feat/deal_management

Upstream für eine lokale Verzweigung einrichten:

Angenommen, eine Ihrer bestehenden lokalen Filialen muss mit einer Remote-Filiale verfolgt werden. Sie müssen diese beiden mit dem folgenden Befehl zuordnen (Upstream einrichten).

git branch --set-upstream-to=origin/<branch> develop/functionality-new

drücken:

Nur einen einzelnen Zweig pushen:

Standardmäßig beim Ausführen git push git überträgt festgeschriebene Änderungen an alle Remote-Zweige, die verfolgt werden. Wenn Sie nur Änderungen veröffentlichen möchten, die an einem bestimmten Zweig vorgenommen wurden, kann der folgende Befehl hilfreich sein.

// General syntax
git push <remote> <remote_branch>

// Example
git push bitbucket feat/ios/login_api

// Pushed local branch prod to CI server heroku branch master 
git checkout prod
git push heroku master

Stichworte:

Git-Tags sind wirklich nützlich, um die Codebasis zu archivieren, die sich auf eine bestimmte Release-Version bezieht. Angenommen, Sie sind der Zustellungsmanager, an den der Code schließlich weitergeleitet werden soll Heroku Kontinuierliche Integration (Heroku CI)-Server verwenden git push heroku master und stellen Sie diese schließlich mithilfe von bereit heroku open. Herzlichen Glückwunsch!!🤝🤝 Sie haben erfolgreich eingesetzt v0.0.1. Warte🧐🧐, brauchst du ein Backup dieser Codebasis? Denn beim nächsten Mal wirst du veröffentlichen v0.0.2 und so weiter, wird es schwierig sein, von einem Commit zum anderen zu springen, um die Produktionscodebasis für jede Version zu erhalten. Verwenden tag s kann dir sehr helfen. Wenn Sie also eine Version Ihrer Anwendung bereitstellen, können Sie diese Codebasis archivieren, indem Sie ein neues Tag erstellen.

Tag erstellen:

// Basic Syntax
git tag -a <name_of_tag> -m ‘tag message’

// Example
git tag -a v0.0.1-⍺ -m 'Published v0.0.1-⍺, need to stay awake to fix any bug 😭'

Tags an Remote übertragen:

// Publishing all tags
git push --tags

// Publishing a single tag

// Syntaxgit push <remote> <tag_name>

// Example
git push bitbucket v0.0.1-⍺

Liste aller Tags:

git tag

Tag auschecken:

Also veröffentlichte ich v0.0.1-⍺ letzte Nacht, heute Morgen scheint zu sein gut da ich nur eine bekommen habe geringes Problem. Der Delivery Manager hat mich gebeten, dieses Problem zu beheben und den Build schließlich für die Betaversion bereitzustellen. Also muss ich

  1. Check-out-Etikett v0.0.1-⍺
  2. Erstellen Sie einen Issue-Fix-Branch fix/ios/minor_issue.
  3. Beheben Sie das Problem und führen Sie den Fix in prod.
  4. Stellen Sie den Build bereit.
  5. Erstellen Sie ein separates Beta-Release-Tag und
  6. Schieben Sie schließlich dieses Tag in die Fernbedienung.

Versuchen Sie, mir auf dem Terminal zu folgen

// 1. Checkout 
git checkout v0.0.1-⍺

// 2. Create fix branch
git checkout -b fix/ios/minor_issue

// 3. Fix and merge prod into fix/ios/minor_issue
git merge prod

// 4. Checkout and merge fix/ios/minor_issue into prod
git checkout prod
git merge fix/ios/minor_issue

// 5. Deploy build

// 6. Create a beta release tag
git tag -a v0.0.1-β -m 'Boss! Can I sleep tonight? 🤣'

// Push Tag to remote
git push bitbucket v0.0.1-β

Tags löschen:

Die Syntax ist identisch mit dem Vorgang zum Löschen eines Zweigs von lokal und entfernt.

// Deleting tag from local
git tag -d v0.0.1-β

// Deleting tag from remote
git push bitbucket :v0.0.1-β

Tag aus einem früheren Commit erstellen:

Wir können sogar ein Tag aus einem früheren Commit erstellen. Sie müssen nur den SHA-Hash des Commit angeben, die Syntax lautet wie folgt

// Syntax
git tag -a <tag_name> <SHA Hash of that commit>

// Example
git tag -a v1.2 9fceb02

Fernbedienung:

Liste aller Fernbedienungen:

git remote -v

Mehrere Remotes warten (Bitbucket + GitHub + GitLab + …):

Standardmäßig nennen wir unsere süße Fernbedienung als origin . Manchmal entwickeln wir Funktionen weiter und verschieben sie auf Remote originin unserem unternehmenseigenen Repository, bis das Unternehmen für die Lieferung der Codebasis an den Kunden bezahlt wird. Angenommen, unser Unternehmen hat ein eigenes Codebasis-Repository bei BitBucket. Der Kunde führt sein Konto bei GitHub. Der Kunde hat gerade das Geld bezahlt, jetzt will er die vollständige Codebasis mit jedem einzelnen Commit, jemand wartet dort auf die Codeüberprüfung😂. Das wird wirklich knifflig? Nein, Sie brauchen nur mehrere Fernbedienungen.

Strategie:

  1. Erstellen Sie das Projekt beim Einrichten einfach bei Bitbucket. Rufen Sie die URL des Repositorys ab. Angenommen, es ist
  2. In Ihrem Projektverzeichnis
// Initialize the git repo
git init

// Add your company's Bitbucket remotegit remote add bitbucket 
  1. Setzen Sie die Entwicklung fort und übertragen Sie sie auf die Fernbedienung Ihres Unternehmens bitbucket .

  2. Wenn die Zahlung eingeht (🎊🎁🎉), müssen Sie in das Repo des Kunden pushen.

// Add your Client's Github remotegit remote add github 
  1. Und Sie können Ihren Entwicklungszweig vorantreiben develop in das Repo des Kunden mit
git push -u github develop 
// for the first time use option -u to set upstream

mit all Ihrem Commit-Verlauf von Anfang an.


Vielen Dank für das Lesen des Blogs. Wenn Ihnen die Tricks und Tipps wirklich gefallen haben, drücken Sie bitte die Clap-Taste. Ich freue mich auch über Ihre wertvollen Kommentare.

Aktionen:

Vergiss nicht, meine vorherigen Blogs zu lesen😏.

1. Überwachung des Netzwerkerreichbarkeitsstatus unter iOS

  1. Teil 1.
  2. Teil 2 .

2. Eine intelligente Möglichkeit, Farbschemata für die Entwicklung von iOS-Anwendungen zu verwalten.

3. Einfachere Handhabung von Schriften in der iOS-Entwicklung.

4. Entwicklung eines winzigen Loggers in Swift.

5. Erstellen einer Stateful TableView für iOS .

Similar Posts

Leave a Reply

Your email address will not be published.