과제를 수정할때 망치면 안되니깐 최종, 진짜최종, 찐찐찐최종,,,, 이런식으로 여러개의 파일을 만들어 본 경험이 있을것이다.
그런데 이 방법의 문제점은??
-> 저장해야 할 파일이 많아지고 지저분해진다
-> 각 파일마다 어떤 수정사항(변경점)이 있는지 명확하게 확인이 안된다
그럼 복사본을 만들지 않고 하나의 폴더 내에서 계속 수정기록을 남길수는 없을까??
-> git을 사용하면 하나의 폴더 내에서 코드의 변경점을 기록!! 할수있다
git 이란?
- 하나의 폴더 내에서 코드의 변경점을 기록!! 할수있다
- 문제가 생겼을때 언제든지 특정 지점으로 다시 되돌아 갈수있다
- 개발자들이 프로그램과 관련된 파일들을 저장하고 공유하는데 사용
- 이러한 특징때문에 git을 "버전관리도구", "형상관리도구" 라고 한다
이제 과제를 하다가 과제를 저장한 컴퓨터가 고장이... 났다고 해보자..
우리는 이런 불상사를 방지하기 위해서 드라이브,클라우드 등을 사용하여 백업을 해놓을것이다
이렇게 파일을 저장하면 함께 작업하는 팀원들과도 쉽게 공유할수있다
이런 드라이브. 클라우드와 같은 역할을 하는것이 github다!!
github 란?
- 백업과 공유가 가능한 "온라인 코드 저장소"
- 내 코드를 github(온라인 저장소)에 백업할수있다
- 팀원들과 협업할때 내 코드를 공유할수있다
- 함께 작업이 가능하다
Q. git과 github는 왜 사용할까?
git
-> 코드 변경점을 기록하기위해
github
-> 내 코드를 온라인에 백업하거나 다른사람과 협업하기 위해
git은 코드를 기록하는것! 이라고 했는데
코드를 기록하기 위해 git의 명령어를 알아햐한다
git 명령어를 알아보기 전에 리눅스 필수 명령어도 알아두면 도움이 된다
<리눅스 필수 명령어>
https://coding-juuwon2.tistory.com/204
필수 리눅스 명령어 정리
1. pwd print working directory의 약자 현재 내가 작업하는 폴더를 보여달라는 뜻 2. ls list의 약자 현재 위치의 모든 파일 및 폴더리스트를 보여달라는 뜻 3. ls -a a는 all의 약자 - 는 ls의 추가 기능을 사용
coding-juuwon2.tistory.com
git 명령어
- git init
init은 initialize(초기화하다, 초기 설정하다)의 줄임말로,
프로그래밍을 git으로 관리하기위해 딱 한번만 입력하면 되는 명령어다
git init 명령어를 입력후 엔터누르기
initialized empty Git repository in ~~~ 이라고 나오면 성공!
ls -al (현재 폴더에 모든 파일 및 폴더 보여줌) 이라는 명령어 입력후 확인해보면, .git이라는 폴더가 생긴것을 확인할수있다. 이제 내 프로젝트에 git이 생긴것이다
.git이라는 곳에서 코드 변경을 계속 추적할것이다!
.git이라는 폴더가 생겼으면 이 프로젝트에서는 더이상 git init명령어를 입력할 필요가 없다
Q. 명령어는 개발 프로젝트 시작 시 딱 한 번만 입력하면 된다?
-> Yes
Q. git init 을 하면 현재 프로젝트에 어떤 변화가 일어나나요?
-> .git이라는 폴더가 생기고, 이때부터 코드변경을 git에서 추적함
- git add 와 git commit <코드변경 저장>
이제 실제로 변경된 코드를 저장해보는 작업을 해볼것이다
터미널에 git add <파일명> 과 get commit -m "메시지"를 입력해보자
메시지에는 수정사항을 적는것이 나중에 확인하기 좋다(ex. 로그인 기능 구현, 스플레시 페이지 구현,,,)
git add와 git commit은 차이가 있는데
저장하고 싶은 파일을 지정!!하는 것이 git add 명령어이고,
실제로 저장!!하는 것이 git commit 명령어다
실제로 저장됐는지 확인해보고 싶으면 git status 명령어를 입력하면된다
git status는 어떤 파일이 add, 변경됐는지, 현재 브랜치명 등이 확인가능한 명령어다
근데 변경한 파일이 100개,200개 가까히 된다면 모든파일을 다 이렇게 입력해주기 힘들것이다
이럴땐 git add. (점!!!)을 사용해서 현재 폴더(디렉토리)안에 있는 모든 파일들을 저장해줄수있다
파일 두개를 변경후 git add. 를 통해 2개를 전부 저장해주고, git commit을 사용해서도 저장해준다
git status 명령어를 입력해서 확인해보면 commit할 파일이 없다고 뜬다. 즉, 모든 파일의 변경사항을 저장했다는 뜻이다
Q. git add와 git commit의 차이는?
-> git add란 저장할 파일을 지정! 하는것
-> git commit이란 실제로 저장! 하는것
Q. git status는?
-> 어떤 파일이 add 됐는지, 어떤 파일이 변경됐는지, 현재 브랜치명 확인 등 확인 가능한 명령어
- git log
내가 저장한 커밋 내역을 보고싶다면?
git log라는 명령어를 입력해준다
그러면 이렇게 이전에 입력한 커밋내역을 확인할수있다
커밋 메세지를 보고, 어떤 변경점이 있었는지 쉽게 예측할수있다
또 여기에 있는 커밋id를 이용하여 과거의 코드저장 시점으로 되돌아갈수도있다
이제는 Github에 내 코드를 올리는 방법을 알아볼것이다
먼저 깃허브에 올리기 위해선 깃허브 레포지토리를 만들어야한다
1) 첫번째 방법
- github 레포지토리를 만들고, 내 코드를 github 레포지토리에 업로드
깃허브 홈페이지에 들어간후 New버튼 클릭 -> Repository name 입력 후 Create repository 클릭
이렇게하면 생성된 깃허브 레포지토리를 확인할수있을것이다
github에 들어가서 박스쳐논 명령어들을 복사한다
터미널로 돌아가서 이 코드들을 붙어넣어준다
깃허브로 돌아와 확인해보면 코드가 잘 올라가있는것을 확인할수있다
2) 두번째 방법
프로젝트를 처음 만들면 VCS가 나올텐데,
VCS -> Share Project on Github 클릭
그러면 이런화면이 나올텐데 앱설명을 쓰고 Share를 눌러준다
만약 private하게 하고싶다면 private체크박스를 체크해주면 된다
Commit Message에 입력할 내용을 적고(지금은 초기니깐 initial commit으로 해준다) Add를 눌러준다
마찬가지로 잘 업로드 되는것을 볼수있다
- 수정된 코드를 github에 백업하기 (git push)
코드를 수정했으면 git add와 git commit 명령어를 입력하여 저장한후,
git push origin <브랜치명> 을 입력해서 수정된 코드를 github에 업로드 시켜준다
그러면 수정된 코드가 github에 올라간것을 확인할수있을것이다
git push origin <브랜치명>
ex) git push origin main
github로 협업하기
먼저 팀장이라면 팀원들을 collaborator(협력자)로 등록해서 팀원들도 프로젝트를 가져올수있게 해야한다
아래 눌러보면 자세하게 기록해두었다
https://coding-juuwon2.tistory.com/198
[Github] 다른사람에게 변경권한 주는 방법
깃허브 저장소를 처음 만들었을 때는 저장소를 만든사람만 관리자 권한을 갖고있기 때문에 팀프로젝트를 하기위해서는 다른팀원들에게도 권한을 부여해주는 작업을 해야한다! 먼저 해당하는
coding-juuwon2.tistory.com
- git clone
협업하기 위해서는 먼저 프로젝트를 가져와야지 코드를 수정할수있을것이다
github에 있는 프로젝트를 가져오는(복제해오는) 명령어가 git clone이다
1) 첫번째 방법
먼저 대표자 github주소를 복사해온다
터미널을 열어 git clone <github주소>. 점!!빼먹지말기 명령어를 입력해준다
이렇게하면 깃허브에 있는 프로젝트가 잘 들어와 있는것을 확인할수있다
2) 두번째 방법
터미널에서 안하고 다른방법으로 github에 있는 프로젝트를 가져오는 방법도 있다
안드로이드 스튜디오 내에서 New -> Project from Version Control을 클릭한다
그러면 이런창이 나올텐데 URL부분에 아까 복사한 대표자의 github주소를 붙여넣은 후, clone버튼을 클릭하면
똑같이 깃허브에 있는 프로젝트가 잘 들어와있는것을 볼수있다
- git pull
프로젝트를 받아왔으면 팀원들도 같이 수정을할텐데, 이렇게 팀원들이 수정해서 깃허브에 push해놓은 코드들을 내 프로젝트에도 적용해야한다
이때 사용하는 코드가 git pull이다
터미널에서 사용하는 방법은 아래와 같이 입력하면 된다
git pull origin <브랜치명>
ex) git pull origin main
안드로이드 스튜디오 내에서 pull을 하는 방법도 있는데
Git -> pull을 클릭해준다
그럼 아래와같이 뜰텐데 pull을 눌러주면 된다
충돌할 위험이 있어서 일단 git pull을 통해 최신코드를 내 코드에 적용시키고, 그다음 git push를 해야 충돌이 일어나지 않는다
# 갑자기 충돌이 발생하는 이유는 뭘까?
-> git pull 명령어 자체가 git fetch와 git merge를 합쳐놓은것이기 때문이다.
git fetch는 원격저장소에 있는 commit중 로컬에 없는 신규 commit을 가져오는 것이고, 그 후에 merge(병합)를 하기 때 문에 충돌이 발생하기도 하는것이다
긍까 pull을 하면 먼저 내 저장소에 없는 코드를 먼저 가져온뒤, 내 코드와 병합을 한다!!
따라서 같은파일의 같은위치에 코드가 변경되면 충돌이 일어나는것이다
이럴땐 코드를 변경한 팀원과 상의해야할것이다
+) 깃허브 레포지토리에 코드 수정한뒤 커밋, 푸쉬하는 다른 방법
위에서 한 방식대로 프로젝트를 만들자 마자 깃허브 레퍼지토리를 만들고, 깃허브 레포지토리에 코드를 등록을 해놨다면 안드로이드 스튜디오에 체크표시같은게 뜰것이다
이 체크표시를 클릭해준다
그럼 이런창이 나올건데 수정한 코드의 설명을 적어준다
그리고 저장소에만 저장하고싶으면 commit버튼을 클릭, 저장소에 저장과 깃허브 업로드를 동시에 해주고싶으면 commit and push 버튼을 클릭하면 된다. 나는 보통 동시에 하는게 편해서 commit and push를 많이 사용하는것같다
commit and push버튼을 누르면 아래와같이 나타나는데 push버튼을 누르면 된다
이렇게하면 수정한 코드가 내 저장소에도 저장되고( commit ), 깃허브 레포지토리에도 잘 올라가게 된다 (push)
깃허브에 들어가서 확인해보면 수정된 코드가 잘 반영되어있다!!!
'개발 노트' 카테고리의 다른 글
Github - 코드리뷰하는 법 (0) | 2024.03.08 |
---|---|
Git 협업 - 브랜치 (0) | 2024.03.08 |
필수 리눅스 명령어 정리 (0) | 2024.02.29 |
[Github] Repository Public / Private 전환 (0) | 2024.02.27 |
[Github] 다른사람에게 변경권한 주는 방법 (0) | 2024.02.27 |