Heim  >  Artikel  >  Entwicklungswerkzeuge  >  Git implementiert das Rückgängigmachen der Zusammenführung und löscht die zusammengeführten lokalen Dateien

Git implementiert das Rückgängigmachen der Zusammenführung und löscht die zusammengeführten lokalen Dateien

coldplay.xixi
coldplay.xixinach vorne
2020-12-10 17:29:396172Durchsuche

Git-TutorialSpalte stellt vor, wie man Merge löscht

Git implementiert das Rückgängigmachen der Zusammenführung und löscht die zusammengeführten lokalen Dateien

Empfohlen: Git-Tutorial

1. Direkt zur Sache

Lösung
Methode 1: git reset --merge jedes Commit vorher Hash-String zusammenführengit reset --merge merge前的任何一次提交的hash串
注1

  • 如果工作区在merge之后没有任何改动,大胆的用此方法。
  • 如果工作区在merge之后有了改动,那么此方法会重置工作区的一切修改,慎用。但是会保留暂存区的改动。

注2:当MERGE_HEAD 在当前的提交上的时候 (就是当合并分支时遇到错误或者冲突,分支旁边会多出“|MERGING”这个东西)git merge --abort 与此方法一样
法二:

git reset merge前的任何一次提交的hash串
git clean -n #预删除
#将预删除不想删除的文件加入.gitignore
git add .gitignore
git clean -f

二、构造环境

约定:远程仓库 URL 使用 remote url  代替
1、模拟开发者一号

mkdir gitTest #新增文件夹gitTest
cd gitTest
git init
git remote add origin "remote url" 
echo "长太息以掩涕兮, 哀民生之多艰。" > lyrics.txt #新建 lyrics.txt 并在里面写入文字
git add lyrics.txt #将 lyrics.txt加入暂存区
git commit -m "lyrics.txt from user 1"
git push origin master
git checkout -b dev
git push origin dev:dev

2、模拟开发者二号

mkdir gitTest2
cd gitTest2
git clone "remote url" 
cd gitTest
echo "Don't make me suffer" > Suffer.txt
git add Suffer.txt
git commit -m "Suffer.txt from user2"
git push origin dev

3、模拟开发者一号

git checkout master
git merge origin/dev #合并远程dev分支
echo "余虽好修姱以鞿羁兮, 謇朝谇而夕替。" >> lyrics.txt  #修改文件 lyrics.txt 
echo "余虽好修姱以鞿羁兮, 謇朝谇而夕替。" > test.txt #新建test并写入内容
git add test.txt #将 test.txt 加入暂存区

三、撤销 merge

开发者一号面临的情况:本地master合并了远程dev的内容,本地多了一个Suffer.txt的文件。但是发现合错了分支,要撤销刚刚的合并操作。但是本地文件又有改动。

  • 查看当前本地文件 ls

    <img src="https://img.php.cn/upload/image/270/754/732/1607592020999359.png" title="1607592020999359.png" alt="Git implementiert das Rückgängigmachen der Zusammenführung und löscht die zusammengeführten lokalen Dateien">

  • 查看工作区和版本库的区别 git diff HEAD

Git implementiert das Rückgängigmachen der Zusammenführung und löscht die zusammengeführten lokalen Dateien

  • 查看提交历史 git log --oneline --graph

    Git implementiert das Rückgängigmachen der Zusammenführung und löscht die zusammengeführten lokalen Dateien


验证法一
  • 撤回 merge git reset --merge 7f811bf 或执行git reset --merge HEAD^
    HEAD^此例中是7f811bf,上面提交历史可看到7f811bf就是merge前提交的hash串

  • 查看本地文件 ls 并查看文件内容

    Git implementiert das Rückgängigmachen der Zusammenführung und löscht die zusammengeführten lokalen Dateien

  • 再次查看提交记录 git log --oneline --graph

    Git implementiert das Rückgängigmachen der Zusammenführung und löscht die zusammengeführten lokalen Dateien

  • 查看

    • 工作区和暂存区的区别 git diff
    • 工作区和版本库的区别 git diff HEAD
    • 暂存区和版本库的区别 git diff --cached

      Git implementiert das Rückgängigmachen der Zusammenführung und löscht die zusammengeführten lokalen Dateien

最终结果: 本地文件改动都被重置了(即开发者一号merge后增加的--余虽好修姱以鞿羁兮, 謇朝谇而夕替,被删除了),但暂存区还有内容。故工作区merge 后有改动慎用


验证法二
  • 撤回 merge git reset 7f811bf

  • 再次查看当前本地文件 ls

Git implementiert das Rückgängigmachen der Zusammenführung und löscht die zusammengeführten lokalen Dateien

  • 再次查看提交记录 git log --oneline --graph

    Git implementiert das Rückgängigmachen der Zusammenführung und löscht die zusammengeführten lokalen Dateien

阶段结果:很明显可以看到,merge已经回滚了,但是本地合并过来的文件依然还在。还要将多余合并的文件(Suffer.txt)删除。

  • 在删除之前可以先看看执行删除操作会删掉那些内容(预删除git clean -n
  • Hinweis 1
:

  • Wenn der Arbeitsbereich nach dem Zusammenführen nicht geändert wurde, verwenden Sie diese Methode unbedingt. Git implementiert das Rückgängigmachen der Zusammenführung und löscht die zusammengeführten lokalen Dateien
  • Wenn der Arbeitsbereich nach der Zusammenführung geändert wird, setzt diese Methode alle Änderungen am Arbeitsbereich zurück.
    Mit Vorsicht verwenden. Änderungen im Staging-Bereich bleiben jedoch erhalten. 🎜🎜🎜🎜Hinweis 2: 🎜Wenn sich MERGE_HEAD im aktuellen Commit befindet (d. h. wenn beim Zusammenführen von Zweigen ein Fehler oder Konflikt auftritt, wird neben dem Zweig ein zusätzliches „|MERGING“ angezeigt) git merge - -abort Das Gleiche wie diese Methode 🎜Methode 2: 🎜<pre class="brush:php;toolbar:false">echo test.txt &gt; .gitignore git add .gitignore git clean -n</pre>🎜 2. Konstruieren Sie die Umgebung 🎜🎜<em>Konvention: </em>Remote-Warehouse-URL Verwenden Sie stattdessen <code>remote url 🎜🎜1 . Simulieren Sie Entwickler Nr. 1🎜🎜rrreee🎜🎜3. Simulationsentwickler Nr : Der lokale Master wird zusammengeführt. Der Inhalt des Remote-Entwicklers verfügt lokal über eine zusätzliche Suffer.txt-Datei. Es wurde jedoch festgestellt, dass der falsche Zweig zusammengeführt wurde und der Zusammenführungsvorgang gerade abgebrochen werden musste. Es gibt jedoch Änderungen an den lokalen Dateien. 🎜
    • 🎜Anzeigen der aktuellen lokalen Datei ls🎜🎜<img src="https://img.php.cn/upload/image/270/754/732%20/%20160759209999359.png%20" title=" 1607592020999359.png " alt=" E72AE239E653BEF7482D64C93EF8AB3.png "> > Git Diff Head
    🎜🎜 🎜🎜🎜 F49AC50916C1B7D766A7878D480F6D6DA.P.P.P. --oneline --graph</code>🎜🎜<img src=🎜🎜🎜🎜
    Überprüfungsmethode eins
    • 🎜Mer ge zurückziehengit reset --merge 7f811bf oder ausführen git reset --merge HEAD^🎜HEAD^ In diesem Beispiel ist es 7f811bf. Aus dem obigen Übermittlungsverlauf können Sie ersehen, dass 7f811bf die vor der Zusammenführung übermittelte Hash-Zeichenfolge ist die lokale Datei ls und sehen Sie sich den Dateiinhalt an🎜

      Git implementiert das Rückgängigmachen der Zusammenführung und löscht die zusammengeführten lokalen Dateien🎜🎜🎜

    • 🎜 Sehen Sie sich den Commit-Datensatz erneut an git log --oneline --graph🎜🎜🎜Git implementiert das Rückgängigmachen der Zusammenführung und löscht die zusammengeführten lokalen Dateien🎜🎜🎜
    • 🎜Ansicht🎜
      • Der Unterschied zwischen dem Arbeitsbereich und dem Staging-Bereichgit diff🎜
      • Der Unterschied zwischen dem Arbeitsbereich und dem Repositorygit diff HEAD🎜
      • Der Unterschied zwischen dem Staging-Bereich und dem Repositorygit diff --cached🎜🎜Git implementiert das Rückgängigmachen der Zusammenführung und löscht die zusammengeführten lokalen Dateien🎜🎜🎜 🎜🎜🎜🎜Endlich Ergebnis : 🎜 Alle lokalen Dateiänderungen wurden zurückgesetzt (d. h. die von Entwickler Nr. 1 nach der Zusammenführung hinzugefügten) ------------- -------------------------------------------------- ------------------------------------- Ich mein, ich ich ich ich ich ich mein ich, ich ich ich ich ich ich ich ich ich mein ich ich selbst ich ich selbst ich mein ich habe hinzugefügt ich' mein ich füge hinzu aber mein temporärer Speicherbereich ist immer noch da. Es gibt Inhalte. Daher gibt es nach der Zusammenführung Änderungen im Arbeitsbereich. 🎜Sehen Sie sich die aktuelle lokale Datei erneut an ls🎜🎜🎜🎜🎜Git implementiert das Rückgängigmachen der Zusammenführung und löscht die zusammengeführten lokalen Dateien🎜🎜
        • 🎜Sehen Sie sich den Commit-Datensatz erneut an Git-Protokoll --oneline --graph🎜🎜🎜Git implementiert das Rückgängigmachen der Zusammenführung und löscht die zusammengeführten lokalen Dateien🎜🎜🎜🎜 🎜🎜Phasenergebnisse:🎜 Es ist offensichtlich, dass die Zusammenführung rückgängig gemacht wurde, aber die lokal zusammengeführten Dateien sind immer noch vorhanden. Löschen Sie auch die redundante zusammengeführte Datei (Suffer.txt). 🎜
          • Vor dem Löschen können Sie zunächst sehen, welche Inhalte gelöscht werden, indem Sie den Löschvorgang (🎜Vorlöschung🎜) git clean -n🎜🎜🎜🎜🎜🎜 ausführen
            • 注意:这里看到本地原来的文件 test.txt 也将被删除,这不是我所期望的。我只希望可以删除 meger 的文件。

            • 将 test.txt 文件加入 .gitignore 再执行预删除

            echo test.txt > .gitignore
            git add .gitignore
            git clean -n

            Git implementiert das Rückgängigmachen der Zusammenführung und löscht die zusammengeführten lokalen Dateien

            阶段结果:可以看到将会被删除的文件只剩下 merge 的多余文件了。

            • 执行 删除操作 git clean -f
            • 最终结果

Das obige ist der detaillierte Inhalt vonGit implementiert das Rückgängigmachen der Zusammenführung und löscht die zusammengeführten lokalen Dateien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:jianshu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen