혼자 작업하기
git init a : a라는 디렉토리를 만든다
cd a : a 디렉토리 안에서 A라는 사람이 혼자 작업한다
nano work.txt > 1이라는 내용을 적는다
git add work.txt : stage area로 올린다
git commit -m "work 1" : 버전을 생성한다
백업을 하기 위해 원격저장소를 만든다
깃허브 > 저장소를 만든다> 주소 복사
git remote add origin 주소 : 지역 저장소에 원격저장소를 origin이라는 별명으로 추가한다
git push -u origin master : 지역 저장소의 master와 원격 저장소의 master를 직접 페어링(연결) 시켜준다.+ 업로드
여기서 오류가 뜬다
찾아보니 유저의 SSH가 등록되지 않아 접근권한이 없어서 생기는 문제라고 한다
->ssh키를 새로 생성하는 방법 (밑의 블로그를 보고 해결했다)
https://zeddios.tistory.com/120
>깃허브에 업로드 잘되었다.
같이 작업하기
-privite/ public 모두 승인해야 함
-셋팅에서 collaborators&team 탭으로 가서 메일로 협업자 추가한다
(2020.9.30 현재 해당 탭이 없어서 manage access 탭에서 추가했다. 밑은 도움을 준 블로그)
https://integer-ji.tistory.com/181
-Admin | Write (여기까지 개발자의 권한) | Read
-실습때는 서로 다른 저장소 사용해서 다른 개발자라고 가정하고 한다
(현재 실습하던 디렉토리=a, 새로운 디렉토리=b)
-hello-git-collaboration 디렉토리 안에 b라는 디렉토리를 클론한다
=git clone hello-git-collaboration깃허브 주소 b
협업할 때 push & pull 오류
디렉토리a
nano work.txt > 2a 파일 추가한다> 저장
git commit -am "work 2a" : 버전 만든다
git push : 원격 저장소로 올렸다
git log > 1 / 2a
↓
디렉토리b
(원래 git pull을 해야되는데 깜박함)
nano work.txt > 2b 파일 추가한다 > 저장
git commit -am "work 2b" : 버전 만든다
git log > 1/ 2b
git push 하면 > rejected : 원격저장소에 다른사람이 작업한 것이 있는데 pull 안했기 때문
git pull
cat work.txt >에러가 난다
nano work.txt (수동 수정) >a와 b의 내용을 포함하는 방향으로
git add work.txt : 파일의 충돌을 해결했다
git status : 잘 수정되어 커밋된 걸 볼 수 있다
git commit : 깃이 자동으로 커밋 메세지 만들어준다 > 2ab(바뀐내용) 기록해주면 더 좋다
git log : 새로운 2ab 확인가능
git push : 원격 저장소로 새로운 2ab 업로드
↓
디렉토리a
git pull : 수정된 내용 전체 원격 저장소에서 가져옴
↓
디렉토리 a, b
git log > 저장소의 상태가 동일하다
교훈 : 최대한 빨리 작업하고 push 자주해야 충돌 적다, 작업 할 떼 pull을 통해서 다른사람이 작업한 것 확인하는 것은 중요 > commit, push, pull을 자주하게 된다.
협업을 할 때 가장 먼저,
git pull -> commit -> push 한다
=git fetch -> git merge FETCH_HEAD -> commit -> push
디렉토리a
HEAD -> master : 지역 저장소의 마스터 브랜치
origin/master : 원격 저장소 중 origin 저장소의 마스터 브랜치
75ff : 마지막으로 마스터 브랜치의 어떤 버전을 가져왔는지 의미
nano work.txt > 3a 추가 > 저장
git commit -am "work 3a"
git log > 마스터 브랜치는 work 3a 가리킨다, origin 마스터 브랜치는 75ff 가리킨다
>우리의 마스터 브랜치가 origin 마스터 브랜치 보다 하나의 버전이 앞서 있다.
git status > push 해야한다고 뜬다
git push
git log > origin 마스터 브랜치가 우리의 마스터 브랜치와 같은 브랜치를 가리킨다
↓
디렉토리b
git fetch : (원격 브랜치만)당겨온다
cat work.txt > 3a의 내용이 없다!
git log
git status > 우리의 마스터 브랜치가 origin 보다 뒤쳐저 있다고 나옴 > git pull 하라고 함
| origin 마스터를 우리의 마스터 브랜치로 merge해도 된다 = git merge origin/master
git merge origin/master :
즉, git pull = git fetch: git merge origin/master
fetch를 통해서 원격 저장소만 업데이트하고, origin과 master를 merge한 것과 같은 효과를 낸다
.
.
(항상 어떤 브랜치와 병합할지 신경쓰는 것은 귀찮기 때문에)
.git/FETCH_HEAD : .git 안에 FETCH_HEAD라는 파일 만든다
cat .git/FETCH_HEAD > f72aeb는 원격저장소의 가장 최근에 merge한 내용
git fetch: git merge FETCH_HEAD : (.git/FETCH_HEAD를 했기 때문에) f72aeb을 참고해서 가장 최근에 fetch했던 내용을 merge해준다. > git merge origin/master 와 같은 기능이다 > 좀 더 편리함
결론 : 신중하게 git의 데이터를 가져오고 싶을 때, 결합은 나중에 하고 가져오는 것부터 하려고 할 때, fetch 사용한다.
복잡하면 그냥 pull쓰면 된다.
code review 도구들
Gerrit : 구글에서 안드로이드 프로젝트 실행.. 투표소..
github : 이슈 트레커, 인사이트(통계기능)
어떻게 팀에 git을 도입할 것인가?
-파일의 이름을 더럽히지 않아도 된다..ㅎ(최종,,최최종...)
-버전 간의 차이점 비교 가능
-과거~현재로 언제든지 돌아갈 수 있다
-5분 이내 발표
-최대한 익숙한 것처럼 소개하기(ex.드롭 박스랑 똑같아~)
-어려운 개념들을 말하지 말기
'Git, Github' 카테고리의 다른 글
생활코딩 : GIT -8.백업, 오류;;;;; (0) | 2020.09.03 |
---|---|
생활코딩 : GIT -7. 브랜치 심화 (0) | 2020.09.02 |
생활코딩 : GIT -6. 브랜치 : 3 way merge, git mergetool 이용하기 (0) | 2020.09.02 |
생활코딩 : GIT -5. 브랜치 : merge, conflict (0) | 2020.09.02 |
생활코딩 : GIT -4. 브랜치 사용법 (0) | 2020.09.02 |