Fassen Sie den Studienleitfaden zur Git-Versionskontrolle zusammen und organisieren Sie ihn

WBOY
Freigeben: 2022-03-03 19:57:33
nach vorne
1770 Leute haben es durchsucht

Dieser Artikel vermittelt Ihnen relevantes Wissen über Git, das hauptsächlich die Wissenspunkte zur Versionskontrolle zusammenfasst. Ich hoffe, dass es für alle hilfreich ist.

Fassen Sie den Studienleitfaden zur Git-Versionskontrolle zusammen und organisieren Sie ihn

Empfohlene Studie: „Git Learning Tutorial

Der Ursprung der Versionskontrolle

  • Heutzutage werden Softwareprojekte normalerweise von einem Forschungs- und Entwicklungsteam analysiert, entworfen, codiert, gewartet und getestet.
  • Für Teams Die Entwicklung muss die folgenden Probleme lösen:
    • Sichern mehrerer Versionen, was platz- und zeitaufwändig ist.
    • Es ist schwierig, die vorherige korrekte Version wiederherzustellen.
    • Es ist schwierig, Codekonflikte zu lösen.
    • Es ist schwierig um den Modifikator und die Änderungszeit des problematischen Codes zu verfolgen.
    • Berechtigungen können nicht ausgeführt werden. Es ist schwierig, die
    • Veröffentlichung der Projektversion zu kontrollieren. Das Quellcode-Verwaltungstool wurde ins Leben gerufen, um die oben genannten Probleme zu lösen
    ist eine Standardpraxis für die Pflege von Konstruktionsplänen, mit der der Konstruktionsentwurf von seiner Entstehung bis zum Abschlussprozess verfolgt werden kann. Dabei handelt es sich um ein System, das Änderungen im Inhalt mehrerer Dateien aufzeichnet, sodass Sie in Zukunft den Revisionsstand einer bestimmten Version überprüfen können. Handelt es sich um eine Teamentwicklung, ist der Einsatz der Versionskontrolle zwingend erforderlich!
  • Wenn Sie eine einzelne Person sind, die entwickelt, wird dringend empfohlen, jetzt mit der Versionskontrolle zu beginnen.

  • Die Verwendung der Versionskontrolle kann:
    • Es wird keinen Schaden an bestehender Arbeit anrichten
    • Es wird nicht zunehmen die Arbeitslast
    Hinzufügen Wenn neue Funktionen erweitert werden, wird es einfacher
    • Gemeinsame Tools zur Versionskontrolle
    • CVS öffnet die Tür zur Versionskontrolle
    • CVS wurde 1990 geboren, das gängige Quellcode-Verwaltungstool in Antike Zeiten

SVN Der König der zentralisierten Versionskontrolle

SVN: Auch als Subversion bekannt, ist es der Nachfolger von CVS und ein zentralisiertes Quellcode-Verwaltungstool. Früher war es das Code-Management-Tool (Google-Code) für die meisten Open-Source-Software. In den letzten Jahren wurde es am häufigsten von inländischen Softwareunternehmen verwendet. GIT, ein großartiges Werk der verteilten Versionskontrolle. GIT: a verteilt Quellcode-Verwaltungstools Derzeit haben fast alle inländischen Unternehmen die Umstellung von SVN auf GIT abgeschlossen. <ul> <li>Der größte Unterschied zwischen verteilt und zentralisiert ist: <ul> <li>Entwickler können dies nur tun Senden Sie Code an den Server. Im verteilten Modus können Entwickler lokal senden. zentralisiert)</ul> </li> <li><ul><li> <code>集中式源代码管理工具。曾经是绝大多数开源软件的代码管理工具(google code),前几年在国内软件企业使用最为普遍
  • GIT 分布式版本控制之伟大作品
    • GIT:一款分布式GIT (verteilt)
  • Ein einfacher Vergleich zwischen Git und Svn

    • speed
      • In vielen Fällen ist Git weitaus schneller als svn
    • struktur. Es ist umständlich, Zweige zu verwenden. Git kann problemlos unbegrenzte Zweige haben. SVN muss mit dem Internet verbunden sein, um ordnungsgemäß zu funktionieren. Git unterstützt die lokale Versionskontrolle. Die alte Version von SVN platziert in jedem Verzeichnis eine .svn-Datei, Git nur dort Seien Sie eine .git-Datei im Stammverzeichnis Projekt, ob klein oder groß,
      • Unter allen verteilten Versionskontrolltools der Welt ist Git das schnellste, einfachste und beliebteste
      Es ist das zweite große Werk von Linus, dem Vater von Linux
    • Im Jahr 2005 wurde die BitKeeper-Software veröffentlicht Das Unternehmen hat der Linux-Community die kostenlosen Nutzungsrechte entzogen.
      • Um die Entwicklung des Linux-Kernels zu unterstützen (Quellcode verwalten), musste Linus selbst ein verteiltes Versionskontrolltool entwickeln, und Git wurde geboren
      Wie GIT funktioniert

    Wenn Sie lernen möchten Nun, GIT, Sie müssen zuerst das Funktionsprinzip von GIT verstehen ) :.git-Verzeichnis, das zum Speichern aufgezeichneter Versionsinformationen verwendet wird

    Staga im Repository:
    • Zweig (Master) im Repository: strong> Die erster von git automatisch erstellter Zweig分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目
    • 在世界上所有的分布式版本控制工具中,git是最快、最简单、最流行的
    • 是Linux之父李纳斯的第二个伟大作品
      • 2005年由于BitKeeper软件公司对Linux社区停止了免费使用权。
      • Linus为了辅助Linux内核的开发(管理源代码),迫不得己自己开发了一个分布式版本控制工具,从而Git诞生了

    GIT工作原理

    • 如果想学好GIT必须先了解GIT的工作原理
    • 工作区(Working Directory): 仓库文件夹里面, 除了.git目录以外的内容
    • 版本库(Repository):.git目录, 用于存储记录版本信息
      • 版本库中的暂缓区(staga):
      • 版本库中的分支(master): git自动创建的第一个分支
      • 版本库中的**HEAD指针:**用于指向当前分支

    • git add和git commit命名作用
      • git add: 把文件修改添加到暂缓区
      • git commit: 把暂缓区的所有内容提交到当前HEAD指针指向的分支

    GIT使用环境

    • 多人开发时需要一个共享版本库, 单人开发初始化一个本地库即可
    • 共享版本库的形式:
      • 本地共享库: 文件夹/U盘/硬盘
      • 远程共享库: 自己搭建git服务器/托管到第三方平台(github/oschina等)
    • 无论是单人开发还是多人开发, 客户端都可以使用命令行或者图形化界面使用git

    GIT命令-个人开发

    • git help :git指令帮助手册

      • 查看其他指令的做法:git help 其他指令
    • git init : 仓库初始化(个人仓库)

      • 仓库文件目录
      HEAD:	指向当前分支的一个提交
      description:	项目的描述信息
      config:	项目的配置信息
      info/:	里面有一个exclude文件,指定本项目要忽略的文件
      objects/:	Git对象库(commit/tree/blob/tag)
      refs/:	标识每个分支指向哪个提交
      hooks/:	默认的hook脚本
      Nach dem Login kopieren
    • GIT设置配置信息

      • 配置用户名:git config user.name "用户名"(用于跟踪修改记录)
      • 配置邮箱:git config user.email "邮箱"(用于多人开发间的沟通)
      • git config -l : 查看配置信息
      • git config -e : 编辑配置信息
    • git status :查文件的状态

      • 查看某个文件的状态:git status 文件名
      • 查看当前路径所有文件的状态:git status
    • git add :将工作区的文件保存到暂缓区

      • 保存某个文件到暂缓区:git add 文件名
      • 保存当前路径的所有文件到暂缓区:git add .(注意,最后是一个点 . )
    • git commit:将暂缓区的文件提交到当前分支

      • 提交某个文件到分支:git commit -m ”注释” 文件名
      • 保存当前路径的所有文件到分支:git commit -m ”注释”
    • git log :查看文件的修改日志

      • 查看某个文件的修改日志:git log 文件名
      • 查看当前路径所有文件的修改日志:git log
      • 用一行的方式查看简单的日志信息:git log ––pretty=oneline
      • 查看最近的N次修改:git log –N(N是一个整数)
    • git diff :查看文件最新改动的地方

      • 查看某个文件的最新改动的地方:git diff 文件名
      • 查看当前路径所有文件最新改动的地方:git diff
    • git reflog :查看分支引用记录(能够查看所有的版本号)

    • git rm:删除文件(删完之后要进行commit操作,才能同步到版本库)

    • git reset

      Der **HEAD-Zeiger im Repository:** wird verwendet, um auf den aktuellen Zweig zu zeigen🎜🎜🎜🎜🎜🎜🎜git add und git commit benennungsfunktion🎜🎜git add: Datei ändern Hinzufügen halten 🎜🎜🎜🎜git commit: Alles auf Eis legen Der Inhalt des Bereichs wird an den Zweig übermittelt, auf den der aktuelle HEAD-Zeiger zeigt =""/ >🎜🎜🎜🎜🎜🎜GIT-Nutzungsumgebung🎜🎜🎜 Eine gemeinsame Versionsbibliothek ist für die Mehrpersonenentwicklung erforderlich. Für die Einzelpersonenentwicklung ist eine lokale Bibliothek erforderlich. Code> kann initialisiert werden🎜🎜gemeinsame Version Bibliotheksform: 🎜🎜Lokale gemeinsam genutzte Bibliothek: Ordner/U-Disk/Festplatte 🎜🎜Remote-gemeinsam genutzte Bibliothek: Erstellen Sie Ihren eigenen Git-Server/hosten Sie ihn auf einer Plattform eines Drittanbieters (Github/Oschina, usw.)🎜🎜🎜🎜Ob es sich um eine Einzelentwicklung oder eine Mehrfachentwicklung handelt. Für die menschliche Entwicklung kann der Kunde die Befehlszeile oder die grafische Oberfläche verwenden, um git🎜🎜🎜🎜GIT-Befehl - persönliche Entwicklung🎜🎜🎜<p><code zu verwenden>git help: Git-Befehlshilfehandbuch🎜🎜🎜Andere anzeigen So verwenden Sie den Befehl: git help Andere Befehle🎜🎜🎜🎜

      git init: Warehouse-Initialisierung (persönliches Warehouse) 🎜🎜🎜Warehouse-Dateiverzeichnis🎜🎜

      #               表示此为注释,将被Git忽略*.a             表示忽略所有 .a 结尾的文件!lib.a          表示但lib.a除外/TODO           表示仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
      build/          表示忽略 build/目录下的所有文件,过滤整个build文件夹;
      doc/*.txt       表示会忽略doc/notes.txt但不包括 doc/server/arch.txt
       
      bin/:           表示忽略当前路径下的bin文件夹,该文件夹下的所有内容都会被忽略,不忽略 bin 文件
      /bin:           表示忽略根目录下的bin文件
      /*.c:           表示忽略cat.c,不忽略 build/cat.c
      debug/*.obj:    表示忽略debug/io.obj,不忽略 debug/common/io.obj和tools/debug/io.obj
      **/foo:         表示忽略/foo,a/foo,a/b/foo等
      a/**/b:         表示忽略a/b, a/x/b,a/x/y/b等!/bin/run.sh    表示不忽略bin目录下的run.sh文件*.log:          表示忽略所有 .log 文件
      config.php:     表示忽略当前路径的 config.php 文件 
      /mtk/           表示过滤整个文件夹*.zip           表示过滤所有.zip文件/mtk/do.c       表示过滤某个具体文件
       
      被过滤掉的文件就不会出现在git仓库中(gitlab或github)了,当然本地库中还有,只是push的时候不会上传。
       
      需要注意的是,gitignore还可以指定要将哪些文件添加到版本管理中,如下:!*.zip!/mtk/one.txt
       
      唯一的区别就是规则开头多了一个感叹号,Git会将满足这类规则的文件添加到版本管理中。为什么要有两种规则呢?
      想象一个场景:假如我们只需要管理/mtk/目录中的one.txt文件,这个目录中的其他文件都不需要管理,那么.gitignore规则应写为::/mtk/*
      !/mtk/one.txt
       
      假设我们只有过滤规则,而没有添加规则,那么我们就需要把/mtk/目录下除了one.txt以外的所有文件都写出来!
      注意上面的/mtk/*不能写为/mtk/,否则父目录被前面的规则排除掉了,one.txt文件虽然加了!过滤规则,也不会生效!
       
      ----------------------------------------------------------------------------------
      还有一些规则如下:
      fd1/*
      说明:忽略目录 fd1 下的全部内容;注意,不管是根目录下的 /fd1/ 目录,还是某个子目录 /child/fd1/ 目录,都会被忽略;
       
      /fd1/*
      说明:忽略根目录下的 /fd1/ 目录的全部内容;
       
      /*
      !.gitignore
      !/fw/ 
      /fw/*
      !/fw/bin/
      !/fw/sf/
      说明:忽略全部内容,但是不忽略 .gitignore 文件、根目录下的 /fw/bin/ 和 /fw/sf/ 目录;注意要先对bin/的父目录使用!规则,使其不被排除。
      Nach dem Login kopieren
      Nach dem Login kopieren
      🎜🎜

      GIT-Einstellungen-Konfigurationsinformationen🎜 🎜🎜Benutzernamen konfigurieren: git config user.name "username" (wird zum Verfolgen von Änderungsdatensätzen verwendet) 🎜🎜E-Mail konfigurieren : git config user.email "mailbox" (Wird für die Kommunikation zwischen mehreren Entwicklern verwendet)🎜🎜git config -l: Konfigurationsinformationen anzeigen🎜🎜git config -e : Konfigurationsinformationen bearbeiten🎜🎜🎜🎜

      git status: Überprüfen Sie den Status einer Datei🎜🎜🎜Überprüfen Sie den Status einer Datei: git status file name code>🎜🎜Überprüfen Sie den Status aller Dateien im aktuellen Pfad: <code>git status 🎜🎜🎜🎜

      git add: Dateien im Arbeitsbereich im Pufferbereich speichern 🎜🎜🎜Speichern Sie eine Datei im Pufferbereich: git add file name code>🎜🎜Speichern Sie alle Dateien im aktuellen Pfad im temporären Bereich: git add . (Hinweis dass am Ende ein Punkt steht.) 🎜🎜🎜🎜

      git commit: Dateien im Pufferbereich an den aktuellen Zweig senden🎜🎜🎜Eine Datei an den Zweig senden: git commit -m "comment" Dateiname🎜🎜Alle Dateien im aktuellen Pfad zum Zweig speichern: git commit -m "comment"🎜🎜🎜🎜

      git log: Änderungsprotokoll der Datei anzeigen🎜🎜🎜Änderungsprotokoll einer bestimmten Datei anzeigen: git log file name 🎜🎜Änderungsprotokolle aller Dateien in der aktuellen Datei anzeigen Pfad: git log🎜🎜Einfache Protokollinformationen in einer Zeile anzeigen: git log ––pretty=oneline 🎜🎜Die neuesten N Änderungen anzeigen: git log –N (N ist eine ganze Zahl) 🎜🎜🎜🎜

      git diff: Die neuesten Änderungen an der Datei anzeigen🎜 🎜🎜Ort zum Anzeigen der neuesten Änderungen an einer Datei: git diff-Dateiname🎜🎜Ort zum Anzeigen der neuesten Änderungen an allen Dateien im aktuellen Pfad: git diff🎜🎜🎜🎜

      git reflog: Zweigreferenzdatensätze anzeigen (kann alle Versionsnummern anzeigen) 🎜🎜🎜

      git rm: Dateien löschen (Commit-Vorgang ist nach dem Löschen erforderlich), kann mit dem Repository synchronisiert werden) 🎜🎜🎜

      git reset: Versions-Rollback (es wird empfohlen, den Parameter --hard hinzuzufügen, Git unterstützt unbegrenztes Bedauern) 🎜

      • 回退到上一个版本:git reset ––hard HEAD^
      • 回退到上上一个版本:git reset ––hard HEAD^^
      • 回退到上N个版本:git reset ––hard HEAD~N(N是一个整数)
      • 回退到任意一个版本:git reset ––hard 版本号(版本号用7位即可)

    • Git忽略提交规则 - .gitignore配置

      • 别看了, 你想要的都在这企业开发专用链接
    #               表示此为注释,将被Git忽略*.a             表示忽略所有 .a 结尾的文件!lib.a          表示但lib.a除外/TODO           表示仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
    build/          表示忽略 build/目录下的所有文件,过滤整个build文件夹;
    doc/*.txt       表示会忽略doc/notes.txt但不包括 doc/server/arch.txt
     
    bin/:           表示忽略当前路径下的bin文件夹,该文件夹下的所有内容都会被忽略,不忽略 bin 文件
    /bin:           表示忽略根目录下的bin文件
    /*.c:           表示忽略cat.c,不忽略 build/cat.c
    debug/*.obj:    表示忽略debug/io.obj,不忽略 debug/common/io.obj和tools/debug/io.obj
    **/foo:         表示忽略/foo,a/foo,a/b/foo等
    a/**/b:         表示忽略a/b, a/x/b,a/x/y/b等!/bin/run.sh    表示不忽略bin目录下的run.sh文件*.log:          表示忽略所有 .log 文件
    config.php:     表示忽略当前路径的 config.php 文件 
    /mtk/           表示过滤整个文件夹*.zip           表示过滤所有.zip文件/mtk/do.c       表示过滤某个具体文件
     
    被过滤掉的文件就不会出现在git仓库中(gitlab或github)了,当然本地库中还有,只是push的时候不会上传。
     
    需要注意的是,gitignore还可以指定要将哪些文件添加到版本管理中,如下:!*.zip!/mtk/one.txt
     
    唯一的区别就是规则开头多了一个感叹号,Git会将满足这类规则的文件添加到版本管理中。为什么要有两种规则呢?
    想象一个场景:假如我们只需要管理/mtk/目录中的one.txt文件,这个目录中的其他文件都不需要管理,那么.gitignore规则应写为::/mtk/*
    !/mtk/one.txt
     
    假设我们只有过滤规则,而没有添加规则,那么我们就需要把/mtk/目录下除了one.txt以外的所有文件都写出来!
    注意上面的/mtk/*不能写为/mtk/,否则父目录被前面的规则排除掉了,one.txt文件虽然加了!过滤规则,也不会生效!
     
    ----------------------------------------------------------------------------------
    还有一些规则如下:
    fd1/*
    说明:忽略目录 fd1 下的全部内容;注意,不管是根目录下的 /fd1/ 目录,还是某个子目录 /child/fd1/ 目录,都会被忽略;
     
    /fd1/*
    说明:忽略根目录下的 /fd1/ 目录的全部内容;
     
    /*
    !.gitignore
    !/fw/ 
    /fw/*
    !/fw/bin/
    !/fw/sf/
    说明:忽略全部内容,但是不忽略 .gitignore 文件、根目录下的 /fw/bin/ 和 /fw/sf/ 目录;注意要先对bin/的父目录使用!规则,使其不被排除。
    Nach dem Login kopieren
    Nach dem Login kopieren

    GIT命令-团队开发

    • git init --bare : 仓库初始化(共享仓库)
      • 注意: 不要直接在共享仓库中编写代码
    • git clone:下载远程仓库到本地
      • 下载远程仓库到当前路径:git clone 仓库的URL
      • 下载远程仓库到特定路径:git clone 仓库的URL 存放仓库的路径
    • git pull:下载远程仓库的最新信息到本地仓库
    • git push:将本地的仓库信息推送到远程仓库
      • 提交时如果远程仓库有其它人提交的最新代码, 必须先pull, 再提交
    • 冲突解决:
      • 当多个人同时修改了同一个文件时, 后提交的需要先从服务器pull代码到问题, 手动解决完冲突之后再push到远程服务器
    <<<<<<< HEAD
    	你本地的新增的代码=======
    	服务器上和你冲突的代码>>>>>>> e9609de28b65bf97539f94c6458cdebdf2711c9f
    Nach dem Login kopieren

    GIT经典协同模型

    • 中心仓库:包含master和develop两个分支

    • 分支分类

      • 主要分支:master和develop分支
      • 支持性分支:特性分支,发布分支,热补丁分支
    • 对于商业级项目,真正开发过程中都是基于develop分支进行的,develop分支是开发主线!

    • master分支中,只存放相对稳定的分支,例如:0.1版本, 0.2版本

    • 在实际产品开发中,需要“规划版本”,例如:将100个功能规划到5个不同的版本上

    • 发现bug,要基于“上一个最稳定的版本”进行修复,这是热补丁分支存在的意义!

    • 理解清楚版本管理分支的特性,是迭代式开发的重要基础!

    • git branch : 查看所有分支

    • git branch 分支名称 : 创建分支

    • 新创建的分支中的内容和master分支中的内容一样
    • git checkout 分支名称 : 切换到指定分支
    • git merge 分支名称 : 合并分支
      • 将当前所在分支和指定名称分支进行合并
    • git branch -d 分支名称 : 删除指定分支
    • 不能在当前分支中删除自己

    使用GIT我们应该

    • 经常更新:降低冲突的可能性
    • 提交前需在本机测试通过:降低将问题代码传到版本库
    • 提交时一定写备注:方便其他员工查看和自己以后回顾
    • 对于不需要提交的文件不要提交到版本库

    提示:

    • Aktualisieren Sie vor jeder Einreichung
    • Senden Sie jeden Tag den kompilierten Code des Tages vor der Arbeit
    • Das erste, was Sie bei der Arbeit jeden Tag tun müssen, ist, den Code des Vortages zu aktualisieren

    GITHUB USING

    • 1 Registrieren ein GitHub-Konto
      • 2. Melden Sie sich bei GitHub an. 3. Klicken Sie auf Ihr Repository. 4. Erstellen Sie ein neues Repository
      • 5 .Das neu erstellte Warehouse kann heruntergeladen werden, für die Übermittlung sind jedoch ein Konto und ein Passwort erforderlich. C „your_email@example.com“
  • 6.2 Kopieren Sie den gerade generierten öffentlichen Schlüssel
    • 6.3 Fügen Sie den generierten SSH-Schlüssel zu GitHub hinzu
    6.4 Testen Sie, ob die Konfiguration erfolgreich ist ssh -T git@github.com
  • Wenn es später erscheint: Hallo *** *! Sie haben sich erfolgreich authentifiziert, aber GitHub bietet nachweislich keinen Shell-Zugriff
    • 7. Verwenden Sie den SSH-Schlüssel, um GitHub zu betreiben Lernen: „
    • Git Tutorial
    • ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    • 6.2复制刚才生成的公钥
    • 6.3将生成好的SSH Key 添加到GitHub
    • 6.4测试是否配置成功 ssh -T git@github.com
  • Das obige ist der detaillierte Inhalt vonFassen Sie den Studienleitfaden zur Git-Versionskontrolle zusammen und organisieren Sie ihn. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Verwandte Etiketten:
    git
    Quelle:csdn.net
    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
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!