Git, GitHub 시작하기-1
- KeyWord
- 작업공간
- Working directory
- Stage Area
- Local repository
- Remote repository
- 명령어
- 작업영역 만들기
- clone
- init
- 버전 만들기
- status
- commit
- add
- 원격 저장소
- push
- pull
- fetch
- 협업
- branch
- HEAD
- checkout
- merge
- conflict
- 기타
- restore
- reset
- tag
- rebase
- fork
- amend
- cherry-pick
- revert
- stash
- 작업영역 만들기
- 작업공간
가장 먼저 작업공간입니다. 4개의 영역이 있습니다.
- working directory
- 현재 작업하고 있는 공간
- Git이 관리하고 있지만, 아직 추적 ( track )하고 있지 않은 상태입니다.
- Stage Area(index)
- 준비 공간
- Git이 추적하고 있으며, 버전으로 등록되기 전 상태입니다.
- Local repository
- 저장소
- 본인 PC에 존재하는 저장소인 local repository
- Remote repository
- 원격저장소
- Ex) Github, Gitlab
그림을 보면서 설명하겠습니다.
크게 두개로 나누면 Local(자신의 PC)와 Remote(원격지, ex. Github)이 있습니다.
두개의 공간을 연결해서 업로드, 다운로드 해서 온라인에 공유하게 됩니다. 다른 사람들과 협업하거나 자신이 여러 컴퓨터에서 작업을 하거나 오픈 소스로 공개하기 위해, 백업해 놓기 위해서 Github이나 Gitlab같은 곳에 올려 놓게 됩니다.
그리고 로컬을 자세히 보면 단순히 내가 작업하고 있는 폴더를 Working directory라고 하고 그곳에서 버전관리를 시작하게 되면 .git이라는 폴더가 생기면서 git이 변경사항을 추적하고 버전을 만들 수 있도록 해줍니다. .git 폴더에 의해서 관리되는 부분을 Local repository라고 하고 하나의 버전을 commit이라고 합니다. commit을 만들기 위해 변경된 파일을 Stage에 올려주어야합니다. 그럼 git이 stage에 있는 변경내용들을 묶어서 하나의 커밋으로 만들어 줍니다.
커밋은 개발하고자 하는 기능 단위로 묶어서 만드는게 좋습니다.
그럼 작업공간을 만들기 시작해보겠습니다.
새로운 폴더를 만들어서 init 명령어로 초기화해서 github에 연결해도 되고, clone으로 원격지에 있는 것을 가져와도 됩니다. git clone해서 가져올게요.
# case 1
$ git init # Local repository 초기화
$ git remote add origin <Remote-repository-address> # github repository에 연결하기
# case 2
$ git clone <Remote-repository-address> # github repository 가져오기
github에 repository를 만들고 초록색으로 code라고 써있는 부분을 누르면 링크가 있을 겁니다. 그것을 복사해서 clone 명령어 뒤에 주소로 입력하면 됩니다. 그럼 아래처럼 .git폴더와 README.md파일이 담겨있는 폴더가 생성이 됩니다.
$ git clone https://github.com/hufs-pnp/gitTraining.git
이제 이곳에 파일을 추가해서 github에 올리고 내려보겠습니다.
pnp홈페이지를 만들고 있다고 가정하고 진행해볼게요.
자 이렇게 파일을 하나 추가하고 현재 폴더의 상태를 보겠습니다.
$ git status
On branch main
Your branch is up to date with 'origin/main'.
Untracked files:
(use "git add <file>..." to include in what will be committed)
main-page.txt
nothing added to commit but untracked files present (use "git add" to track)
untracked files가 있다고 하네요. add 로 추적할 수 있도록 해주겠습니다.
$ git add main-page.txt # git add <추가할 파일>
이렇게하면 main-page.txt라는 파일이 Stage에 올라가게 됩니다. (위에 그림 살짝 보고오세요)
$ git commit
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch main
# Your branch is up to date with 'origin/main'.
#
# Changes to be committed:
# new file: main-page.txt
#
~
이어서 commit을 만들어 보겠습니다. git commit 명령어를 입력하면 아래와 같은 Please enter... 하면서 쭉 나오면서 맨 위줄이 비워져 있을텐데 그곳에 어떤 작업을 한 것인지 메시지를 작성해주면 됩니다. 다른 사람이나 미래의 내가 볼 수 있도록 메시지를 적습니다. 자신의 설정에 따라 다르겠지만 기본적인 vi 에디터를 사용한다면 i를 누르면 입력할 수 있게 됩니다. 메시지를 입력하고 esc누르고 :wq(저장하고 닫기) 를 입력하면 commit이 생성됩니다. 이렇게 하면 귀찮으니깐.
$ git commit -m "메인페이지 추가"
이렇게하면 별도의 화면 전환없이 메시지를 작성하고 commit할 수 있습니다.
이제 내 로컬 저장소에서 버전(commit)을 하나 만들었습니다. 이것을 remote repository에 올려보겠습니다.
$ git push origin main # git push <원격저장소이름> <브랜치명>
push가 원격지에 밀어넣다는 것이고 origin은 우리가 remote repository에 붙여준 이름, main은 branch이름 입니다. remote repository(이제 원격지라고 할게요)이름 을 확인해보면
$ git remote -v
origin https://github.com/hufs-pnp/gitTraining.git (fetch)
origin https://github.com/hufs-pnp/gitTraining.git (push)
이렇게 나옵니다. 현재 이 로컬 저장소에 원격 저장소로 저장되어 있는 곳을 확인할 수 있습니다.
기본적으로 clone을 하면 origin이라는 이름으로 연결됩니다.
그래서 git push origin main 하면
$ git push origin main
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 317 bytes | 317.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/hufs-pnp/gitTraining.git
845dd2d..01ea47a main -> main
이렇게 추가된 걸 볼 수 있습니다.
반대로 이렇게 새로운 파일이 원격저장소에 다른사람이 나의 다른 컴퓨터에 의해서 변했다고하면
가져오기 위해서 pull 당겨옵니다.
$ git pull origin main
remote: Enumerating objects: 8, done.
remote: Counting objects: 100% (8/8), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 7 (delta 2), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (7/7), 1.79 KiB | 3.00 KiB/s, done.
From https://github.com/hufs-pnp/gitTraining
* branch main -> FETCH_HEAD
01ea47a..bb9f394 main -> origin/main
Updating 01ea47a..bb9f394
Fast-forward
member-page.txt | 1 +
1 file changed, 1 insertion(+)
create mode 100644 member-page.txt
그러면 이렇게 파일이 생깁니다.
이렇게만 하면 아주 기본적으로 내가 코드를 올리고 내리고는 할 수 있는 상태입니다.
많은 분들이 vscode를 쓰고 계실텐데
vscode에서 이렇게 파일을 편집하면 옆에 U라고 표시되면서 세번째 아이콘에 1이 표시되는 것을 볼 수 있습니다. 세번째 그래프 아이콘 모양으로 된 곳을 클릭하면 이렇게 변경사항이 어떤 것이 있는지 확인 할 수 있습니다. 우리가 git status로 확인해본 것과 같다고 보시면 됩니다. U옆에 더하기 기호를 누르면 git add한 것과 같아서 "스테이징된 변경사항" 이라고 표시 될 것입니다. 다음으로 그 위에 "메시지(..."부분에 메시지를 입력하고 위에 체크표시를 클릭하면 git commit -m 하는 것과 같습니다.
그러면 comit이 생기고 깨끗해졌을 겁니다. 그리고 아래보면 이렇게 나오는데 화살표 모양을 누르면 push가 됩니다.
이렇게 아주 기본적인 부분을 살펴봤습니다. 여기까지는 해보신 분들이 많을 거라고 생각됩니다.
다음 페이지 이어서 해보겠습니다.
'PnP > Git' 카테고리의 다른 글
Git, Github 시작하기-4 (1) | 2021.10.28 |
---|---|
Git, Github 시작하기-3 (0) | 2021.10.26 |
Git, GitHub 시작하기-2 (0) | 2021.10.19 |
Github commit (0) | 2021.06.29 |
Github 프로필 (0) | 2021.06.29 |