-
Git4 - SourceTree (4)Collaboration생활코딩 Git 2021. 11. 8. 16:01
https://youtube.com/playlist?list=PLuHgQVnccGMCeAdpRidv18VRVS8mqzFdS
GIT4 - SourceTree 협업
www.youtube.com
------------------------------------------------
@git4 협업 수업소개
git은 여러 개의 저장소를 연결시켜 상호간에 동기화시킬 수 있다.
->서로 다른 사람들이 각각의 저장소에서 작업하고, 모아서 하나의 프로젝트를 할 수 있는 협업의 도구로 git을 쓸 수 있다.
내부적으로는 branch가 사용, 뒷시간에 설명
--------------------------------------------------------------------------------------------------------------------
@
근데 탐색기에서 지워버리니까 아 .git까지 다 지워서 없어졌구나
[이거 내가 프로젝트 생성한거 깃허브에 처음 올리는 법인 듯?].
github.com에서 오른쪽 위에 +누르고 new repository.
만들면 저장소의 고유한 주소를 카피해서(SSH를 했네)
▽폴더에 .git이 있어야 열기가 되나보네( -> 아래 과정에서 create 추가 )
소스트리 -> 저장소 Repository -> 저장소설정 -> add
디폴트원격체크, URL 경로에 넣고 이대로 OK
이러면 지역저장소가 원격저장소랑 연결된 상태. 푸쉬 -> 버전체크 -> 인증문제 해결하면 잘 올라감.
--------------------------------------------------------------------------------------------------------------------
@같이 작업하기
권한을 줘야함.
Settings -> 강의랑은 좀 바뀌었는데 지금은 Manage access 에서 Invite a collaborator인가봄. github아이디 입력
그럼 그 사람에게 이메일이 가는데 이메일 확인해서 링크 누르고 수락하면
이제 둘다 저장소에 접근할 수 있다.
근데!@
계정 두 개를 만드는건 힘드니까 폴더 두 개를 만들고 다른사람이라고 생각하겠대
저장소의 고유한 주소를 아는데 소스트리의 탭+ 누르고 Clone을 누르면
거기에 URL을 입력하고 아래에는 내 컴퓨터 저장소의 폴더를 입력하면 원격저장소에 있는 내용을 그 디렉토리에도 가져올 수가 있대
그럼이제 a, b 폴더 모두 github의 저장소에 연결돼있는것임.
--------------------------------------------------------------------------------------------------------------------
@
a : 버전만들고 커밋하고 푸쉬 하면 올라가짐.
b : 원래 작업하기전에 Pull하는게 제일 맞지만, 작업하고 있는동안 올릴수도 있고 그럼.
b가 올릴때 같은 파일의 같은 행을 수정했으면 푸쉬가 거절당함.
그럼 이제 풀을 눌러야함. 여기서 충돌처리를 하네 푸쉬아니고 풀때
충돌이 났다고 뜨는거 눌러보면 헤드말고 다른게 풀 한 원격저장소의 내용임.
전문화된 병합툴을 쓰거나,
내가한게 맞으면 mine을 누르거나
원격저장소에 있는게 맞으면 Theirs
직접 수정하고 Mark Resolved (마킹한다고)
커밋을 늦게하는 사람이 이런일을 해야함.
그래서 커밋을 빨리하게 돼있음. 그리고 버전을 최소한의 단위로 만들게 촉진함 git이. 안그러면 자기가 충돌을 해결해야하니까. 결과적으로 조직이 커뮤니케이션을 자주하게되는 약으로 작용.
병합된 결과를 만드는 커밋이라고 해서 머지커밋이라고 함.
이거 한다음 푸쉬가 된다는게 왜 푸쉬가 안된거였냐면 저쪽 버전이 없어서 안된거였네(원격저장소에 당신이 지역저장소에 갖고 있지 않은 버전이 있기 때문에 거절이었다 git pull을 하세요!라고 떴었어)
▽푸쉬에서 처리를못하는게 이것 때문인가 원격저장소의 내용이 더 많으면 거절되는 그런거? 그 원격저장소의 버전을 받았으니까 괜찮은것같은데
풀 커밋 푸쉬를 짧게짧게 할수록 충돌 날 가능성이 적어짐. 효율성이 높아져. git이 조직의 소통을 원활하게도 함
--------------------------------------------------------------------------------------------------------------------
@원격 브렌치와 fetch(가져오다)
fetch : pull과 같은 듯 다른 듯
위에거 하다보니 master와 origin/master 가 보인다
= 내 지역저장소의 master, 원격저장소의 master
내꺼 커밋하면 master가 한단계 앞서간다. origin master라고 하는건 원격저장소에서 가져온 마지막 버전을 의미.
그럼 푸쉬를 하면 origin master가 한칸 위로 올라가서 다시 똑같아짐. origin master의 마지막 부분이 work3다!
fetch를 하게되면 원격저장소의 내용을 갖고오기만하고 내 지역저장소와는 병합하지 않는다.
가져온걸 우클릭하고 병합 선택하면 마스터가 한칸 올라오게된다
origin master는 master와 형식자체는 똑같다. 원격저장소가 현재 어디에있는가를 가리키는 용도, 저 체크눌러서 가리면 안보임. 쟤 자체도 브랜치다. 병합하는걸 통해서 같은 상태로 만들 수 있어.
pull = fetch(지역저장소로다운) + merge(병합)
fetch는 병합을 하기전에 테스트를 해볼 수도 있어. 브랜치를 하나 더 따서(그럼 마스터와 같은 내용)
그럼 이제 test브렌치로 origin master를 머지해보는거야. 그리고 충돌이 일어나건 뭘하건 다 해결하고
마스터에서 test브랜치를 병합하는것임. -> 모든 애들이 다 같은 위치가 됨 -> test삭제
--------------------------------------------------------------------------------------------------------------------
@pull request
git이 자체적으로 갖고있는건 아니고 깃허브같은애들이 제공하는 유명한 기능.
내걸 댕겨가주세요 라고 요청하는 기능이다.
어떤 소스가 오픈소스라면 다른사람들도 자유롭게 PULL할 수 있다. 하지만 PUSH는 못해.
근데 뭔가 도움만 받기는 그렇고 내가 도움이될 수 있을 것 같은거야
-> 내것을 PULL해가세요 하고 REQUEST하는것임. 원격저장소에게
권한이 없는 사람도 주인이 허락할 때 변경사항을 제공할 수 있다.
두가지 조건이 필요함
서로 다른 계정이 두 개 필요
+의 New organization을 통해 새로운 계정을 만들 수도 있다.
Fork - 내가 만들지 않은 다른사람의 저장소를 복제해서 마치 내것인것처럼 마음대로 하겠다.
Clone or Download = 지금의 Code인가봄. 거기에있는 SSH를 복사해서
소스트리에서 Clone(깃허브내용그대로복사해서 로컬로가져옴)이라는걸 누름. 방금 포크된 저장소를 선택하고 내 컴퓨터의 폴더를 만들어 Clone. 이거하면 생활코딩에선
--------------------------------------------------------------------------------------------------------------------
@
--------------------------------------------------------------------------------------------------------------------
'생활코딩 Git' 카테고리의 다른 글
Git3 - CLI (3)Backup (0) 2021.12.19 Git3 - CLI (2)branch & conflict (0) 2021.12.11 Git3 - SourceTree (3)Backup (0) 2021.11.08 Git3 - SourceTree (2)branch & conflict (0) 2021.11.08 Git2 - SourceTree (1)Version Control (0) 2021.11.08