고급 Git 튜토리얼

고급 Git 튜토리얼

원격 저장소를 통해 프로젝트를 배포하면 프로젝트의 모든 부분을 유연하게 관리할 수 있습니다. 버그 수정, 기능 업데이트, 파일 삭제, 팀워크, 오픈 소스 기여, 코드 배포 등이 이제 Git에 대한 강력한 지식으로 손끝에 있습니다.





Git을 사용해 왔지만 더 알고 싶으십니까? 다음은 프로젝트 버전 제어를 쉽게 만들어줄 고급 Git 팁입니다.





힘내 분기

Git 브랜치는 마스터 브랜치로 직접 푸시하는 것을 방지합니다. 개발자 팀과 함께 프로젝트를 관리하는 경우 유용합니다. Git 브랜치를 원하는 만큼 생성한 다음 나중에 마스터 브랜치에 병합할 수 있습니다.





Git 브랜치 생성

Git 브랜치를 생성하려면 다음을 사용하십시오.

git branch branch_name

Git 분기로 전환

사용하다 점검 Git 브랜치로 전환하려면:



git checkout branch_name

분기로 전환한 후 다음을 사용하여 변경 사항을 준비할 수 있습니다. 자식 추가 --all . 그런 다음 사용하여 커밋하십시오. git commit -m '커밋 이름' 명령.

분기와 마스터 비교

사용 자식 차이 명령:





git diff master..branch_name

특정 파일을 비교하려면:

git diff master..testb -- main.html

두 분기를 비교하는 것은 분기를 마스터와 비교하는 방법과 유사합니다.





git diff branch1..branch2

두 분기 간 특정 파일의 차이점을 보려면 다음을 수행합니다.

git diff branch1..branch2 -- main.html

원격 분기에 변경 사항 푸시

다른 개발자가 변경 사항을 라이브로 푸시하기 전에 로컬 분기의 파일에 적용한 변경 사항을 살펴보기를 원할 수 있습니다. 좋은 방법은 로컬 Git 브랜치를 원격 복제본에 밀어 넣어 볼 수 있도록 하는 것입니다.

이전에 로컬 브랜치를 생성했다고 가정해 보겠습니다. 변화 . 해당 로컬 분기로 전환하고 원하는 모든 파일을 조정한 다음 해당 분기에 준비하고 커밋할 수 있습니다.

그런 다음 해당 변경 사항을 분기의 원격 버전으로 푸시할 수 있습니다.

git push origin changes

pull 요청을 사용하여 원격 분기를 마스터와 병합

그래서 다른 프로그래머가 원격 브랜치의 변경 사항을 감사했습니다( 변화 ). 그러나 마스터 브랜치와 병합하고 라이브로 푸시하려고 합니다.

원격 브랜치는 로컬 Git 브랜치( 변화 ). 변경 사항을 병합하는 방법은 다음과 같습니다.

마스터 브랜치로 전환:

git checkout master

분기의 원점 또는 HEAD를 당깁니다( 변화 ) 마스터 브랜치와 병합하려면 다음을 수행합니다.

git pull origin changes

이 병합을 마스터 브랜치에 라이브로 푸시합니다.

git push origin master

대신 Git 병합 사용

다음을 사용하여 분기를 마스터와 병합하려면 가다 명령:

마스터 브랜치로 마이그레이션:

git checkout master

브랜치( 변화 ):

git merge changes

그런 다음 병합 라이브를 마스터 분기로 푸시합니다.

크롬에서 내 기본 Google 계정 어떻게 변경해
git push origin master

교체했는지 확인하십시오. 변화 귀하의 지점 이름으로.

병합에 성공하면 다음을 수행할 수 있습니다. 지점을 로컬 및 원격으로 삭제 더 이상 필요하지 않은 경우:

관련된: Git에서 분기 이름을 바꾸는 방법

힘내 리베이스

오래된 커밋이 있는 여러 분기가 있는 경우 리베이스하거나 다시 초점을 맞출 수 있습니다. 머리/심판 상속받을 그 가지들 중 머리/심판 업데이트된 것의.

따라서 Rebasing은 현재 분기의 기반으로 일부 분기를 업데이트해야 할 때 유용합니다.

그러나 특히 팀과 함께 작업하는 경우 전체 워크플로를 방해할 수 있으므로 리베이스를 자주 수행해서는 안 됩니다. 그러나 혼자 작업하고 워크플로와 분기에 익숙하다면 리베이스를 사용하는 위치와 방법을 안다면 큰 피해를 입지 않을 것입니다.

예를 들어, 두 개의 분기가 있다고 가정합니다. 지점1과 지점2. 이제 한동안 branch1을 변경하지 않았습니다. 그러나 최근을 포함하여 지속적으로 branch2에 대한 변경 사항을 커밋합니다.

따라서 흐름과 함께 branch1을 수행하기로 결정했습니다. 따라서 branch1을 branch2로 리베이스한다는 것은 branch1에게 이전 커밋을 무시하고 branch2에 대한 최근 커밋을 상속하도록 지시한다는 의미입니다.

방법은 다음과 같습니다.

버려진 브랜치(branch1)로 전환:

git checkout branch1

그런 다음 branch1을 업데이트된 branch2로 리베이스합니다.

git rebase branch2

힘내 스쿼시

Git squash를 사용하면 여러 커밋을 하나로 병합할 수 있습니다. 달릴 때 도움이 된다 자식 커밋 단일 업데이트에 여러 번. 실용적인 예는 단일 기능에 대한 각 버그 수정 또는 코드 리팩터링에 별도의 커밋이 있는 경우입니다.

그러나 HEAD 커밋은 모두 같은 목적을 가지고 있기 때문에 함께 제공되는 커밋과 함께 푸시하고 싶지 않을 수도 있습니다. 권장되는 접근 방식은 커밋을 추적할 때 혼동을 피하기 위해 하나로 묶는 것입니다.

커밋을 스쿼시하는 가장 좋은 방법은 대화형 리베이스 모드를 사용하는 것입니다. 이것을 더 잘 이해하려면 아래의 예를 살펴보십시오.

이 예에서는 5개의 버그 수정 사항이 있다고 가정합니다. 그리고 각각에 대한 커밋이 있습니다. 이 다섯 가지 커밋을 하나로 묶는 방법은 다음과 같습니다.

운영 자식 reflog 커밋의 해시 코드를 보려면:

git reflog

이 경우의 결과는 다음과 같습니다.

이제 목표는 다음으로 시작하여 마지막 5개 커밋을 스쿼시하는 것입니다. 첫 번째 수정 까지 다섯 번째 수정 .

그렇게 하려면 바로 아래 커밋의 해시 코드를 복사합니다. 첫 번째 수정 ( 0a83962 ). 그런 다음 NS 그만두다 리플로그 .

이제 실행 git rebase --대화형 그 해시에.

git rebase --interactive 0a83962

그런 다음 Git은 다음과 같은 대화형 rebase 파일을 엽니다.

커밋을 스쿼시하려면 첫 번째 수정 , 바꾸다 선택하다 ~와 함께 NS 다른 커밋 각각에 대해:

이 파일을 저장하고 닫습니다.

그런 다음 스쿼시된 커밋의 이름을 바꿀 수 있는 다른 파일이 열립니다.

엑셀에서 산점도 만들기

그것들을 정리하고 스쿼시된 커밋에 대해 선호하는 이름을 입력하십시오:

해당 파일을 저장합니다. 그런 다음 닫으면 터미널에 성공 메시지가 표시됩니다.

메모: 대화형 파일은 터미널 내에서 열릴 수 있습니다. 그러나 Windows를 사용하는 경우 쉽게 스쿼싱할 수 있도록 터미널에서 즐겨 사용하는 텍스트 편집기에서 파일을 전역적으로 열도록 할 수 있습니다.

그렇게 하려면 명령줄을 열고 다음을 실행합니다.

git config --global core.editor ''path to choice text editor' -n -w'

Git 포크 대 Git 클론

포크와 복제는 Git에서 두 가지 다른 용어입니다. 저장소가 이미 있으므로 포크할 수 없습니다. 그러나 다른 사람의 저장소를 포크하고 나중에 복제할 수 있습니다.

저장소를 포크한다는 것은 누군가의 저장소 사본을 가져와서 자신의 것으로 만드는 것을 의미합니다. 해당 리포지토리의 복사본을 얻으면 로컬 변경 사항에 대해 git 리포지토리와 마찬가지로 복제할 수 있습니다.

방법은 다음과 같습니다. 원격 저장소 복제 GitHub에서 로컬 디렉터리로 다운로드를 시작합니다.

git clone https://github.com/username/repository_name.git/

파일을 기본 상태로 복원

마지막 커밋 후 파일의 변경 사항을 지우려면 다음을 사용할 수 있습니다. 자식 복원 명령:

git restore filename

커밋 수정

스테이징하는 동안 일부 파일을 변경하는 것을 잊은 경우 이전 커밋으로 폴백할 수 있습니다.

잊어버린 파일을 변경합니다. 그런 다음 사용 자식 수정 커밋을 검토하려면:

git add file_forgotten
git commit --amend

파일 스테이지 해제

다음을 사용하여 커밋을 위해 준비한 특정 파일을 제거할 수 있습니다. 가다 명령:

git rm --cached filename

한 번에 여러 파일을 제거할 수도 있습니다.

git rm --cached file1 file2 file3 file4

면제하려는 파일에 관련 파일 확장자를 추가하는 것을 잊지 마십시오. 예를 들어 일반 텍스트 파일은 파일명.txt .

관련된: Git을 정리하고 추적되지 않은 파일을 제거하는 방법

힘내 재설정

사용 자식 리셋 커밋을 위해 준비한 모든 파일을 한 번에 삭제하려는 경우 유용합니다.

git reset

그러나 Git reset HEAD는 분기의 HEAD가 작업 트리의 특정 커밋을 가리킵니다. 예를 들어 현재 커밋을 아직 푸시하지 않은 경우 최근에 푸시된 커밋으로 폴백할 수 있습니다.

git reset --soft HEAD~1

바꾸다 --부드러운 ~와 함께 --딱딱한 현재 커밋을 이미 푸시한 경우:

git reset --hard HEAD~1

되돌리기

달리 초기화 명령, 돌아가다 커밋 기록의 무결성을 유지합니다. 오류나 버그로 인해 커밋을 수정하려는 경우에 편리합니다.

대상 커밋을 포기하거나 새 커밋을 만들지 않습니다. 대신 그러한 커밋을 삭제하거나 이름을 바꾸지 않고 최근 변경 사항으로 되돌아갑니다. 커밋을 더 깨끗하게 유지하는 좋은 방법이며 항상 재설정하는 것보다 안전합니다.

커밋으로 되돌리려면:

git revert HEAD~1

어디에 머리~1 작업 트리의 특정 커밋을 가리킵니다.

추적 파일 또는 디렉토리 삭제

당신이 사용할 수있는 자식 rm -f 작업 트리에서 추적된 파일을 삭제합니다. 그러나 Git은 추적되지 않은 파일을 캐시하지 않기 때문에 제거할 수 없습니다.

준비된 파일을 삭제하려면:

git rm -f filename

준비된 폴더를 제거하려면:

git rm -r -f foldername

Git 로깅

Git에서 커밋 로그 및 기록을 보려면:

git log

특정 분기의 활동을 기록하려면:

git log branch_name

관련된: git log로 프로젝트 히스토리를 검사하는 방법

때로는 포기한 커밋으로 되돌리고 싶을 수도 있습니다. 따라서 관련 커밋을 포함하여 버려진 커밋을 보려면 다음을 수행하십시오.

git reflog

특정 분기에 대한 참조 로그를 보려면:

git reflog branch_name

Git을 사용하여 전문가처럼 프로젝트 버전 관리

많은 이점을 제공하는 Git을 사용하면 메인 브랜치의 온프레미스 파일과 폴더를 해킹하지 않고 원격으로 프로젝트 릴리스를 관리할 수 있습니다. 또한 팀과 함께 프로젝트를 쉽게 실행할 수 있습니다.

지금까지 살펴본 것처럼 Git에는 탐색할 수 있는 많은 기능이 있습니다. 그러나 이러한 기능을 의도적으로 사용하려면 주의하십시오. 그렇지 않으면 결국 물건을 망가뜨릴 수 있습니다. 즉, 여전히 데모 원격 저장소를 가동하고 이러한 기능을 가지고 놀 수 있습니다.

공유하다 공유하다 트위터 이메일 Git으로 프로그래머처럼 파일 버전 관리하기

프로그래머는 파일 버전 제어 문제를 해결하기 위해 버전 제어 시스템(VCS)을 만들었습니다. 오늘 최고의 시스템인 Git을 사용하여 버전 관리의 기본 사항을 살펴보겠습니다.

다음 읽기
관련 항목
  • 프로그램 작성
  • 웹 개발
  • 깃허브
  • 코딩 튜토리얼
저자 소개 이디소 오미솔라(94건의 기사 게재)

Idowu는 스마트 기술과 생산성에 대한 열정을 가지고 있습니다. 여가 시간에는 코딩을 하거나 지루할 때 체스판으로 전환하지만 가끔씩 일상에서 벗어나는 것도 좋아합니다. 사람들에게 현대 기술에 대한 방법을 보여주고자 하는 그의 열정은 그가 더 많은 글을 쓰도록 동기를 부여합니다.

Idowu Omisola가 참여한 작품 더보기

뉴스레터 구독

기술 팁, 리뷰, 무료 전자책 및 독점 거래에 대한 뉴스레터에 가입하십시오!

구독하려면 여기를 클릭하세요.