맥 커멘드 창에서부터 git으로 명령어를 사용하여 깃 repository에 commit, push와 같은 작업들을 해줘보자.
커멘드창 자체에 그리 익숙해져있지 않았기 때문에 꽤 어려웠지만, 한번 터득하니 할만했다.
Git 기본 명령어 실습
- 명령어 cd : 원하는 디렉토리로 이동시켜준다.
- 명령어 cd .. : 현재 있는 디렉토리의 상위 디렉토리로 빠져나간다.
우선, 원격 저장소를 만들고자 하는 로컬 저장소의 주소를 찾아간다.
- 명령어 git status : 현재 깃이 연동되있는 상태를 보여준다.
해당 디렉토리에 repository가 없어서 not a git repository라고 뜬다.
- 명령어 git init : 해당 디렉토리에 git repository를 생성한다.
empty git repository를 만들었다고 출력된다. 실제로 파일탐색기에 들어가서 cmd + shift + . (맥북기준)을 눌러보면 .git이라는 숨김폴더가 생긴것을 확인할 수 있다.
git status를 찍어봤더니 두 개의 파일이 있고 아직 커밋이나 add된 파일이 없다고 뜬다.
- 명령어 git add : 커밋을 하기 전, 깃의 repository에 올릴 새로운, 혹은 수정된 파일을 대기열에 추가시키는 작업이다.
practice라는 메모장 파일을 git add를 통해 add한다.
add 후 git status를 통해 살펴보니 commit은 되지 않았지만 new file : practice.rtf라고, 대기열에 새로운 파일이 떴다.
- 명령어 git commit : add된 파일들을 commit한다.
- 명령어 git commit -m "new.txt add" : 여러개의 add된 파일중에서 new.txt와 같이 특정 파일만 commit하고싶을때
commit이 무엇인지에 대한 자세한 설명은 https://co-da-nam.tistory.com/32 에 있다.
대충 추가/수정된 파일들을 시간순에 따라 묶어 기록한다고 생각하면 된다.
커밋을 할 때는 시간순에 따라 저장되기 때문에 'first commit'처럼 커밋 메세지를 적어줘야 한다.
무엇을 수정했는지를 저장해주면 좋겠다.
- 명령어 git log : 전체 변경 이력을 조회한다. 언제 누구에 의해서 first commit이 일어났는지 확인할 수 있다.
Git Branch 명령어 실습
branch에 대한 설명 또한 https://co-da-nam.tistory.com/32이곳에서 볼 수 있다. 요약하자면 깃을 이용해 작업을 할 때 코드의 각 기능별로 따로 수정하고 추가하기 위함이다. 즉, branch는 작업을 분리할 수 있는 공간이다. 팀별로, 기능별로 branch를 나눌 수 있다.
깃허브에서 사용하는 대표적인 브랜치로는 gh-pages와 readme-edit이 있다. gh-pages는 깃허브에서 제공하는 홈페이지를 만들기 위한 모든 수정/추가 활동을 할 때 설정하고, readme-edit은 readme를 수정할 때 설정하는 브랜치이다.
예를 들어보자.
branch A : 한 쇼핑몰의 가장 안정적인 master branch
branch B : 모바일 쇼핑몰로 확장하기 위한 작업 코드용 branch
ㄴ branch O : 로그인할 때 홍채인식 기능을 추가하는 작업 branch
ㄴ branch X : 버그 수정용 branch
=> 나중에 master branch에 하나로 합친다.
=> 이 때, master branch 외에 새로운 기능을 구현한 branch는 Feature branch라고 한다.
- 명령어 git branch : 현재 내가 어떤 branch로 설정되있는지 확인한다.
master로 설정되있음을 알 수 있다.
- 명령어 git branch 새로운_branch_이름 : 새로운 branch를 생성한다.
생성 후 git branch를 해보면 new_branch가 추가되었음을 확인할 수 있다.
- 명령어 git checkout 이동하고자하는_branch_이름 : 다른 branch로 이동한다.
new_branch로 변경되었음을 확인할 수 있다.
- 명령어 git merge 합병하고자하는_branch_이름 : 내가 지금 설정되있는 branch로 합병하고자하는 branch를 합병한다.
위 코드의 경우 master branch로 설정이 되있는 상태였고, 거기서 git merge new_branch를 master branch로 합병시켜주었다.
이 경우 new_branch에서 수행된 add, commit등의 활동들도 master로 합병된다.
Remote 저장소 추가 및 관리
- 명령어 git remote add 저장소_이름 원격저장소_주소 : 로컬 저장소와 원격 저장소 (Github/외부 서버)를 연결한다.
- 명령어 git remote : 원격 저장소 목록을 저장소 이름으로 보여준다.
- 명령어 git remote -v : 원격 저장소 목록을 저장소 이름과 주소로 보여준다.
- 명령어 git clone : 원격 저장소의 branch를 그대로 로컬저장소로 가져온다.
31개의 파일을 가져왔다.
20200406HW repository가 내 로컬저장소에 무사히 클론된 것을 확인할 수 있다.
- 명령어 git pull 원격저장소이름 pull할_브랜치 : 다른사람들이 원격 저장소에 반영한(push) 내용을 로컬 저장소에 업데이트 한다.
- pull의 작업으로는 fetch와 merge가 있다.
- fetch : 원격 저장소에서 데이터 가져오는 것
- merge : 내가 가지고있는 로컬 저장소의 데이터와 비교해서 다른 부분을 합치는 것
마지막으로 git push로 로컬저장소에 있던 파일을 원격저장소로 push해주기 전에 add를 새로 해줬다.
위의 pull 작업을 안하고 바로 Push를 했더니 계속해서 에러가 났었다.
원격저장소와 로컬저장소의 상태가 달랐기 때문.
원격 저장소를 처음으로 로컬로 끌어들일땐 clone으로, 이미 remote repository를 등록했지만 수정으로 인해 상태가 다를땐 pull로 항상 같게 만들어주고나서 push 해줘야 한다.
add된 practice3.rtf를 commit 해줬다.
- 명령어 git push repository이름 branch : 올리고자 하는 원격저장소로 commit된 수정사항들을 push해준다.
Everything up-to-date! 모든 커밋이 push되었다.
'Programming > Lesson Learned' 카테고리의 다른 글
파이썬 크롤링할때 생기는 에러 [Connection Error] (0) | 2020.06.15 |
---|---|
맥에서 SourceTree로 git에 commit, push, clone 하기! (0) | 2020.04.12 |
git hub repository(저장소), branch, commit에 대하여 (0) | 2020.04.06 |