한번씩 읽고 가세요.
“ 지연되는 프로젝트에 인력을 더 투입하면 오히려 더 늦어진다. ”
- Frederick Philips Brooks
Mythical Man-Month 저자
Git
브랜치
브랜치란 독립적으로 어떤 작업을 진행하기 위한 개념입니다. 필요에 의해 만들어지는 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있습니다.
통합 브랜치
통합 브랜치란 언제든지 배포할 수 있는 버전을 만들 수 있어야 하는 브랜치 입니다. 그렇기 때문에 늘 안정적인 상태를 유지하는 것이 중요합니다. 여기서 '안정적인 상태'란 현재 작업 중인 소스코드가 모바일에서 동작하는 어플리케이션을 개발하기 위한 것이라면, '그 어플리케이션의 모든 기능이 정상적으로 동작하는 상태'를 의미합니다.
만약 이 어플리케이션에 어떤 문제가 발견되어 그 문제(버그)를 수정한다던지 새로운 기능을 추가해야 한다던지 해야할 때, 바로 '토픽 브랜치(Topic branch)'를 만들 수 있습니다. 처음에는 보통 통합 브랜치에서 토픽 브랜치를 만들어 냅니다.
일반적으로 저장소를 처음 만들었을 때에 생기는 'master' 브랜치를 통합 브랜치로 사용합니다.
토픽 브랜치
토픽 브랜치란, 기능 추가나 버그 수정과 같은 단위 작업을 위한 브랜치 입니다. 여러 개의 작업을 동시에 진행할 때에는, 그 수만큼 토픽 브랜치를 생성할 수 있습니다.
토픽 브랜치는 보통 통합 브랜치로부터 만들어 내며, 토픽 브랜치에서 특정 작업이 완료되면 다시 통합 브랜치에 병합하는 방식으로 진행됩니다. 이러한 토픽 브랜치는 '피처 브랜치(Feature branch)' 라고 부르기도 합니다.
status ==확인
파일의 상태를 확인하는 명령어 git status
커밋된 파일 & 스테이지에 있는 파일 : tracked
그 외 : untracked
add ==추가
작업 폴더에서 작업한 변경을 stage에 올릴 때 사용하는 명령어
add한 파일이 tracked 상태가 됨(git이 관리하는 대상이 됨)
파일을 지정해서 올릴 수도 있고, git add 파일이름
경로를 지정해서 변경된 모든 파일을 올릴 수도 있음 git add . (.) 요게 전체인듯 하다
git add 명령어로 스테이지에 추가한 수정 파일을 git 저장소에 저장
주의! 스테이지에 올려놓지 않은(untracked) 파일은 커밋되지 않음
git commit -m"기록(날짜든 시간이든 무엇이든!)"
push ==밀어넣기
commit한 파일을 원격 저장소에 올리는 명령어
git push <원격 저장소 이름> <브랜치 이름>
변경 없이 같은곳만 쓰면 고냥 git push만 해도 올라갑니다!
fetch ==가져오기
로컬에는 없지만 원격 저장소에 올라가 있는 데이터를 모두 가져옴(업데이트라고 보면 됨)
자동으로 merge 작업을 하지는 않음
git fetch <원격 저장소 이름>
브랜치 병합
현재 작업 중인 브랜치에 합칠 커밋을 지정해서 병합
<commit> 위치에는 주로 병합할 branch 이름을 넣고, 커밋 체크섬을 넣어도 됨(숫자랑 영어로 조합된 40글자 SHA-1 해시 값, 커밋 고유 번호)
pull ==가져와서 병합하기
원격 저장소의 데이터를 가져오고, 자동으로 현재 작업하는 로컬 브랜치와 merge
fetch + merge
push 하기 전에 pull을 하지 않으면 이미 원격저장소에 변경사항이 일어났을 때 push에 실패함, 수시로 원격저장소에 있는 변경사항을 pull 받는 것이 충돌 예방에 최선임!
브랜치 전환
예를 들어 현재 feature 브랜치에서 작업을 하다가 develop 브랜치로 전환을 하려면 아래와 같이 명령어를 실행하면 됨
Git 오류
- failed to push some refs to ...
원인
1.어떠한 경로였든 git 저장소 안의 파일이 변경되었음.
2.내가 푸쉬하려고 하는 Desktop안의 폴더는 저장소에서 변경된 사항을 반영하지 못하고 있던 상태였다.
해결법
1. git pull을 통해 저장소 안에서 변경된 내용을 받아와서 내가 푸쉬하려는 폴더 안의 내용과 일치시킨다.
2 .강제로 push 해버리기 = git push -u origin +master
https://intshc.tistory.com/50 다른 오류들 참고