힘내 소개

게시 됨: 2022-06-30

웹사이트 구축을 시작할 때 저는 "카우보이 코딩"을 했습니다. 즉, 종종 서버에서 실시간으로 파일을 편집하고 있었습니다. 이것이 끔찍한 생각이라는 것을 깨닫는 데 몇 개의 깨진 사이트가 필요했습니다. 그런 다음 내 컴퓨터에서 로컬로 사이트를 구축하기 시작했습니다. FTP 클라이언트의 잘못된 위치로 파일을 마이그레이션하기 위해 로컬 파일을 두 번 이상 편집했습니다. 때때로 그것은 내가 희망적으로 보관했던 일부 백업 사본을 찾아보지 않고는 고칠 수 없는 파일을 덮어쓰게 된다는 것을 의미합니다.

여전히 FTP를 다루며 파일을 롤백할 수 없다면 버전 제어를 위해 Git을 사용하는 방법을 배울 때입니다.

버전 관리란 무엇입니까?

버전 제어 시스템(VCS)은 소프트웨어 개발자가 시간이 지남에 따라 코드 변경 사항을 관리하는 데 도움이 되는 소프트웨어 유형입니다. 좋은 VCS 시스템은 코드의 각 변경 사항을 추적합니다. 즉, 문제가 발생하면 작동할 때까지 "실행 취소"를 누르지 않고도 작동하던 이전 버전의 코드로 롤백할 수 있습니다.

팀 환경에서 VCS는 다른 구성원이 파일을 업데이트할 때 코드의 변경 사항을 병합할 수 있는 도구를 제공하여 다른 구성원과 작업하는 데 도움이 됩니다.

내가 Git에서 하는 일 중 하나는 내가 빌드하는 각 기능에 대해 새 분기를 만드는 것입니다. 즉, 분기에서 수행한 변경 사항을 추적할 수 있지만 기본 분기로 다시 이동하여 사이트의 현재 상태로 돌아갈 수 있습니다. 이 워크플로에 대해서는 나중에 자세히 설명하겠습니다.

힘내 란 무엇입니까?

Git은 버전 관리 시스템이지만 유일한 것은 아닙니다. 기본 WordPress 저장소는 SVN을 통해 실행되지만 Git 사본도 찾을 수 있습니다. Mercurial, Visual Source Safe, VESTA 및 기타 여러 옵션도 있습니다.

이러한 모든 옵션에도 불구하고 Git은 거의 모든 사람이 사용하는 것이므로 오늘 배울 버전 제어입니다.

기본 Git 용어 및 명령

Git 사용법에 대한 메커니즘을 알아보기 전에 몇 가지 용어를 이해해야 합니다. 우리는 당신이 정기적으로 접하게 될 용어만 다룰 것입니다.

마주칠 수 있는 모든 것의 더 완전한 목록을 보려면 이것을 보십시오. Git 참조 또는 이것 Git 명령의 전체 목록 .

추가 : 코드를 변경했으면 git add 명령을 사용하여 변경 사항을 커밋할 수 있도록 추가합니다.

분기 : 분기는 기본 작업 프로젝트와 다른 저장소 버전입니다. 모든 리포지토리에는 기본 또는 더 일반적으로 이전 프로젝트의 마스터 브랜치가 있습니다. 최근 Git과 Github에서는 master라는 단어의 역사적 문제로 인해 기본 브랜치 이름을 master에서 main으로 변경하기 시작했습니다. Git 2.28을 사용하면 새 프로젝트에 대한 기본 분기 이름을 설정할 수도 있습니다.

체크아웃 : git checkout 명령을 사용하여 저장소의 다른 분기 간에 전환합니다. 이 명령을 사용하면 Git은 파일의 내용을 변경하거나 분기별로 다른 파일을 추가 및 제거합니다.

Clone : git clone 명령은 소스 리포지토리에서 리포지토리의 복사본을 만드는 데 사용됩니다. 이 명령을 사용하여 코드에서 작업할 수 있도록 원격 리포지토리의 로컬 복사본을 가져옵니다.

Commit : git add 를 사용한 후에는 파일 상태를 git에 저장하려면 git commit 을 사용해야 합니다.

init : git init 는 Git이 작동하는 데 필요한 모든 기본 파일이 포함된 빈 저장소를 만듭니다.

병합 : 한 분기에 변경 사항을 적용하고 추가 및 커밋했으면 git merge 명령을 사용하여 해당 변경 사항을 다른 분기로 마이그레이션합니다.

Origin : 저장소의 기본 버전에 대한 기본 이름입니다. 나는 보통 내 것을 원산지보다 더 설명적으로 변경합니다. Github으로 작업하는 경우 Git의 설정을 변경하여 Origin이 github가 되도록 합니다. 이것은 내가 내 머리에 있는 것들을 명확하게 유지하는 데 도움이 됩니다.

푸시 : 저장소의 로컬 버전에서 작성된 커밋으로 원격 분기를 업데이트합니다.

리포지토리 : "리포지토리"라고도 하며 모든 파일의 디렉터리이며 해당 파일에 대한 Git 변경 내역입니다.

상태 : git status 는 작업 저장소의 현재 상태를 보여줍니다.

.gitignore : Git이 추적을 방해하지 않는 파일 패턴이 포함된 숨김 파일입니다. .gitignore 파일에 .DS_Store 가 있으면 macOS가 폴더 안에 자주 넣는 성가신 파일을 모두 무시합니다.

Git 리포지토리 호스팅

다이빙하기 전에 이해해야 할 또 다른 사항은 저장소에 대한 원격 위치가 필요하지 않지만 원격 위치가 없으면 Git 사용의 일부 이점이 감소한다는 것입니다. 다른 곳에서 호스팅되는 원격 리포지토리가 없으면 컴퓨터가 죽거나 도난당한 경우 코드를 백업할 수 없습니다.

Github 및 Bitbucket은 대부분 무료이며 비공개 리포지토리를 가질 수 있기 때문에 Git 리포지토리를 호스팅하는 데 가장 인기 있는 두 곳입니다. 그것은 당신의 코드가 다른 사람의 서버에 있다는 것을 의미하므로 그 아이디어가 마음에 들지 않는다면 당신의 서버에서 Gitlab을 사용하여 리포지토리를 호스팅할 수 있습니다.

힘내 설치

macOS에서 git을 설치하는 가장 간단한 방법은 터미널을 열고 git을 입력하여 git을 설치하기 위한 Xcode 명령줄 도구를 다운로드하라는 메시지를 표시하는 것입니다. 완료되면 git –version을 실행하여 보유하고 있는 git 버전을 확인할 수 있습니다. 작동하지 않는 경우 macOS에 git을 설치하는 몇 가지 다른 방법이 있습니다.

Windows 사용자의 경우 공식 Git 설치 프로그램을 사용하여 Git을 설치할 수 있습니다. Git은 또한 나중에 이야기할 Github Desktop 애플리케이션과 함께 번들로 제공됩니다.

Linux를 사용하는 경우 git은 패키지 관리자와 함께 번들로 제공되거나 Linux에 git을 설치하는 방법을 볼 수 있습니다.

Git 기본값 구성

Git을 설치한 후에는 각 커밋이 사용자의 이름과 이메일을 사용하고 커밋 메시지를 사용하여 선호하는 편집기를 사용하여 커밋과 함께 제공되는 주석을 입력하도록 구성해야 합니다. 터미널 응용 프로그램을 통해 macOS에서 설정하는 방법을 살펴보겠습니다.

git config --global user.name "Your Name" 은 컴퓨터에서 수행되는 모든 커밋과 함께 사용되는 이름을 설정합니다.

git config --global user.email "[email protected]" 은 모든 커밋과 연결된 이메일 주소를 설정합니다.

git config --global core.editor vim 은 Git vim의 기본 편집기를 만듭니다. vim을 사랑하지만 모든 사람이 vim을 좋아하는 것은 아닙니다. Atom을 사용하는 경우 Sublime Text에 대해 git config –global core.editor “atom –wait” 또는 git config –global core.editor “subl -n -w”를 사용합니다.

IDE를 사용하고 있다면 PHPStorm 처럼 Visual Studio Code 를 사용하여 애플리케이션 내에서 직접 Git으로 작업할 수도 있습니다 .

리포지토리 설정

이제 git을 설치하고 구성했으므로 기본 저장소를 시작하겠습니다. 터미널을 열고 mkdir test-repository repository 를 입력하여 test-repository 라는 폴더를 만듭니다. 그런 다음 cd test-repository 를 입력하여 test-repository 디렉터리로 변경하고 git init 를 입력합니다.

이 시점에서 .git 이라는 폴더에 숨겨진 디렉토리가 하나 있습니다. 숨김 파일이므로 터미널에 ls -a 를 입력하여 숨김 파일을 나열해야 합니다.

자식 추가 사용

이제 터미널에 touch test.txt 를 입력하여 파일을 생성해 봅시다. 다음으로 git status 를 입력하여 방금 추가한 파일을 확인합니다.

보시다시피 우리가 만든 새 파일은 빨간색으로 표시되고 상태가 추적되지 않음을 알려줍니다. 즉, Git은 파일을 볼 수 있지만 기록이 없습니다.

git add test.txt 를 입력하여 Git에 이 파일을 준비하도록 지시한 다음 git status 다시 입력하면 Git이 변경된 파일에 대해 알고 있다고 알려줄 것입니다.

Git에 파일 커밋

이제 파일을 추가했으므로 Git이 파일 상태를 저장하도록 커밋해야 합니다. 다음 명령으로 기본 편집기를 열지 않고도 한 줄로 이 작업을 수행할 수 있습니다.

git commit -m 'adding our first file'

-m 플래그는 작은 따옴표 안에 있는 단어가 명령과 함께 제공되는 주석임을 git에 알려줍니다.

이제 저장소에는 상태가 저장된 단일 파일이 있습니다.

지점 만들기

Git의 진정한 힘은 분기를 시작할 때 나타납니다. test.txt 파일에 여러 개를 작성하고 싶지만 파일을 계속 유지할지 확신이 서지 않고 현재 빈 파일로 돌아갈 수 있는지 확인하고 싶다고 가정해 보겠습니다. 우리는 이것을 브랜치로 할 수 있습니다.

브랜치를 생성하기 위해 git checkout -b new-branch 를 입력할 수 있습니다. 브랜치를 체크아웃하면서 동시에 브랜치를 생성하는 단축키로, 브랜치를 생성해야 할 때마다 사용하는 방법입니다.

이제 test.txt 파일을 열고 텍스트를 추가하고 저장합니다. 그런 다음 위와 같이 git addgit commit 을 사용하여 파일 상태를 저장합니다.

그런 다음 git checkout master 를 입력하여 기본 메인 브랜치로 다시 전환한 다음 test.txt 파일의 내용을 다시 확인합니다. 입력한 모든 텍스트가 제거되었음을 알 수 있습니다. Git은 한 가지에만 있던 새 파일을 삭제하기도 하지만 파일이 사라지지 않도록 기록을 유지합니다.

분기 병합

이제 파일에 작성한 내용이 무엇이든 좋아하므로 이를 기본 분기와 통합해 보겠습니다. 메인 브랜치에 있는지 확인하고 git merge new-branch 를 입력하여 변경 사항을 통합합니다.

이제 test.txt 의 내용을 보면 왼쪽에서 그대로 메인 브랜치에서 변경 사항을 찾을 수 있습니다.

워드프레스에서 Git 사용하기

위의 예는 매우 간단했지만 프로젝트에서 Git을 시작하는 데 필요한 모든 것입니다. 이제 Git을 사용하여 WordPress 프로젝트를 얻는 방법에 대해 정확히 이야기해 보겠습니다.

첫 번째 고려 사항은 폴더 계층 구조에서 Git 리포지토리의 루트가 되어야 하는 수준입니다. 테마를 구축하는 경우 테마 폴더를 저장소로 만들 수 있습니다. 플러그인을 빌드하는 경우에도 동일한 논리가 적용됩니다.

저는 보통 테마와 플러그인을 동시에 작업하기 때문에 wp-content 폴더를 저장소 위치로 자주 사용합니다. 이 작업을 수행할 때 모든 이미지와 업로드된 파일을 저장소에 추가하지 않도록 업로드 폴더를 무시합니다. 그들은 저장소를 어지럽히고 이미지 파일 압축에 좋지 않기 때문에 Git 속도를 늦출 수 있습니다.

전체 배포 워크플로를 처리하는 경우 루트 WordPress 폴더를 Git 리포지토리의 기본 위치로 만듭니다. 그런 다음 wp-content/uploadswp-config.php.gitignore 파일에 추가합니다. wp-config.php 는 각 WordPress 설치에 따라 다르므로 사이트 작동을 멈추게 하는 다른 버전의 파일 위에 배포되는 것을 원하지 않습니다.

내가 모든 프로젝트의 시작점으로 사용하는 .gitignore 파일의 복사본을 볼 수 있습니다. Git 저장소의 루트로 wp-content 를 사용하고 있다고 가정하므로 WordPress의 루트에 있는 경우 무시 패턴 중 일부를 변경합니다.

Git GUI 애플리케이션

Git에 대한 명령줄을 통해 기본 사항을 다루었지만 모든 사람이 명령줄에 익숙하지 않다는 것을 알고 있습니다. 저는 Git을 사용하기 시작했을 때 그렇지 않았습니다. 지금도 가끔 설정을 변경하기 전에 Git이 하는 일을 시각적으로 보고 싶을 때가 있습니다.

운 좋게도 사용할 수 있는 Git용 GUI 클라이언트가 여러 개 있으므로 몇 가지만 강조하겠습니다.

Github 데스크탑(Windows/macOS)

Git GUI 클라이언트를 볼 때 시작하기에 좋은 지점 중 하나는 Github 데스크탑 애플리케이션을 사용하는 것입니다.

많은 오픈 소스 프로젝트는 협업을 위한 코드 저장소로 Github를 사용하고 표준 Github 흐름을 사용하여 작업을 수행합니다. Github Desktop 클라이언트는 이 흐름을 처리하는 데 도움을 주기 위해 구축되었으므로 끌어오기 요청을 더 쉽게 생성할 수 있습니다.

풀 리퀘스트가 무엇인지 잘 모르겠다면 다음을 확인하세요. pull 요청에 대한 Github의 문서

불행히도 Linux 사용자에게는 공식 Github Desktop 애플리케이션이 없지만 Linux 시스템에 설치할 Github Desktop 포크가 있습니다.

Git 타워(Windows/macOS)

내가 사용하는 Git GUI는 Git Tower입니다. Git Tower는 macOS 및 Windows에서 사용할 수 있습니다. Git을 시작할 때 충돌을 해결하고 이 GUI 내부의 파일 간에 무엇이 다른지 확인하는 것이 훨씬 더 쉽다는 것을 알았습니다.

작업 카피(iOS/iPadOS)

저처럼 주로 아이패드로 작업하신다면 Working Copy를 보셔야 합니다. Working Copy는 iOS 및 iPadOS에서 작동하는 모든 기능을 갖춘 Git 클라이언트입니다. Git 워크플로의 일부를 자동화할 수 있는 Shortcuts 통합 기능도 있습니다.

마무리

오늘 Git 지식에 대한 많은 내용을 다루었지만 단일 블로그 게시물이 주제에 대해 철저할 수는 없습니다. Nexcess 도움말 문서와 훌륭한 리소스를 통해 학습을 계속할 수 있습니다.

  • 힘내 문서
  • 프로 깃 책
  • Laracasts Git 레슨
  • Git 자체 외부 리소스

Git을 사용하여 클라이언트 프로젝트를 관리하면 수행한 작업을 더 이상 원하지 않는 경우 변경 사항을 롤백하거나 전체 분기를 삭제할 수 있으므로 골칫거리를 줄일 수 있습니다. 충분히 롤백했다고 생각할 때까지 더 이상 Ctrl + Z를 사용하지 마십시오. Git이 모든 것을 추적할 것입니다.