Giit-flow란?

8157 단어 GitGitHub
git-flow는 플러그인입니다.
Vincent Dressen은 블로그에 작성된 "A successful Giit brancing 모델"의 분기 모델 가져오기를 단순화하는 간단한git 플러그인입니다.
참조 자료:
http://hm-solution.jp/lifehack/post2475.html
http://d.hatena.ne.jp/Yamashiro0217/20120903/1346640190

Giit-flow 이미지와 각 지점의 역할



master:


제품 발행의 지점으로 삼다.게시 후 태그.

develop:


개발 지점.코드가 안정되어 발표 준비를 마친 후 마스터에 통합됩니다.발행 전의 이 지점은 최신 판본이다.

feature branches:


기능을 추가합니다.개발자 지점에서 개발자로 통합합니다.

hotfixes:


릴리즈된 주요 오류와 같은 현재 제품의 버전을 수정할 수 있습니다.마스터 지점에서 마스터로 통합하고 라벨을 붙입니다.다음에 개발자에 통합합니다.

release branches:


제품 출시 준비.기능의 추가와 부차적인 오존과 통합하여 독립함으로써 발행 시 포함된 코드를 깨끗한 상태로 유지할 수 있다(기능 추가에 사용되지 않은 코드 등은 포함되지 않는다).개발자 지점에서 기본적으로 발표된 기능과 결함을 반영한 상태에서 개발자 지점에서발행 준비가 다 된 후 마스터에 합병하여 라벨을 붙인다.다음에 개발자에 통합합니다.

1. 로컬 창고에서 클론 만들기


공유 창고를 사용하여 개발할 때 작업 디렉터리를 복제하고 로컬로 생성합니다.이 클론은 거의 모든 로컬 복제 서버에 저장된 데이터를 복제합니다.이것은 프로젝트의 모든 파일의 모든 역사 기록이 당신에게 복사된다는 것을 의미합니다.
작업 디렉토리를 만드는 명령은 다음과 같습니다.
※ clone 이하는 GiitHub의https 등 URL을 입력하십시오.
git clone https://github.com/.git
현재 공유 창고에서 로컬로 작업 디렉터리를 만듭니다.
※ git clone 이후의 URL을 HTTPS로 설정하지 않으면 다음과 같은 오류가 발생합니다.
(SSH 오류 발생)
실행 결과(오류)
[vagrant@localhost ~]$ git clone [email protected]:SoneKosuke/pullreq.git
Initialized empty Git repository in /home/vagrant/pullreq/.git/
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
성공할 때는 다음과 같다.
실행 결과(성공)
[vagrant@localhost ~]$ git clone https://github.com/SoneKosuke/pullreq.git
Initialized empty Git repository in /home/vagrant/pullreq/.git/
remote: Counting objects: 7, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 7 (delta 0), reused 3 (delta 0)
Unpacking objects: 100% (7/7), done.

2. Giit-flow를 초기화합니다.


다음 명령을 실행하면 로컬 창고를 초기화할 수 있습니다.
실행하면 지부 이름 등을 물어 기본적으로 실수하면 된다.
모두Enter!
git flow init
실행 후 branch의 상태를 확인합니다.
git branch
실행 결과는 다음과 같습니다.
실행 결과
* develop
  master
※ 개발자 지점이 없을 경우 원격 창고에 데이터가 없습니다.
개발자 지점을 끊으려면 다음 명령을 실행하십시오.
git push origin develop

3. 기능 작성을 위해 Feature branch 차단


이 장은 개발진의 누군가가 진행하면 된다.
새 기능을 설치하기 전에 Feature branch를 닫습니다.
개발은 기본 Feature branch에서 수행됩니다.
여기, 새로운 브랜치의 이름은'top'입니다.
git flow feature start top
실행 결과
Switched to a new branch 'feature/top'

Summary of actions:
- A new branch 'feature/top' was created, based on 'develop'
- You are now on branch 'feature/top'

Now, start committing on your feature. When done, use:

     git flow feature finish top

성공했는지 확인해 봐.
git branch
develop branch부터 check kout,feature/top이 제작 & checkin에 성공하면.
실행 결과
  develop
* feature/top
  master
상기 명령으로 만든 지점은 개인 로컬에서 만든 것입니다.
이에 따라 GiitHub에는 반영되지 않았다.
이를 반영하기 위해서는 다음 명령push이 필요합니다.
git flow feature publish top
실행 결과
Already on 'feature/top'

Summary of actions:
- A new remote branch 'feature/top' was created
- The local branch 'feature/top' was configured to track the remote branch
- You are now on branch 'feature/top'

기릿허브에서 푸시인지 푸시인지 확인할 수 있다.
이 지점으로 개발해.

4. 개발 작업이 시작된다.Pull을 실행합니다.


직원은 원격 창고의 최신 데이터를 사용해야 한다.
(충돌을 일으키기 위해)
다음 명령을 사용하여 자동 창고의 최신 데이터를 Pull합니다.
git flow feature pull origin top
실행 결과
Pulled origin's changes into feature/top.
이 동작은 원격 top 지점을 얻을 수 있으며, 이를 바탕으로 로컬에feature/top 지점을 만들 수 있습니다.
그럼 개발 작업을 진행합시다.

5. 개발 작업이 완료되었습니다.add,commit,push


개발 작업이 어느 정도 완성되어 Push가 가능한 상태에 이르면
dd와commiit를 진행합니다.
다음 명령을 실행하면dd와commiit를 동시에 실행할 수 있습니다.
'hogehoge'는 태그입니다.변경 내용을 간단명료하게 기재해 주십시오.
git commit -am "hogehoge"
단독으로 실행할 때 아래 명령을 사용하십시오.
"hagehage"는 파일 이름입니다.'hogehoge'는 태그입니다.
git add hagehage.php
git commit -m "hogehoge"        
add와commiit가 완성되면push를 진행합니다.
push를 진행하면 로컬 창고의 데이터를 GiitHub로 높일 수 있습니다.
편집을 진행하는feature/top 지점입니다.
 git push origin feature/top
아래의 집행 결과가 나오면 성공할 것이다.
또 깃허브에서 push 여부를 확인할 수도 있다.
실행 결과
Counting objects: 4, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 285 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://[email protected]/SoneKosuke/git-flow-test.git
   1acc403..1c5c6ad  feature/top -> feature/top
리셋 후 push가 불가능할 때답장이 필요합니다.
다른 멤버들이 먼저 편집을 했기 때문에fast-forward가 아니다.

6. Reject에 의해 Push가 불가능한 경우


Rebase를 수행합니다.
Rebase를 통해 자체 변경 사항을 기준으로 branch로 결합할 수 있습니다.
아래 Lig의 기사는 이해하기 쉬우니 잘 모르는 분들은 참고하세요.
http://liginc.co.jp/web/tool/79390#m1
Rebase는 다음 명령을 통해 수행할 수 있습니다.
 git pull --rebase origin feature/top
pull-rebase를 진행하면 충돌이 있을 수 있습니다.
같은 줄을 다른 내용으로 변경했기 때문에 충돌이 발생했습니다.
경쟁이 있는 곳에서 지트는 차별을 삽입했다.
이 경우 수동으로 수정 데이터를 수정해야 한다.
변경해야 할 부분은 각 구성원과 협업하면서 변경한다.
충돌이 해결되면 git add는git rebase--continue를 수행합니다.
git add fizzbuzz.php 
git rebase --continue
rebase가 완성되면 push를 진행하고 작업이 끝납니다.

7. GiitHub에서 Pull Request 만들기


GiitHub에서 제작한pullreq의 창고 페이지를 열면push의 업데이트-readme 지점에 대한 정보가 나타날 것입니다.여기에 표시된Comporae &pull Request 단추를 누르면Pull Request 제작 페이지로 이동할 수 있습니다.

Pull Request 제작 페이지에서는 요청을 보낸 상대방(일반적으로 창고 관리자)에게 어떤 변경을 했는지 설명하는 내용을 작성합니다.

설명문을 작성한 뒤 화면 아래에 표시된 실제 제출 내용을 점검해 오류 유무를 확인한다.괜찮으면 "Create pull request"버튼을 눌러 Pull Request를 보냅니다.
Pull Request가 전송되었습니다.지금 만든 Pull Request가 발송된 페이지에 Open 상태로 표시되기를 원합니다.

8. GiitHub에서 Pull Request 병합


Pull Request 변경 사항에 문제가 없으면 병합합니다.
합병과 지점 삭제는 Git에서도 가능하지만 이번에는 GiitHub에서 실행됩니다.
github에서 병합할 때 "Merge pull request"→ "Confirm Merge"단추를 누르면 됩니다.


결합이 완료되면 브랜치를 삭제합니다.

여기까지.

좋은 웹페이지 즐겨찾기