13가지 실용적인 Git 팁
Git의 13번째 생일을 기념하여 Git 경험을 더욱 유용하고 강력하게 만드는 13가지 팁과 요령을 소개합니다. 간과했을 수 있는 몇 가지 기본 사항부터 시작하여 실제 고급 사용자 팁으로 확장하세요!
처음 git 명령을 사용하여 저장소에 변경 사항을 커밋하려고 하면 다음과 같은 환영 메시지를 받을 수 있습니다.
으아아아Git이 전역 구성 옵션을 저장하는 ~/.gitconfig의 내용을 수정하는 것이 바로 이러한 명령이라는 사실을 깨닫지 못할 수도 있습니다. 별칭 정의, 특정 명령 옵션을 영구적으로 켜거나 끄기, Git 작동 방식 수정(예: git diff가 사용하는 diff 알고리즘 또는 유형)을 포함하여 ~/.gitconfig 파일을 사용하여 많은 작업을 수행할 수 있습니다. diff는 기본 병합 전략에 사용됩니다). 저장소 경로에 따라 조건부로 다른 구성 파일을 포함할 수도 있습니다! 자세한 내용은 man git-config를 참조하세요.
이전 팁에서 git config 명령의 --global 플래그가 무엇을 하는지 궁금하셨을 것입니다. 이는 Git에게 ~/.gitconfig의 "전역" 구성을 업데이트하도록 지시합니다. 물론, 전역 구성이 있다는 것은 로컬 구성이 있다는 의미이기도 합니다. --global 플래그를 생략하면 git config는 대신 .git/config에 저장된 저장소별 구성을 업데이트합니다.
.git/config 파일에 설정된 옵션은 ~/.gitconfig 파일의 모든 설정보다 우선 적용됩니다. 예를 들어 특정 저장소에 다른 이메일 주소를 사용해야 하는 경우 git config user.email " also_you@example.com"을 실행할 수 있습니다. 그러면 해당 저장소의 모든 커밋은 개별적으로 구성된 이메일 주소를 사용하게 됩니다. 이는 오픈 소스 프로젝트에서 작업하고 업무 이메일을 기본 Git 구성으로 사용하면서 자신의 이메일 주소를 표시하려는 경우에 유용합니다.
~/.gitconfig에서 설정할 수 있는 거의 모든 항목은 .git/config에서 설정하여 특정 저장소에서 작동하도록 할 수도 있습니다. 아래 팁에서 ~/.gitconfig 에 무언가를 추가한다고 언급할 때 특정 저장소에 대해 .git/config 를 추가하여 해당 옵션을 설정할 수도 있다는 점을 기억하세요.
앨리어싱은 ~/.gitconfig에서 수행할 수 있는 또 다른 작업입니다. 이는 명령줄의 셸처럼 작동합니다. 일반적으로 특정 옵션이나 플래그 집합을 사용하여 하나 이상의 다른 명령을 호출할 수 있는 새 명령 이름을 설정합니다. 자주 사용하는 길고 복잡한 명령에 적합합니다.
git config 명령을 사용하여 별칭을 정의할 수 있습니다. 예를 들어 git config --global --add alias.st status를 실행하면 git st를 실행하면 git status를 실행하는 것과 동일한 작업이 수행됩니다. 하지만 별칭을 정의할 때 발견한 것은 다음과 같습니다. 일반적으로 ~/.gitconfig 파일을 직접 편집하는 것이 더 쉽습니다.
이 방법을 사용하기로 선택하면 ~/.gitconfig 파일이 INI 파일임을 알 수 있습니다. INI는 특정 단락이 포함된 키-값 파일 형식입니다. 별칭을 추가하면 [alias] 단락이 변경됩니다. 예를 들어 위와 동일한 git st 별칭을 정의할 때 파일에 다음을 추가합니다.
으아아아(이미 [별칭] 단락이 있는 경우 기존 섹션에 두 번째 줄을 추가하면 됩니다.)
别名不仅仅限于运行其他 Git 子命令 —— 你还可以定义运行其他 shell 命令的别名。这是一个用来处理一个反复发生的、罕见和复杂的任务的很好方式:一旦你确定了如何完成它,就可以在别名下保存该命令。例如,我有一些复刻的开源项目的仓库,并进行了一些本地修改。我想跟上项目正在进行的开发工作,并保存我本地的变化。为了实现这个目标,我需要定期将来自上游仓库的更改合并到我复刻的项目中 —— 我通过使用我称之为upstream-merge 的别名来完成。它是这样定义的:
upstream-merge = !"git fetch origin -v && git fetch upstream -v && git merge upstream/master && git push"
别名定义开头的 ! 告诉 Git 通过 shell 运行这个命令。这个例子涉及到运行一些 git 命令,但是以这种方式定义的别名可以运行任何 shell 命令。
(注意,如果你想复制我的 upstream-merge 别名,你需要确保你有一个名为 upstream 的 Git 远程仓库,指向你已经分配的上游仓库,你可以通过运行 git remote add upstream
如果你在一个有很多分支活动的项目上开发,有时可能很难掌握所有正在发生的工作以及它们之间的相关性。各种图形用户界面工具可让你获取不同分支的图片并在所谓的“提交图表”中提交。例如,以下是我使用 GitLab提交图表查看器可视化的我的一个仓库的一部分:
GitLab commit graph viewer
如果你是一个专注于命令行的用户或者发现分支切换工具让人分心,那么可以从命令行获得类似的提交视图。这就是 git log 命令的 --graph 参数出现的地方:
Repository visualized with --graph command
以下命令可视化相同仓库可达到相同效果:
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)%Creset' --abbrev-commit --date=relative
--graph 选项将图添加到日志的左侧,--abbrev-commit 缩短提交的 SHA 值,--date=relative 以相对方式表示日期,以及 --pretty 来处理所有其他自定义格式。我有个 git lg 别名用于这个功能,它是我最常用的 10 个命令之一。
有时,你越是想避开越避不开,你会发现你需要运行 git push --force 来覆盖仓库远程副本上的历史记录。你可能得到了一些反馈,需要你进行交互式变基,或者你可能已经搞砸了,并希望隐藏“罪证”。
当其他人在仓库的远程副本的同一分支上进行更改时,会发生强制推送的危险。当你强制推送已重写的历史记录时,这些提交将会丢失。这就是 git push --force-with-lease 出现的原因 -- 如果远程分支已经更新,它不会允许你强制推送,这确保你不会丢掉别人的工作。
你是否使用过 git commit -a 在一次行动中提交所有未完成的修改,但在你推送完提交后才发现 git commit -a 忽略了新添加的文件?你可以使用 git add -N (想想 “notify”) 来解决这个问题,告诉 Git 在第一次实际提交它们之前,你希望在提交中包含新增文件。
Eine bewährte Methode bei der Verwendung von Git besteht darin, sicherzustellen, dass jeder Commit nur eine logische Änderung enthält – sei es die Behebung eines Fehlers oder das Hinzufügen neuer Funktionen. Bei der Arbeit kann es jedoch vorkommen, dass für Änderungen in Ihrem Repository mehrere Commits erforderlich sind. Wie können Sie es schaffen, die Dinge so zu trennen, dass jedes Commit nur die entsprechenden Änderungen enthält? git add --patch ist hier, um Sie zu retten!
Dieses Flag bewirkt, dass der Befehl „git add“ alle Änderungen in Ihrer Arbeitskopie prüft und bei jeder Änderung fragt, ob Sie sie festschreiben, überspringen oder die Entscheidung verschieben möchten (Sie können nach dem Ausführen des Befehls „?“ auswählen, um weitere Änderungen anzuzeigen leistungsstarke Optionen). git add -p ist ein großartiges Tool zum Erstellen gut strukturierter Commits.
Ähnlich wie git add -p akzeptiert der Befehl git checkout auch die Option --patch oder -p, was dazu führt, dass jeder „Chunk“ an Änderungen in der lokalen Arbeitskopie angezeigt und verworfen werden kann – vereinfacht gesagt Stellen Sie die lokale Arbeitskopie in den Zustand vor den Änderungen wieder her.
Das ist wirklich toll. Wenn Sie beispielsweise einen Fehler verfolgen, der eine Reihe von Debug-Protokollanweisungen einführt, können Sie nach der Behebung des Fehlers zunächst git checkout -p verwenden, um alle neuen Debug-Protokolle zu entfernen, und dann git add -p, um die Fehlerbehebung hinzuzufügen. Es gibt nichts Befriedigenderes, als eine elegante, gut strukturierte Einreichung zusammenzustellen!
Einige Projekte haben die Regel, dass jeder Commit im Repository in einem funktionierenden Zustand sein muss – das heißt, bei jedem Commit sollte der Code kompilierbar sein oder die Testsuite sollte ohne Fehler ausgeführt werden. Dies ist nicht schwierig, wenn Sie an einem Zweig arbeiten. Wenn Sie jedoch aus irgendeinem Grund eine Rebase benötigen, müssen Sie jeden rebasierten Commit Schritt für Schritt durchgehen, um sicherzustellen, dass Sie ihn nicht versehentlich einführen eine Pause, und dieser Prozess ist langwierig.
Glücklicherweise überschreibt Git Rebase bereits die Option -x oder --exec. git rebase -x
Viele Git-Unterbefehle akzeptieren einen Revisionsparameter, um zu bestimmen, auf welchen Teil des Repositorys der Befehl wirkt. Dies kann der SHA1-Wert eines bestimmten Commits, der Name eines Zweigs oder sogar ein symbolischer Name wie HEAD (der den aktuellen Checkout darstellt) sein (letzter Commit des Zweigs) können Sie zusätzlich zu diesen einfachen Formen auch ein bestimmtes Datum oder eine bestimmte Uhrzeit als Parameter anhängen und so „einen Verweis auf diese Zeit“ angeben.
Diese Funktion wird irgendwann sehr nützlich sein. Wenn Sie sich mit dem neuesten Fehler befassen und sich sagen: „Diese Funktion war gestern in Ordnung. Was wurde geändert?“ Anstatt auf den gesamten Bildschirm der Git-Protokollausgabe zu starren und herauszufinden, wann der Commit geändert wurde, führen Sie einfach Git aus diff HEAD@{yesterday}, um alle Änderungen seit gestern zu sehen. Dies funktioniert auch für längere Zeiträume (z. B. git diff HEAD@{'2months ago'}) sowie ein genaues Datum (z. B. git diff HEAD@{'2010-01-01 12:00:00'}) .
Sie können diese datumsbasierten Revisionsparameter auch mit jedem Git-Unterbefehl verwenden, der Revisionsparameter verwendet. Einzelheiten dazu, welches Format genau verwendet werden soll, finden Sie in der Gitrevisions-Manpage.
Haben Sie jemals versucht, einen Commit während eines Rebases zu beenden, und dann festgestellt, dass Sie etwas in diesem Commit behalten müssen? Möglicherweise haben Sie das Gefühl, dass diese Informationen niemals abgerufen, sondern nur wiederhergestellt werden können. Wenn Sie jedoch in Ihrer lokalen Arbeitskopie einen Commit durchführen, wird der Commit zum Reflog hinzugefügt und Sie können weiterhin darauf zugreifen.
Wenn Sie git reflog ausführen, wird eine Liste aller Aktivitäten für den aktuellen Zweig in Ihrer lokalen Arbeitskopie angezeigt und Sie erhalten den SHA1-Wert jedes Commits. Sobald Sie den Commit gefunden haben, den Sie beim Rebasing aufgegeben haben, können Sie git checkout
Autsch! Es stellt sich heraus, dass meine grundlegenden Mathematikkenntnisse meinen Git-Kenntnissen unterlegen sind. Git wurde ursprünglich im Jahr 2005 veröffentlicht, was bedeutet, dass es dieses Jahr 13 statt 12 Jahre alt wird. Um diesen Fehler auszugleichen, hier ist Tipp Nummer 13, der uns in dreizehn verwandeln kann.
Wenn Sie bei der Arbeit an einem langfristigen Projekt einen verzweigungsbasierten Workflow verwenden, erhalten Sie am Ende eine Reihe von Verzweigungen, es sei denn, Sie bereinigen jeden Zweig beim Zusammenführen. Dies macht es schwierig, den gewünschten Zweig zu finden, und der Zweigwald macht es unmöglich, ihn zu finden. Schlimmer noch: Wenn Sie über eine große Anzahl aktiver Zweige verfügen, kann es sehr mühsam sein, festzustellen, ob ein Zweig zusammengeführt ist (kann sicher gelöscht werden) oder noch nicht zusammengeführt ist und in Ruhe gelassen werden sollte. Glücklicherweise kann Git Ihnen helfen: Führen Sie einfach git branch --merged aus, um eine Liste der Zweige zu erhalten, die in Ihren aktuellen Zweig zusammengeführt wurden, oder git branch --no-merged, um herauszufinden, welche Zweige in andere Zweige zusammengeführt wurden. Standardmäßig werden dadurch Zweige in Ihrer lokalen Arbeitskopie aufgelistet. Wenn Sie jedoch das Argument --remote oder -r in die Befehlszeile einfügen, werden auch zusammengeführte Zweige aufgelistet, die nur im Remote-Repository vorhanden sind.
Wichtig: Wenn Sie die Ausgabe von git branch --merged verwenden möchten, um zusammengeführte Zweige zu bereinigen, müssen Sie darauf achten, dass die Ausgabe auch den aktuellen Zweig enthält (schließlich wird dieser aktuelle Zweig mit dem aktuellen zusammengeführt). Zweig!). Stellen Sie sicher, dass Sie den Zweig vor der Zerstörung ausschließen (wenn Sie es vergessen, lesen Sie Tipp 12, um zu erfahren, wie Reflog Ihnen dabei helfen kann, den Zweig wiederherzustellen. Ich hoffe, es hilft ...).
Hoffentlich haben Sie mit mindestens einem dieser Tipps etwas Neues über Git gelernt, ein 13 Jahre altes Projekt, das weiterhin Innovationen hervorbringt und neue Funktionen hinzufügt. Was ist Ihr Lieblings-Git-Trick?
위 내용은 13가지 실용적인 Git 팁의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

Linux 시스템의 5 가지 기본 구성 요소는 다음과 같습니다. 1. Kernel, 2. System Library, 3. System Utilities, 4. 그래픽 사용자 인터페이스, 5. 응용 프로그램. 커널은 하드웨어 리소스를 관리하고 시스템 라이브러리는 사전 컴파일 된 기능을 제공하며 시스템 유틸리티는 시스템 관리에 사용되며 GUI는 시각적 상호 작용을 제공하며 응용 프로그램은 이러한 구성 요소를 사용하여 기능을 구현합니다.

git 저장소 주소를 보려면 다음 단계를 수행하십시오. 1. 명령 줄을 열고 리포지토리 디렉토리로 이동하십시오. 2. "git remote -v"명령을 실행하십시오. 3. 출력 및 해당 주소에서 저장소 이름을 봅니다.

메모장은 Java 코드를 직접 실행할 수는 없지만 다른 도구를 사용하여 명령 줄 컴파일러 (Javac)를 사용하여 Bytecode 파일 (filename.class)을 생성하면 달성 할 수 있습니다. Java Interpreter (Java)를 사용하여 바이트 코드를 해석하고 코드를 실행하고 결과를 출력하십시오.

Sublime에서 코드를 실행하는 6 가지 방법이 있습니다. 핫키, 메뉴, 빌드 시스템, 명령 줄, 기본 빌드 시스템 설정 및 사용자 정의 빌드 명령, 프로젝트/파일을 마우스 오른쪽 단추로 클릭하여 개별 파일/프로젝트를 실행합니다. 빌드 시스템 가용성은 숭고한 텍스트 설치에 따라 다릅니다.

Linux의 주요 용도에는 다음이 포함됩니다. 1. 서버 운영 체제, 2. 임베디드 시스템, 3. 데스크탑 운영 체제, 4. 개발 및 테스트 환경. Linux는이 분야에서 뛰어나 안정성, 보안 및 효율적인 개발 도구를 제공합니다.

Laravel을 설치하려면 다음 단계를 순서대로 수행하십시오. Composer 설치 (MacOS/Linux 및 Windows) 설치 LARAVEL 설치 프로그램 새 프로젝트 시작 서비스 액세스 애플리케이션 (URL : http://127.0.1:8000) 데이터베이스 연결 (필요한 경우)을 설정하십시오.

GIT 소프트웨어 설치 단계는 다음 단계가 포함됩니다. 설치 패키지를 다운로드하고 설치 패키지를 실행하여 설치 구성 GIT 설치 GIT BASH (Windows 만)를 확인하십시오.

개발 환경을 사용자 정의하는 방법에는 여러 가지가 있지만 글로벌 GIT 구성 파일은 사용자 이름, 이메일, 우선 텍스트 편집기 및 원격 분기와 같은 사용자 정의 설정에 가장 많이 사용되는 파일입니다. 글로벌 git 구성 파일에 대해 알아야 할 주요 사항은 다음과 같습니다.
