개발 도구 자식 버전 관리 도구 Git - 지점 관리

버전 관리 도구 Git - 지점 관리

Jun 22, 2020 am 09:56 AM
git

Branch는 Git의 킬러 애플리케이션입니다. 다른 버전 제어 도구와 달리 Git은 분기 생성 및 전환에 매우 효율적입니다.

브랜치 소개

브랜치란 무엇인가요? 이제 우리에게 매우 익숙한 시나리오부터 시작해 보겠습니다. 이제 출시된 제품에 새로운 기능이 추가되어야 합니다. 이때 원래 브랜치에서 계속 개발한다면 이미 출시된 애플리케이션이고 출시하기 전에 테스트를 거쳐야 하기 때문에 매우 불편할 것입니다. 일반적으로 우리의 접근 방식은 새 분기를 만들고 이 새 분기에서 새 기능을 개발한 다음 테스트 후 기본 분기에 병합하는 것입니다.

브랜치 생성 및 전환

현재 내 저장소의 브랜치 상황은 다음과 같습니다.

버전 관리 도구 Git - 지점 관리

브랜치 생성

이제 새로운 브랜치인 dev를 생성합니다. 브랜치를 생성하고 브랜치를 보는 명령은 다음과 같습니다.

git branch 分支名
git branch

# git branch dev
# git branch
  dev
* master
로그인 후 복사

Switch Branch

브랜치가 성공적으로 설정되었습니다. 이제 새 브랜치로 전환해 보겠습니다. 브랜치를 전환하는 명령은 다음과 같습니다. git checkout Branch name

# git checkout dev
Switched to branch 'dev'
로그인 후 복사

버전 관리 도구 Git - 지점 관리

이제 새 브랜치에서 몇 가지 수정 사항을 적용한 다음 제출하고 마스터 브랜치로 전환하여 make를 수행합니다. 일부 수정하여 제출합니다. 그런 다음 지점의 상태를 살펴보겠습니다.

git vim config.php # 修改config.php文件
git add . && git commit -m 'add config.php'

git checkout master # 切换到主分支
git vim config.php
git add . && git commit -m 'change config.php'
로그인 후 복사

버전 관리 도구 Git - 지점 관리

$ git log --oneline --decorate --graph --all
* ca4589c (HEAD -> master) add config file
| * 43a5a8f (dev) add config.php
|/
* 19e3186 add index.php
* 9cc82f9 first commit
로그인 후 복사

브랜치 생성 및 브랜치 전환을 완료하는 하나의 명령

git checkout -b 新分支名
로그인 후 복사

브랜치 병합

먼저 매우 일반적인 시나리오를 소개합니다.

  • 시스템은 이미 온라인에 접속하세요

  • 시스템을 새로운 기능으로 업데이트해야 하므로 새 브랜치(dev)를 만들고 이 브랜치에서 작업하세요.

  • 이때 갑자기 시스템에 문제가 발생하여 긴급 조사와 처리가 필요했습니다.

  • 그러면 이때 먼저 온라인 버전(master)으로 전환한 후 새 브랜치를 생성(fixbug)하고 새 브랜치에서 오류를 수정해야 합니다

  • 테스트 완료 후 스위치 그런 다음 Fixbug 분기를 병합하고 변경 사항을 온라인 분기로 푸시합니다.

  • 마지막으로 dev 브랜치로 전환하여 작업을 계속할 수 있습니다.

현재 저장소 상태는 다음과 같습니다.

버전 관리 도구 Git - 지점 관리

이제 새 브랜치를 생성하고 새 브랜치에 새로운 기능을 추가해야 합니다.

git checkout -b dev
로그인 후 복사

그런 다음 새 브랜치에서 몇 가지 사항을 변경하세요.

버전 관리 도구 Git - 지점 관리

이때 온라인에서 심각한 버그가 발견되어 긴급히 처리해야 했습니다. 우선 마스터 브랜치로 전환해야 합니다. 그런데 전환 중에 오류가 발생했습니다

$ git checkout master
error: Your local changes to the following files would be overwritten by checkout:
        login.php
Please commit your changes or stash them before you switch branches.
Aborting
로그인 후 복사

위 오류가 자주 발생하는 이유는브랜치를 병합할 때 작업 공간과 스테이징 영역이 "깨끗"해야 하기 때문입니다. 위의 요구 사항을 충족하는 방법에는 두 가지가 있습니다

  • 변경 사항 제출

  • Staging

여기에서는 임시 저장 방법을 사용하여 설명합니다

$ git stash
$ git checkout master
Switched to branch 'master'
로그인 후 복사

当你切换分支的时候,Git 会重置你的工作目录,使其看起来像回到了你在那个分支上最后一次提交的样子。

现在,我们新建fixbug分支,在这个分支上修复bug。

$ git checkout -b fixbug
로그인 후 복사

合并分支

修复完成且测试通过时,就可以把它合并到master上了。合并使用git merge 分支名

$ git checkout master Switched to branch 'master' 
$ git merge fixbug
로그인 후 복사

删除分支

这个时候,fixbug功能已经完成了,可以将它给删除掉了。

$ git branch -d fixbug 
Deleted branch fixbug (was cca73bb).
로그인 후 복사

现在,我们可以继续在dev分支上工作了。我们需要把之前暂存的内容取出来。

$ git checkout dev

$ git stash pop
On branch dev
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   login.php

no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (2f8476defbaa813e31f3e1b081f5b88416b2ff50)
로그인 후 복사

新功能完成后,提交到版本库。

버전 관리 도구 Git - 지점 관리

冲突解决

现在我们新的功能完成了,那么就可以把它合并到master分支上了。现在我们来演示合并时遇到冲突时,如何去解决。

$ git checkout master
Switched to branch &#39;master&#39;

$ git merge dev
Auto-merging index.php
CONFLICT (content): Merge conflict in index.php
Automatic merge failed; fix conflicts and then commit the result.
로그인 후 복사

提示我index.php合并的时候有冲突,我们来看看该文件

$ cat index.php
<?php

<<<<<<< HEAD
echo &#39;hello world&#39;;
=======
echo &#39;version 1.1 finished&#39;;
>>>>>>> dev
로그인 후 복사
<br/>
로그인 후 복사
$ cat index.php 
<?php 
echo &#39;version 1.1 finished&#39;;
로그인 후 복사

然后再add并提交,最后在提交

$ git commit -m &#39;merge dev&#39;
로그인 후 복사

这个时候就合并成功了,现在就去删除dev分支吧。

$ git branch -d dev
로그인 후 복사

위 내용은 버전 관리 도구 Git - 지점 관리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

H5 프로젝트를 실행하는 방법 H5 프로젝트를 실행하는 방법 Apr 06, 2025 pm 12:21 PM

H5 프로젝트를 실행하려면 다음 단계가 필요합니다. Web Server, Node.js, 개발 도구 등과 같은 필요한 도구 설치. 개발 환경 구축, 프로젝트 폴더 작성, 프로젝트 초기화 및 코드 작성. 개발 서버를 시작하고 명령 줄을 사용하여 명령을 실행하십시오. 브라우저에서 프로젝트를 미리보고 개발 서버 URL을 입력하십시오. 프로젝트 게시, 코드 최적화, 프로젝트 배포 및 웹 서버 구성을 설정하십시오.

Beego ORM의 모델과 관련된 데이터베이스를 지정하는 방법은 무엇입니까? Beego ORM의 모델과 관련된 데이터베이스를 지정하는 방법은 무엇입니까? Apr 02, 2025 pm 03:54 PM

Beegoorm 프레임 워크에서 모델과 관련된 데이터베이스를 지정하는 방법은 무엇입니까? 많은 Beego 프로젝트에서는 여러 데이터베이스를 동시에 작동해야합니다. Beego를 사용할 때 ...

Gitee Pages 정적 웹 사이트 배포 실패 : 단일 파일 문제를 해결하고 해결하는 방법 404 오류? Gitee Pages 정적 웹 사이트 배포 실패 : 단일 파일 문제를 해결하고 해결하는 방법 404 오류? Apr 04, 2025 pm 11:54 PM

GiteEpages 정적 웹 사이트 배포 실패 : 404 오류 문제 해결 및 해결시 Gitee ...

GO의 어떤 라이브러리가 대기업에서 개발하거나 잘 알려진 오픈 소스 프로젝트에서 제공합니까? GO의 어떤 라이브러리가 대기업에서 개발하거나 잘 알려진 오픈 소스 프로젝트에서 제공합니까? Apr 02, 2025 pm 04:12 PM

GO의 어떤 라이브러리가 대기업이나 잘 알려진 오픈 소스 프로젝트에서 개발 했습니까? GO에 프로그래밍 할 때 개발자는 종종 몇 가지 일반적인 요구를 만납니다.

Redis Stream을 사용하여 GO Language에서 메시지 대기열을 구현할 때 User_ID 유형 변환 문제를 해결하는 방법은 무엇입니까? Redis Stream을 사용하여 GO Language에서 메시지 대기열을 구현할 때 User_ID 유형 변환 문제를 해결하는 방법은 무엇입니까? Apr 02, 2025 pm 04:54 PM

Go Language에서 메시지 대기열을 구현하기 위해 Redisstream을 사용하는 문제는 Go Language와 Redis를 사용하는 것입니다 ...

H5 페이지 생산에는 지속적인 유지 보수가 필요합니까? H5 페이지 생산에는 지속적인 유지 보수가 필요합니까? Apr 05, 2025 pm 11:27 PM

코드 취약점, 브라우저 호환성, 성능 최적화, 보안 업데이트 및 사용자 경험 개선과 같은 요소로 인해 H5 페이지를 지속적으로 유지해야합니다. 효과적인 유지 관리 방법에는 완전한 테스트 시스템 설정, 버전 제어 도구 사용, 페이지 성능을 정기적으로 모니터링하고 사용자 피드백 수집 및 유지 관리 계획을 수립하는 것이 포함됩니다.

XML을 Excel로 변환하는 방법 XML을 Excel로 변환하는 방법 Apr 03, 2025 am 08:54 AM

XML을 Excel로 변환하는 두 가지 방법이 있습니다 : 내장 Excel 기능 또는 타사 도구 사용. 타사 도구에는 XML to Excel Converter, XML2Excel 및 XML Candy가 포함됩니다.

GO 프로그래밍에서 MySQL과 Redis 간의 연결을 올바르게 관리하고 릴리스하는 방법은 무엇입니까? GO 프로그래밍에서 MySQL과 Redis 간의 연결을 올바르게 관리하고 릴리스하는 방법은 무엇입니까? Apr 02, 2025 pm 05:03 PM

GO 프로그래밍의 자원 관리 : MySQL 및 Redis는 특히 데이터베이스 및 캐시를 통해 리소스를 올바르게 관리하는 방법을 배우는 데 연결 및 릴리스 ...

See all articles