Inhaltsverzeichnis
So erhalten Sie die aktuell übermittelten Benutzerinformationen
如何获取当前分支
如何获取本地未 push 的所有 commit
如何获取每个 commit 修改的文件
总结
Heim Entwicklungswerkzeuge Idiot Teilen Sie einen wichtigen Git-Tipp zum Schutz des Kerncodes!

Teilen Sie einen wichtigen Git-Tipp zum Schutz des Kerncodes!

Dec 30, 2022 pm 05:42 PM
git 核心代码

Wir haben vor einiger Zeit eine Kerncode-Schutzfunktion fertiggestellt. Das Ziel besteht darin, den Schlüsselcode rechtzeitig mit anderen zu synchronisieren, um Probleme zu vermeiden, die durch das Online-Gehen ohne Überprüfung entstehen folgt:

Teilen Sie einen wichtigen Git-Tipp zum Schutz des Kerncodes!

Wird implementiert. Dabei werden einige Git-Fähigkeiten verwendet, die selten verwendet werden. In diesem Artikel werden sie zusammengefasst.

So erhalten Sie die aktuell übermittelten Benutzerinformationen

Das ist relativ einfach, übergeben Sie einfach git config user.name:

04318deMacBook-Pro % git config user.name
zhangshixin
Nach dem Login kopieren

git config speichert viele Konfigurationsinformationen, darunter häufig verwendete benutzerdefinierte Tastenkombinationen, Benutzerinformationen, Projektadresse, Filialinformationen, usw.:

504318deMacBook-Pro % git config -l

//快捷键 begin >>> 我们可以定义自己的 git 快捷键
alias.st=status          
alias.co=checkout
alias.cb=checkout
alias.p=pull
alias.pr=pull
alias.pu=push
alias.cm=commit
alias.br=branch
alias.cm=commit
alias.undo=reset
alias.rbc=rebase
alias.save=stash
alias.pop=stash
//快捷键 end <<< 我们可以定义自己的 git 快捷键

//用户名称和邮箱 begin >>>
user.name=zhangshixin
user.email=shixin.zhang@xxx.com
//用户名称和邮箱 end <<<

//项目和分支信息 begin >>>
remote.origin.url=git@gitlab.xxx:android/xxx.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
branch.Canary.remote=origin
branch.Canary.merge=refs/heads/Canary
//项目和分支信息 end <<<

pull.rebase=true    //默认 pull 是 merge 还是 rebase
Nach dem Login kopieren

如何获取当前分支

为了减少提示频率,最好只检测核心的分支的提交(包括 merge commit)。如何获取当前分支呢?有一个简单的方式:

git symbolic-ref --short HEAD
Nach dem Login kopieren

这句命令主要包括两个关键字:symbolic-refHEAD

symbolic-ref 可以读取、修改和删除符号引用。

什么是符号引用呢?它表示一个以 refs 开头的文件(比如 refs/heads/develop),这个文件保存着本地每个分支当前所处 commit。

我们可以打开 git 项目的 .git 文件夹,在其中的 refs/heads 文件夹中会保存各个分支当前所指向的 commit:

Teilen Sie einen wichtigen Git-Tipp zum Schutz des Kerncodes!

HEAD 指的是 .git/HEAD,就是一个文件,保存着当前指向的符号引用:

Teilen Sie einen wichtigen Git-Tipp zum Schutz des Kerncodes!

因此 git symbolic-ref --short HEAD 的含义就是读取 .git/HEAD 文件的内容,我这里就是 refs/heads/develop 文件,因此就得出当前分支是 develop 分支。

如何获取本地未 push 的所有 commit

有时候我们会在本地提交多次后再 push,因此在拦截 push 时,需要获取到当前要 push 的所有 commit 信息,然后获取每个 commit 修改的文件。

获取要 push 信息可以通过 git log @{u}.. --oneline:

504318deMacBook-Pro ShixinDemo % git log @{u}.. --oneline
4e4655b (HEAD -> master) 拦截跳转
f947180 修改文件
Nach dem Login kopieren

git log 非常强大,它可以有这些使用场景:

  1. 获取本地和远端的 commit 差异
  2. 获取指定时间内的提交记录,可以具体到谁、什么时候、修改了哪些
  3. 获取具体某次提交修改的文件

上面我们使用的参数 @{u}.. 就是表示获取本地和远端的 commit 差异,然后 --oneline 表示不打印具体信息,只打印 short commit id 和 commit message。

如果要获取指定时间内的提交记录,可以这样:

git log --pretty="%an(%cd) %h - %s" --since="2022-09-01" --no-merges --name-status
Nach dem Login kopieren

命令执行结果:

504318deMacBook-Pro ShixinDemo % git log --pretty="%an(%cd) %h - %s" --since="2022-09-01" --no-merges --name-status
zhangshixin(Fri Dec 16 22:34:49 2022 +0800) 4e4655b - 拦截跳转

M       app/src/main/java/com/example/heicdemo/MainActivity.kt
zhangshixin(Fri Dec 16 22:34:30 2022 +0800) f947180 - 修改文件

M       .idea/gradle.xml
M       .idea/misc.xml
D       .idea/runConfigurations.xml
A       android10_dem_heic_output.heic
A       app/src/main/assets/android10_dem_heic_output.heic
R100    app/src/main/res/drawable/mushroom.jpg  app/src/main/assets/mushroom.jpg
A       app/src/main/assets/mushroom.webp
M       app/src/main/java/com/example/heicdemo/MainActivity.kt
A       app/src/main/res/drawable/mushroom.webp
M       app/src/main/res/layout/activity_main.xml
Nach dem Login kopieren

pretty 的参数用于指定打印的内容和格式;since 参数用于指定查看时间范围;no-merges 表示过滤掉 merge 时生成的额外 commit;name-status 表示展示出文件的修改状态(M 表示修改;D 表示删除;A 表示增加;R 表示重命名)。

如何获取每个 commit 修改的文件

知道 commit ID 后,可以通过 git show --pretty="" --name-only $commitId 获取这个 commit 影响的信息:

04318deMacBook-Pro ShixinDemo % git show --pretty="" --name-only 4e4655b  
app/src/main/java/com/example/shixindemo/MainActivity.kt
Nach dem Login kopieren

git show 可以用来查看 commit 的 commit message 和修改的文件、文件具体内容等信息。上面的代码中我们使用了 name-only 参数表示只要查看修改的文件即可。

总结

这篇文章介绍了通过拦截 git push 时,获取当前用户、当前分支、未 push 的 commit 和修改的文件等命令,通过组合这些命令,就可以实现一个核心代码保护功能了!

Das obige ist der detaillierte Inhalt vonTeilen Sie einen wichtigen Git-Tipp zum Schutz des Kerncodes!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So aktualisieren Sie den Code in Git So aktualisieren Sie den Code in Git Apr 17, 2025 pm 04:45 PM

Schritte zur Aktualisierung von Git -Code: CODEHOUSSCHAFTEN:

So laden Sie GIT -Projekte auf lokale Herd herunter So laden Sie GIT -Projekte auf lokale Herd herunter Apr 17, 2025 pm 04:36 PM

Um Projekte lokal über Git herunterzuladen, befolgen Sie die folgenden Schritte: Installieren Sie Git. Navigieren Sie zum Projektverzeichnis. Klonen des Remote-Repositorys mit dem folgenden Befehl: Git Clone https://github.com/username/repository-name.git.git

Was tun, wenn der Git -Download nicht aktiv ist Was tun, wenn der Git -Download nicht aktiv ist Apr 17, 2025 pm 04:54 PM

Auflösung: Wenn die Git -Download -Geschwindigkeit langsam ist, können Sie die folgenden Schritte ausführen: Überprüfen Sie die Netzwerkverbindung und versuchen Sie, die Verbindungsmethode zu wechseln. Optimieren Sie die GIT-Konfiguration: Erhöhen Sie die Post-Puffer-Größe (GIT-Konfiguration --global http.postbuffer 524288000) und verringern Sie die Niedriggeschwindigkeitsbegrenzung (GIT-Konfiguration --global http.lowSpeedLimit 1000). Verwenden Sie einen GIT-Proxy (wie Git-Proxy oder Git-LFS-Proxy). Versuchen Sie, einen anderen Git -Client (z. B. Sourcetree oder Github Desktop) zu verwenden. Überprüfen Sie den Brandschutz

Wie man Git Commit benutzt Wie man Git Commit benutzt Apr 17, 2025 pm 03:57 PM

Git Commit ist ein Befehl, mit dem Dateien Änderungen an einem Git -Repository aufgezeichnet werden, um einen Momentaufnahme des aktuellen Status des Projekts zu speichern. So verwenden Sie dies wie folgt: Fügen Sie Änderungen in den temporären Speicherbereich hinzu, schreiben Sie eine prägnante und informative Einreichungsnachricht, um die Einreichungsnachricht zu speichern und zu beenden, um die Einreichung optional abzuschließen: Fügen Sie eine Signatur für die Einreichungs -Git -Protokoll zum Anzeigen des Einreichungsinhalts hinzu.

So löschen Sie ein Repository von Git So löschen Sie ein Repository von Git Apr 17, 2025 pm 04:03 PM

Befolgen Sie die folgenden Schritte, um ein Git -Repository zu löschen: Bestätigen Sie das Repository, das Sie löschen möchten. Lokale Löschen des Repositorys: Verwenden Sie den Befehl rm -RF, um seinen Ordner zu löschen. Löschen Sie ein Lager aus der Ferne: Navigieren Sie zu den Lagereinstellungen, suchen Sie die Option "Lager löschen" und bestätigen Sie den Betrieb.

Wie löste ich das effiziente Suchproblem in PHP -Projekten? Typense hilft Ihnen, es zu erreichen! Wie löste ich das effiziente Suchproblem in PHP -Projekten? Typense hilft Ihnen, es zu erreichen! Apr 17, 2025 pm 08:15 PM

Bei der Entwicklung einer E-Commerce-Website habe ich auf ein schwieriges Problem gestoßen: Wie kann ich effiziente Suchfunktionen in großen Mengen an Produktdaten erzielen? Herkömmliche Datenbanksuche sind ineffizient und haben eine schlechte Benutzererfahrung. Nach einigen Nachforschungen entdeckte ich den Suchmaschinen-Artensense und löste dieses Problem durch seine offizielle PHP-Client-Artense-/Artense-Php, die die Suchleistung erheblich verbesserte.

Wie man Code in Git zusammenfasst Wie man Code in Git zusammenfasst Apr 17, 2025 pm 04:39 PM

Git -Code -Merge -Prozess: Ziehen Sie die neuesten Änderungen an, um Konflikte zu vermeiden. Wechseln Sie in die Filiale, die Sie zusammenführen möchten. Initiieren Sie eine Zusammenführung und geben Sie den Zweig an, um zusammenzuarbeiten. Merge -Konflikte auflösen (falls vorhanden). Inszenierung und Bekämpfung verschmelzen, liefern die Botschaft.

So reichen Sie leere Ordner in Git ein So reichen Sie leere Ordner in Git ein Apr 17, 2025 pm 04:09 PM

Um einen leeren Ordner in Git einzureichen, befolgen Sie einfach die folgenden Schritte: 1. Erstellen Sie einen leeren Ordner; 2. Fügen Sie den Ordner zum Staging -Bereich hinzu; 3. Senden Sie Änderungen und geben Sie eine Commit -Nachricht ein. 4. (Optional) Drücken Sie die Änderungen in das Remote -Repository. HINWEIS: Der Name eines leeren Ordners kann nicht beginnen. Wenn der Ordner bereits vorhanden ist, müssen Sie Git Add -Force zum Hinzufügen verwenden.

See all articles