GIT?
소프트웨어 공학을 공부하기 전까지 GIT은 참 생소했던 분야였어요. 아직도 생소하긴 합니다..
GIT은 여러 프로그래머들이 협업 할 수 있게 소스코드를 하나의 저장소로 관리할 수 있게끔 도와주는 형상관리 툴입니다. 예를 들면 프로그래머 A와 B가 있습니다. A는 A대로 소스코드를 막 만들고, B는 B대로 소스코드를 막 작성했다면 A와 B가 서로 작업한 내용을 합칠때 문제가 발생하게 됩니다. 회의했던 내용의 기능과는 좀 다르다든지, 서로 중복된 부분을 개발했다든지요 ㅇ-ㅇ 아.. 끔찍합니다. GIT은 A와 B가 한 공간에 소스코드를 모아두게 함으로써 이런 문제를 최소화 할 수 있습니다.
구조
Workspace는 작업중인 IDE 혹은 컴파일 직전의 소스코드가 존재하는 곳입니다. '작업장'이에요. Local Repository는 현재 자신이 사용중인 컴퓨터에 설정된 GIT 저장소를 의미합니다. 끝으로 Remote Repository는 깃 사이트에서 관리하는 저장소를 의미합니다.
git에 파일을 올린다는 건 자신이 작업한 소스코드(보통 Workspace에 존재합니다)를 local repository를 거쳐 remote repository로 전송한다는 것을 의미합니다. 반대로 git에 파일을 가져온다는 것은 깃 사이트에 있는 소스코드를 자신의 Workspace로 가져온다는 것을 의미합니다.
이때 eclipse나 visual studio등 IDE들은 Index과정까지 내부적으로 해주기 때문에 사용자는 commit과 push, pull 정도의 기능만 사용하면 손쉽게 깃헙에 올려진 자료를 가져오거나, 자신의 소스코드를 깃헙에 업로드 할 수 있습니다 ㅎㅎ
bash에서 자주 사용하는 명령어
명령어 | 설명 |
git init | 현재 디렉토리를 저장소로 설정 |
git status | 깃 저장소 상태를 확인 |
git add . | 현재 디렉토리의 모든 파일을 index에 추가 |
git commit -m "description' | index에 있는 파일들을 깃헙 로컬 저장소에 추가 |
git push -u origin master | 로컬 저장소의 파일을 원격 저장소로 전송 |
1 업로드할 폴더를 선택하기
업로드 하고싶은 폴더에 마우스 우클릭을 하면 'Git Bash Here' 이 뜹니다
GIT에 아이디만 갖고 계신분들은 GIT BASH를 따로 설치해주어야합니다 ^_^;
Git
git-scm.com
2 업로드할 폴더를 master로 설정하기
Git Bash Here 버튼을 누르면 Git Bash가 나옵니다.
git init 명령어를 이용해 업로드하기 원하는 폴더를 master로 만듭니다.
여기서 bash에 계정 설정이 안되어있으신 분들은 위와 같은 화면이 안뜰 수 있어요
이때는 아래의 명령어를 입력해줍니다
git config --global user.name "깃 사용자 아이디"
git config --global user.email "깃 이메일"
3. 로컬 저장소에 파일 올리기
git add .
git commit -m "Description"
원래 로컬 저장소에 있던것은 그대로 있고 수정된 부분만 반영됩니다~
4. 원격 저장소에 업로드하기
git push -u origin master
이 과정에서
![reject] master->master (fetch first)
error: failed to push some refs to '~~.git'
이런 에러가 나오고 push가 안되는 분들이 계실텐데요~
fetch first. 감이 오시나요? ㅋㅋ
로컬 저장소에서 원격 저장소로 데이터를 푸쉬할때 원격 저장소에 로컬 저장소가 갖고있지 않은 다른 파일이 올라와 있으면 위 에러가 발생합니다.
누군가가 먼저 깃에 push를 했거나 README 파일을 작성했을 경우인데요~
push를 하기전에 먼저 fetch를 해줍니다.
git pull origin master
명령어를 입력해줍니다.
그리고 다시 git push -u origin master 를 입력하고 GIT에 들어가서 자료가 올라와있는지 확인해주면 끝!!
+ 혹시 git pull origin master 명령어를 입력했는데 아래와 같은 에러가 뜬 경우에는
fatal: refusing to merge unrelated histories |
git pull origin master --allow-unrelated-histories
명령어를 사용해 다시입력해보세요!