Heim Entwicklungswerkzeuge Idiot So brechen Sie das Commit in Git ab

So brechen Sie das Commit in Git ab

Nov 29, 2021 pm 03:15 PM
git

So brechen Sie ein Commit in Git ab: 1. Verwenden Sie den Befehl „git rm“, um es rückgängig zu machen. 3. Verwenden Sie den Befehl „git rebase“, um es rückgängig zu machen Befehl „git revert“ zum Rückgängigmachen.

So brechen Sie das Commit in Git ab

Die Betriebsumgebung dieses Tutorials: Windows 7-System, Git-Version 2.30.0, Dell G3-Computer.

Manchmal übermitteln wir falschen Code und müssen einen bestimmten Commit-Datensatz rückgängig machen:

1. Dateien löschen

Wenn es sich bei dem Commit, das gelöscht werden muss, um eine oder mehrere Dateien handelt, können Sie dies tun Gehen Sie wie folgt vor.

1. Wenn eine an das Warehouse übermittelte Datei gelöscht werden muss, können Sie den Befehl git rm verwenden: git rm 命令:

git rm <file> // 从工作区和暂存区删除某个文件
git commit -m "" // 再次提交到仓库
Nach dem Login kopieren

2、如果只想从暂存区删除文件,本地工作区不做出改变,可以:

git rm --cached <file>
Nach dem Login kopieren

3、如果在工作区不小心删错了某个文件,可以用 git checkout 将暂存区的文件覆盖工作区的文件,从而把误删的文件恢复:

git checkout -- <file>
Nach dem Login kopieren

4、用 git rm 删除文件,同时还会将这个删除操作记录下来;

rm 删除文件,删除的仅仅是本地物理文件,没有将其从 git 的记录中剔除。

5、git addgit rm 有相似的功能,

git add 仅能记录添加、改动的动作,删除的动作需靠 git rm 来完成。

二、GitHub 撤销某次 commit

如果需要删除的不只是某个文件,而是交错的代码,那么有以下三种方法可以删除 commit 。

1、git reset

  • git reset :回滚到某次提交。
  • git reset --soft:此次提交之后的修改会被退回到暂存区。
  • git reset --hard:此次提交之后的修改不做任何保留,git status 查看工作区是没有记录的。

1)回滚代码

如果需要删除的 commit 是最新的,那么可以通过 git reset 命令将代码回滚到之前某次提交的状态,但一定要将现有的代码做好备份,否则回滚之后这些变动都会消失。具体操作如下:

git log // 查询要回滚的 commit_id
git reset --hard commit_id // HEAD 就会指向此次的提交记录
git push origin HEAD --force // 强制推送到远端
Nach dem Login kopieren

2)误删恢复

如果回滚代码之后发现复制错了 commit_id,或者误删了某次 commit 记录,也可以通过下方代码恢复:

git relog // 复制要恢复操作的前面的 hash 值
git reset --hard hash // 将 hash 换成要恢复的历史记录的 hash 值
Nach dem Login kopieren
  1. 注意:删除中间某次提交时最好不要用 git reset 回退远程库,因为之后其他人提交代码时用 git pull 也会把自己的本地仓库回退到之前的版本,容易出现差错进而增加不必要的工作量。

2、git rebase

  • git rebase:当两个分支不在一条线上,需要执行 merge 操作时使用该命令。

1)撤销提交

如果中间的某次 commit 需要删除,可以通过 git rebase 命令实现,方法如下:

git log // 查找要删除的前一次提交的 commit_id
git rebase -i commit_id // 将 commit_id 替换成复制的值
进入 Vim 编辑模式,将要删除的 commit 前面的 `pick` 改成 `drop`
保存并退出 Vim
Nach dem Login kopieren

这样就完成了。

2)解决冲突

该命令执行时极有可能出现 reabase 冲突,可以通过以下方法解决:

git diff // 查看冲突内容
// 手动解决冲突(冲突位置已在文件中标明)
git add <file> 或 git add -A // 添加
git rebase --continue // 继续 rebase
// 若还在 rebase 状态,则重复 2、3、4,直至 rebase 完成出现 applying 字样
git push
Nach dem Login kopieren

3、git revert

  • git revert:放弃某次提交。
    git revert 之前的提交仍会保留在 git log 中,而此次撤销会做为一次新的提交。
  • git revert -m:用于对 merge 节点的操作,-m 指定具体某个提交点。

1)撤销提交

要撤销中间某次提交时,使用 git revert 也是一个很好的选择:

git log // 查找需要撤销的 commit_id
git revert commit_id  // 撤销这次提交
Nach dem Login kopieren

2)撤销 merge 节点提交

如果这次提交是 merge 节点的话,则需要加上 -m

git revert commit_id -m 1 // 第一个提交点
// 手动解决冲突
git add -A
git commit -m ""
git revert commit_id -m 2 // 第二个提交点
// 重复 2,3,4
git push
Nach dem Login kopieren
2 Wenn Sie die Datei nur aus dem temporären Speicherbereich löschen möchten, Der lokale Arbeitsbereich wird nicht geändert, Sie können:

rrreee 3. Wenn Sie versehentlich eine Datei im Arbeitsbereich löschen, können Sie die Datei im temporären Speicherbereich mit git checkout überschreiben Datei im Arbeitsbereich, wodurch die versehentlich gelöschte Datei gelöscht wird: rrreee

4. Verwenden Sie git rm, um Dateien zu löschen. 🎜🎜Verwenden Sie rm, um Dateien zu löschen, und nur lokale physische Dateien werden gelöscht, ohne sie aus den Git-Datensätzen zu entfernen. 🎜🎜5. <code>git add und git rm haben ähnliche Funktionen, 🎜🎜aber git add kann nur Ergänzungen und Änderungen sowie Löschungen aufzeichnen durch git rm vervollständigt werden. 🎜🎜🎜🎜2. GitHub macht einen Commit rückgängig🎜🎜🎜🎜Wenn Sie nicht nur eine Datei, sondern auch verschachtelten Code löschen müssen, gibt es drei Möglichkeiten, den Commit zu löschen. 🎜🎜🎜1. git reset🎜🎜
  • git reset: Zurücksetzen auf einen bestimmten Commit.
  • git reset --soft: Änderungen nach dieser Übermittlung werden an den Staging-Bereich zurückgegeben.
  • git reset --hard: Nach dieser Übermittlung werden keine Änderungen beibehalten. git status Es gibt keinen Datensatz im Arbeitsbereich.
🎜1) Setzen Sie den Code zurück🎜🎜Wenn der Commit, der gelöscht werden muss, der neueste ist, können Sie den Befehl git reset verwenden, um den Code auf den zurückzusetzen Stellen Sie jedoch sicher, dass Sie den vorhandenen Code sichern, da diese Änderungen sonst nach dem Rollback verschwinden. Die spezifischen Vorgänge sind wie folgt: 🎜rrreee🎜2) Wiederherstellung nach versehentlichem Löschen🎜🎜Wenn Sie feststellen, dass Sie nach dem Zurücksetzen des Codes die falsche commit_id kopiert oder einen Commit-Datensatz versehentlich gelöscht haben, können Sie ihn auch mit dem folgenden Code wiederherstellen: 🎜rrreee
  1. Hinweis: Wenn Sie einen bestimmten Commit mittendrin löschen, ist es am besten, git reset nicht zu verwenden, um die Remote-Bibliothek zurückzusetzen, denn wenn andere übermitteln Später verwenden sie auch git pull, um die Remote-Bibliothek zurückzusetzen. Ein Zurücksetzen Ihres lokalen Warehouses auf die vorherige Version ist fehleranfällig und erhöht die unnötige Arbeitsbelastung.
🎜🎜2. git rebase🎜🎜
  • git rebase: Verwenden Sie diesen Befehl, wenn sich die beiden Zweige nicht in derselben Zeile befinden und ein ausgeführt werden muss Zusammenführungsvorgang.
🎜1) Machen Sie den Commit rückgängig🎜🎜Wenn ein bestimmter Commit in der Mitte gelöscht werden muss, können Sie den Befehl git rebase verwenden. Die Methode ist wie folgt: 🎜 rrreee🎜Das ist es. 🎜🎜2) Konflikte lösen🎜🎜Es ist sehr wahrscheinlich, dass bei der Ausführung dieses Befehls ein Rebase-Konflikt auftritt, der mit den folgenden Methoden gelöst werden kann: 🎜rrreee🎜🎜3, git revert🎜🎜
  • git revert
: Eine bestimmte Übermittlung abbrechen. 🎜git revert Die vorherige Übermittlung bleibt weiterhin im Git-Protokoll und dieser Widerruf wird als neue Übermittlung behandelt.
  • git revert -m: Wird zum Betreiben von Zusammenführungsknoten verwendet. -m gibt einen bestimmten Festschreibungspunkt an.
  • 🎜1) Einen Commit rückgängig machen🎜🎜Wenn Sie einen Zwischen-Commit rückgängig machen möchten, ist die Verwendung von git revert ebenfalls eine gute Wahl: 🎜rrreee🎜2) Machen Sie einen Zusammenführungsknoten rückgängig commit🎜 🎜Wenn es sich bei dieser Übermittlung um einen Merge-Knoten handelt, müssen Sie den Befehl -m hinzufügen: 🎜rrreee🎜Empfohlenes Lernen: „🎜Git Tutorial🎜“🎜

    Das obige ist der detaillierte Inhalt vonSo brechen Sie das Commit in Git ab. 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

    AI Hentai Generator

    AI Hentai Generator

    Erstellen Sie kostenlos Ai Hentai.

    Heißer Artikel

    R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
    3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Beste grafische Einstellungen
    3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
    3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25: Wie man alles in Myrise freischaltet
    3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

    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)

    Welche Bibliotheken werden für die Operationen der schwimmenden Punktzahl in Go verwendet? Welche Bibliotheken werden für die Operationen der schwimmenden Punktzahl in Go verwendet? Apr 02, 2025 pm 02:06 PM

    In der Bibliothek, die für den Betrieb der Schwimmpunktnummer in der GO-Sprache verwendet wird, wird die Genauigkeit sichergestellt, wie die Genauigkeit ...

    Das Geheimnis hinter O1/Deepseek-R1 kann auch in multimodalen großen Modellen verwendet werden Das Geheimnis hinter O1/Deepseek-R1 kann auch in multimodalen großen Modellen verwendet werden Mar 12, 2025 pm 01:03 PM

    Forscher der Shanghai Jiaotong University, Shanghai Ailab und der chinesischen Universität von Hongkong haben das Open-Source-Projekt zur Visual-RFT (visuelle Verbesserung der Feinabstimmung) gestartet, für das nur eine geringe Datenmenge erforderlich ist, um die Leistung des visuellen Sprachen-Big-Modells (LVLM) signifikant zu verbessern. Visual-RFT kombiniert geschickt die regelbasierte Verstärkungslernansatz von Deepseek-R1 mit dem RFT-Paradigma (Verstärkung der Verstärkung der Verstärkung) und erweitert diesen Ansatz erfolgreich vom Textfeld auf das Gesichtsfeld. Durch die Gestaltung der entsprechenden Regelprämien für Aufgaben wie die visuelle Unterkategorisierung und Objekterkennung überwindet die visuelle RFT die Einschränkungen der Deepseek-R1-Methode, die auf Text, mathematisches Denken und andere Bereiche beschränkt ist und eine neue Möglichkeit für das LVLM-Training bietet. Vis

    Gitee Pages statische Website -Bereitstellung fehlgeschlagen: Wie können Sie einzelne Dateien 404 Fehler beheben und beheben? Gitee Pages statische Website -Bereitstellung fehlgeschlagen: Wie können Sie einzelne Dateien 404 Fehler beheben und beheben? Apr 04, 2025 pm 11:54 PM

    GitePages statische Website -Bereitstellung fehlgeschlagen: 404 Fehlerbehebung und Auflösung bei der Verwendung von Gitee ...

    Welche Bibliotheken in GO werden von großen Unternehmen entwickelt oder von bekannten Open-Source-Projekten bereitgestellt? Welche Bibliotheken in GO werden von großen Unternehmen entwickelt oder von bekannten Open-Source-Projekten bereitgestellt? Apr 02, 2025 pm 04:12 PM

    Welche Bibliotheken in GO werden von großen Unternehmen oder bekannten Open-Source-Projekten entwickelt? Bei der Programmierung in Go begegnen Entwickler häufig auf einige häufige Bedürfnisse, ...

    Wie erhalten Sie die Daten der Versandregion der Überseeversion? Was stehen einige vorgefertigte Ressourcen zur Verfügung? Wie erhalten Sie die Daten der Versandregion der Überseeversion? Was stehen einige vorgefertigte Ressourcen zur Verfügung? Apr 01, 2025 am 08:15 AM

    Frage Beschreibung: Wie erhalten Sie die Daten der Versandregion der Überseeversion? Gibt es bereitgestellte Ressourcen? Werden Sie im grenzüberschreitenden E-Commerce oder im globalisierten Geschäft genau ...

    So führen Sie das H5 -Projekt aus So führen Sie das H5 -Projekt aus Apr 06, 2025 pm 12:21 PM

    Ausführen des H5 -Projekts erfordert die folgenden Schritte: Installation der erforderlichen Tools wie Webserver, Node.js, Entwicklungstools usw. Erstellen Sie eine Entwicklungsumgebung, erstellen Sie Projektordner, initialisieren Sie Projekte und schreiben Sie Code. Starten Sie den Entwicklungsserver und führen Sie den Befehl mit der Befehlszeile aus. Vorschau des Projekts in Ihrem Browser und geben Sie die Entwicklungsserver -URL ein. Veröffentlichen Sie Projekte, optimieren Sie Code, stellen Sie Projekte bereit und richten Sie die Webserverkonfiguration ein.

    Wie löste ich das Problem des Typs des user_id -Typs bei der Verwendung von Redis -Stream, um Nachrichtenwarteschlangen in GO -Sprache zu implementieren? Wie löste ich das Problem des Typs des user_id -Typs bei der Verwendung von Redis -Stream, um Nachrichtenwarteschlangen in GO -Sprache zu implementieren? Apr 02, 2025 pm 04:54 PM

    Das Problem der Verwendung von RETISTREAM zur Implementierung von Nachrichtenwarteschlangen in der GO -Sprache besteht darin, die Go -Sprache und Redis zu verwenden ...

    Python Hourglass Graph Drawing: Wie vermeiden Sie variable undefinierte Fehler? Python Hourglass Graph Drawing: Wie vermeiden Sie variable undefinierte Fehler? Apr 01, 2025 pm 06:27 PM

    Erste Schritte mit Python: Hourglas -Grafikzeichnung und Eingabeüberprüfung In diesem Artikel wird das Problem der Variablendefinition gelöst, das von einem Python -Anfänger im Hourglass -Grafikzeichnungsprogramm auftritt. Code...

    See all articles