Latest web development tutorials

힘내 지점 관리

거의 모든 버전 관리 시스템은 분기의 형태를 지원한다. 그것은 당신이 분리 개발의 메인 라인에서 분기를 사용할 수 있으며 작업을 계속하면서 메인 라인에 영향을주지 않습니다 것을 의미합니다.

누군가 힘내 분기 "열반의 특성"이라고 모델,하지만 정확하게는 가족을위한 힘내 버전 제어 시스템과 구별하기 때문이다.

분기 명령을 만듭니다

git branch (branchname)

분기 전환 명령

git checkout (branchname)

당신이 가지를 전환 할 때, 힘내 분기의 마지막 장의 스냅 샷은 작업 디렉토리의 내용을 대체 사용, 여러 가지 여러 디렉토리를 필요로하지 않습니다.

병합 지점은 명령 :

git merge 

당신은 통합 지점 여러 번에 병합 할 수 있습니다, 당신은 또한 합병 가지를 통합 할 직후 삭제하도록 선택할 수 있습니다.


힘내 지점 관리

목록 지점

기본 명령은 분기에 나열되어 있습니다 :

git branch

때 인수, 자식 지점은 해당 지역의 지점에 표시됩니다.

$ git branch
* master

이 경우에 우리는 "마스터"브랜치라는 것을 의미하며, 브랜치는 현재 브랜치이다.

당신이 자식 초기화를 실행하면 기본 힘내는 당신을위한 "마스터"지점을 만듭니다.

우리는 수동으로 지점을 만들려면 및 전환합니다. 할 수 있습니다 자식 분기 (BRANCHNAME)를 실행합니다.

$ git branch testing
$ git branch
* master
  testing

이제 우리는 새로운 지점 테스트와 함께 것을 볼 수 있습니다.

당신이 나중에 또 업데이트를 제출 한 후 "테스트"지점으로 전환 할 경우, 새로운 분기를 마지막으로 만든이 방식으로 업데이트를 제출하면, 힘내는 분기를 만들 때처럼 보이도록 작업 디렉토리를 복원합니다

다음으로, 우리는 가지를 전환하는 방법을 보여줍니다, 우리는 우리가 지점을 수정하려면 자식 체크 아웃 (지점)으로 전환했다.

$ ls
README
$ echo 'w3cschool.cc' > test.txt
$ git add .
$ git commit -m 'add test.txt'
[master 048598f] add test.txt
 2 files changed, 1 insertion(+), 3 deletions(-)
 delete mode 100644 hello.php
 create mode 100644 test.txt
$ ls
README		test.txt
$ git checkout testing
Switched to branch 'testing'
$ ls
README		hello.php

우리는 "테스트"분기로 전환 할 때, 우리는 새로운 파일 TEST.TXT은 원본 파일이 삭제 된 파일 hello.php이 등장했습니다 제거하고 추가 할 수 있습니다. "마스터"지점으로 다시 전환, 그들은 다시 등장했다.

$ git checkout master
Switched to branch 'master'
$ ls
README		test.txt

또한 새로운 지점을 만드는 자식 결제 -b (BRANCHNAME) 명령을 사용하여 바로 그 지점에서 동작하기 위해서, 분기로 전환 할 수있다.

$ git checkout -b newtest
Switched to a new branch 'newtest'
$ git rm test2.txt 
rm 'test2.txt'
$ ls
README		test.txt
$ git commit -am 'removed test2.txt'
[newtest 556f0a0] removed test2.txt
 1 file changed, 1 deletion(-)
 delete mode 100644 test2.txt
$ git checkout master
Switched to branch 'master'
$ ls
README		test.txt	test2.txt

당신이 볼 수 있듯이, 우리가 지점을 만든,이 지점의 맥락에서 일부 파일을 제거하고, 우리의 주요 지점에 다시 해당 파일을 다시 전환.

우리가 다른 상황에서 일을하고, 앞뒤로 전환 할 수 있도록 작동 별도의 절단 지점을 사용합니다.

가지를 제거

분기 명령을 제거합니다 :

git branch -d (branchname)

예를 들어, 우리는 "테스트"지점을 제거하려면 :

$ git branch
* master
  testing
$ git branch -d testing
Deleted branch testing (was 85fc7e7).
$ git branch
* master

분기 병합

분기가 독립적 인 콘텐츠가되면, 당신은 결국 다시 master 브랜치로를 병합 할 것입니다. 모든 분기 현재 분기로 병합에 다음과 같은 명령을 사용할 수 있습니다 :

git merge
$ git branch
* master
  newtest
$ ls
README		test.txt	test2.txt
$ git merge newtest
Updating 2e082b7..556f0a0
Fast-forward
 test2.txt | 1 -
 1 file changed, 1 deletion(-)
 delete mode 100644 test2.txt
$ ls
README		test.txt

우리가 지점의 주요 지점에 병합 newtest 것입니다 위의 예는 test2.txt가 파일이 삭제됩니다.

충돌 병합

결합 단순히 파일 제거 작업을 추가하지, 힘내는 변경 사항을 병합합니다.

$ git branch
* master
$ cat test.txt
w3cschool.cc

첫째, 우리는 과거에 "change_site"분기 스위칭라는 디렉토리를 만들고, 우리는 www.w3cschool.cc 만족 될 것입니다.

$ git checkout -b change_site
Switched to a new branch 'change_site'
$ vim test.txt 
$ head -1 test.txt 
www.w3cschool.cc
$ git commit -am 'changed the site'
[change_site d7e7346] changed the site
 1 file changed, 1 insertion(+), 1 deletion(-)
 

분기를 "change_site"에 제출 수정 된 내용. 이제 우리는 우리가 다시 TEST.TXT 파일을 수정하기 전에 우리의 수정 내용을 볼 수 반환 할 수 있습니다 "마스터"브랜치로 전환합니다.

$ git checkout master
Switched to branch 'master'
$ head -1 test.txt 
w3cschool.cc
$ vim test.txt 
$ cat test.txt
w3cschool.cc
新增加一行
$ git diff
diff --git a/test.txt b/test.txt
index 704cce7..f84c2a4 100644
--- a/test.txt
+++ b/test.txt
@@ -1 +1,2 @@
 w3cschool.cc
+新增加一行
$ git commit -am '新增加一行'
[master 14b4dca] 新增加一行
 1 file changed, 1 insertion(+)
 

이제 이러한 변경 사항은 분기 내 "마스터"에 기록되어있다. 다음에 우리는 지점 통합을 통해 "change_site"것입니다.

 $ git merge change_site
Auto-merging test.txt
CONFLICT (content): Merge conflict in test.txt
Automatic merge failed; fix conflicts and then commit the result.
$ cat test.txt 
<<<<<<< HEAD
w3cschool.cc
新增加一行
=======
www.w3cschool.cc
>>>>>>> change_site

우리는 "마스터"분기에 분기 이전에 병합합니다, 병합 충돌이 발생, 우리는 수동으로 수정해야합니다.

$ vim test.txt 
$ cat test.txt 
www.w3cschool.cc
新增加一行
$ git diff
diff --cc test.txt
index f84c2a4,bccb7c2..0000000
--- a/test.txt
+++ b/test.txt
@@@ -1,2 -1,1 +1,2 @@@
- w3cschool.cc
+ www.w3cschool.cc
 +新增加一行

힘내에서, 자식은 우리가 파일 충돌이 해결되었습니다 힘내에게 사용할 수있는 추가

$ git status -s
UU test.txt
$ git add test.txt 
$ git status -s
M  test.txt
$ git commit
[master 88afe0e] Merge branch 'change_site'

이제 우리는 성공적으로 병합 충돌을 해결하고, 그 결과를 제출했다.