{"id":20661522,"url":"https://github.com/choidae1/git-github-study","last_synced_at":"2026-04-21T00:01:37.866Z","repository":{"id":128011945,"uuid":"452982186","full_name":"ChoiDae1/Git-Github-Study","owner":"ChoiDae1","description":"Repo for learning 「깃\u0026깃허브 입문」(이지스퍼블리싱)","archived":false,"fork":false,"pushed_at":"2023-01-04T05:11:44.000Z","size":46,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-10T04:47:49.204Z","etag":null,"topics":["git","github","tutorial"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ChoiDae1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-28T07:49:57.000Z","updated_at":"2023-01-04T06:31:20.000Z","dependencies_parsed_at":"2024-06-06T15:48:52.681Z","dependency_job_id":null,"html_url":"https://github.com/ChoiDae1/Git-Github-Study","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ChoiDae1/Git-Github-Study","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChoiDae1%2FGit-Github-Study","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChoiDae1%2FGit-Github-Study/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChoiDae1%2FGit-Github-Study/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChoiDae1%2FGit-Github-Study/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ChoiDae1","download_url":"https://codeload.github.com/ChoiDae1/Git-Github-Study/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChoiDae1%2FGit-Github-Study/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32071013,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T21:26:33.338Z","status":"ssl_error","status_checked_at":"2026-04-20T21:26:22.081Z","response_time":94,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["git","github","tutorial"],"created_at":"2024-11-16T19:09:59.049Z","updated_at":"2026-04-21T00:01:37.777Z","avatar_url":"https://github.com/ChoiDae1.png","language":null,"readme":"# Git-Github-Study\nRepo for Learning 「깃\u0026amp;깃허브 입문」(이지스퍼블리싱)\n## 1. 깃 시작하기\n### 리눅스 명령 연습하기\n* **현재 디렉터리 살펴보기**\n1. pwd -\u003e 현재 위치의 경로가 나타남.\n2. ls -\u003e 현재 경로에서 어떤 파일과 디렉터리가 있는 확인함.\n3. 리눅스 명령에 옵션을 추가하려면 -과 함께 원하는 옵션을 나타내는 글자를 함께 입력함.\n* **터미널 창에서 디렉터리 이동하기**\n1. cd .. -\u003e 현재위치에서 상위 디렉터리로 이동함.\n2. cd ~ -\u003e 홈 디렉터리로 돌아감.\n\u003c/br\u003e참고로 리눅스에서는 디렉터리를 나타내기 위한 기호로, ~ : 홈 디렉터리 ./ : 현재 사용자가 작업중인 디렉터리 ../ : 현재 디렉터리의 상위 디렉터리 를 사용함.\n* **터미널 창에서 디렉터리 만들기 및 삭제하기**\n1. mkdir [디렉터리 이름] -\u003e 디렉터리 만듬.\n2. rm -r [디렉터리 이름] -\u003e 디렉터리 삭제하기, -r 옵션을 붙이면 디렉터리 안에 있는 하위 디렉터리와 파일까지 함께 삭제된다. 단, 삭제할 디렉터리의 상위 디렉터리에서 입력해야 함.\n* **빔에서 텍스트 문서 만들기**\n\u003c/br\u003e 빔(Vim)은 터미널에서 사용할 수 있는 대표적인 편집기임. 빔에는 ex 모드, 입력 모드가 있음. \n1. vim [파일 이름(확장자 포함)] -\u003e 깃에서 편집하기 위해서, 파일 만들기. \n2. I, A 중 하나를 누르면 입력모드로 전환됨. 텍스트 입력 가능함.\n3. Esc 키 ex 모드로 돌아감. :wq를 입력하고 Enter를 하면 편집 중이던 문서를 저장하고 종료함. 파일 이름을 함께 입력하면 그 이름으로 저장함.\n* **터미널 창에서 텍스트 문서 내용 확인하기**\u003c/br\u003e \n1. cat [파일 이름.txt] -\u003e 파일 이름.txt의 내용 터미널에서 확인함.\n* **터미널 창의 내용 지우기 및 종료**\n1. clear -\u003e 터미널 창의 내용을 지움.\n2. exit -\u003e 터미널 창을 종료함.\n## 2. 깃으로 버전 관리하기\n### 2.1. 깃 저장소 만들기\n저장소를 만들고 싶은 디렉토리로 이동해서 **깃을 초기화**하면 그때부터 해당 디렉토리에 있는 파일들을 버전 관리할 수 있다.\u003c/br\u003e\ngit init -\u003e 깃을 사용할 수 있도록 디렉토리를 초기화 하는 것. 'Initialized empty Git repository ...' 라는 메시지가 나타난다.\n### 2.2. 버전 만들기\n깃이 **버전을 만드는 과정**은 다음과 같다. \n\u003c/br\u003e**작업트리 -\u003e 스테이지 -\u003e 저장소**, 스테이지와 저장소는 보이지 않는다. 깃을 초기화 했을때 만들어지는 .git 디렉토리 안에 숨은 파일 형태로 존재하는 영역이다. \n\u003c/br\u003e작업트리에서 문서를 수정하고, 수정한 파일 중 버전으로 만들고 싶은 파일을 스테이지에 저장함. 마지막으로 스테이지에 있는 파일을 저장소로 commit하면, 파일에 대한 버전이 만들어짐.\n* **명령어**\n1. git status -\u003e 깃의 상태를 확인, untracked file은 깃에서 한번도 버전 관리를 하지 않은 파일을 말한다.\n2. git add [파일 이름(확장자 포함)] -\u003e 해당파일을 스테이징 함.\n3. git commit-m \"[커밋메시지]\" -\u003e 커밋을 통해 버전 만들기.\n4. git log -\u003e 저장소에 저장된 버전 확인. 지금까지 커밋했던 기록을 살펴보기 위한 명령.\n5. git commit -am \"[커밋메시지]\"\n### 2.3. 커밋 내용 확인하기\n* **명령어**\n1. git log를 통해 커밋내용을 확인할 수 있다. \n2. git diff -\u003e 작업트리에 있는 파일과 저장소에 있는 최신 커밋과 비교해서 어떤 내용이 다른지 확인가능. 혹은 스테이지에 있는 파일과 최신커밋 비교.\n### 2.4. 버전 만드는 단계마다 파일 상태 알아보기\n* **tracked 파일과 untracked 파일**\n\u003c/br\u003e-\u003e tracked 파일은 이미 커밋기록이 있어서 파일의 수정여부를 계속 추적함. 반면, untracked 파일은 아직 커밋된적이 없기(버전 관리를 하지 않음) 때문에 수정여부를 추적하지 않음.\n참고로, git log --stat을 하면, 커밋에 관련된 파일까지 확인할 수 있음.\n* **unmodified, modified, staged 상태**\n\u003c/br\u003e-\u003e unmodified 상태에서 파일을 수정하면, modified 상태가 된다. modified 상태의 파일을 스테이징하면 staged 상태가 되고, 이를 커밋하면 다시 unmodified 상태가 된다.\n### 2.5. 작업 되돌리기\n* **명령어**\n1. git checkout -- [파일 이름(확장자 포함)] -\u003e 작업트리에서 수정한 내용을 취소하고, 가장 최신 버전 상태로 되돌리는 것. (스테이징 전) 참고로 checkout 커밋해시로 하면, 지정한 커밋해시로 이동함.\n2. git reset HEAD [파일 이름(확장자 포함)] -\u003e 스테이징 되돌리기\n3. git reset HEAD^ -\u003e 수정된 파일을 스테이징하고 커밋까지 했을 때, 가장 마지막에 한 커밋을 취소. 취소한 파일의 내용이 작업트리에만 남음.\n4. git reset --hard 커밋 해시 -\u003e 최신 커밋을 특정 커밋으로 되돌리기, 특정 커밋 이후 커밋은 사라짐. 파일 또한 특정 커밋 버전으로 되돌아감.\n5. git revert [커밋을 취소할 커밋해시] -\u003e 가장 최근에 커밋한 버전을 취소하고, 직전 커밋으로 되돌아갈때 씀. 하지만 여기서는 최근 커밋도 그대로 남아있음.\n## 3.깃과 브랜치\n### 3.1. 브랜치란?\n깃으로 버전관리를 시작하면 기본적으로 master라는 브랜치가 만들어짐. 기존에 저장한 파일을 master 브랜치에 유지하면서, 기존 파일을 수정하거나 새로운 기능을 구현할 파일을 만들 수 있음.\n이렇게 master 브랜치에서 뻗어 나오는 새 브랜치를 만드는 것을 분기(branch)한다고 함. 새로운 브랜치에서 작업을 다 끝냈다면 새 브랜치에 있던 파일을 원래 master 브랜치에 합칠 수 있는데,\n이 과정을 병합(merge)한다고 함.\n### 3.2. 브랜치 만들기\nHEAD는 여러작업 중인 브랜치 중 현재 작업 중인 브랜치를 가리킴.\n* **명령어**\n1. git branch -\u003e 작업 중인 브랜치가 무엇인지 확인할 수 있음, 브랜치 이름 앞에 * 표시는 작업하고 있는 브랜치를 뜻함.\n2. git branch [브랜치 이름] -\u003e 새로운 브랜치 만들기\n3. git checkout [브랜치 이름] -\u003e 브랜치 사이 이동하기\n4. git log --oneline -\u003e 한 줄에 한 커밋씩 나타남.\n### 3.3. 브랜치 정보 확인하기\n* **명령어**\n1. git log --oneline --branches -\u003e 각 브랜치의 커밋을 함께 볼 수 있음.\n2. git log --oneline --branches --graph -\u003e 브랜치와 커밋의 관계를 그래프 형태로 볼 수 있음.\n3. git log [기준이 되는 브랜치 이름]..[비교하는 브랜치] -\u003e 왼쪽에 있는 브랜치를 기준으로 오른쪽 브랜치와 비교해서 다른 커밋을 보여줌.\n### 3.4. 브랜치 병합하기\n* **명령어**\n1. git init [디렉터리명] -\u003e 새로운 디렉터리를 만들고 저장소를 초기화하는 과정을 한꺼번에 처리함.\n2. git merge [merge할 브랜치 이름] -\u003e 현재 작업중인 브랜치에 브랜치를 가져와 병합. 같은 문서의 다른 위치를 수정했을 때는 충돌없이 잘 병합됨. 같은 문서의 같은 위치를 수정했을 때는 충돌이 발생하고, 편집기가 열리게 되는데, 여기서 수정을 하고 병합을 진행. 이외에도 병합 자동화으로 처리해주는 프로그램도 존재함.\n3. git branch -d [삭제할 브랜치 이름] -\u003e 브랜치 병합한 후 더 이상 사용하지 않는 브랜치를 깃에서 삭제함. 이렇게 삭제해고 같은 이름의 브랜치를 만들면 예전 내용을 다시 볼 수 있음.\n### 3.5. 브랜치 관리하기\n* **명령어**\n1. git reset [커밋 해시] -\u003e HEAD가 가르키고 있는 브랜치의 최신 커밋을 원하는 커밋으로 지정. 명령을 수행한 뒤 브랜치와 연결이 끊긴 커밋은 삭제됨.\n2. git stash -\u003e 작업트리에서 수정한 내용을 스테이지에 올리기 전에 다른 파일을 수정해야 할 때, 수정한 내용을 임시로 어딘가에 보관하기 위함.\n3. git stash list -\u003e stash 작업을 통해 보관된 작업들을 볼 수 있음. stash@{0}이 가장 최근에 감춘 것\n4. git stash pop -\u003e stash 목록에서 가장 최근 항목을 다시 되돌림.\n## 4. 깃허브로 백업하기\n### 4.1. 지역 저장소를 원격 저장소에 연결하기\n* **명령어**\n1. git remote add origin [복사한 주소(Https 주소)] -\u003e 원격 저장소(remote)에 origin을 추가함. 여기서 origin이 복사한 주소를 가르킴. 참고로 Https 주소는 https://github.com/아이디/저장소명 과 같은 형태임.\n2. git remote -v -\u003e 원격 저장소에 제대로 연결됐는지 확인\n### 4.2. 원격 저장소에 올리기 및 내려받기\n* **명령어**\n1. git push -u origin master -\u003e  **현재 작업중인 브랜치와 관계없이**, 지역 저장소의 master 브랜치를 원격저장소의 master 브랜치로 푸시하라는 명령. 여기서 푸시는 지역 저장소의 소스를 원격 저장소로 올리는 것을 말함. -u는 처음 한번만 쓰면 된다. -\u003e 다음부터는 git push만 쓰면 원격저장소의 master 브랜치로 푸시할 수 있음.\n2. git pull origin master -\u003e 원격저장소의 master 브랜치 내용을 **현재 작업중인 지역저장소의 브랜치**로 가져온다는 뜻임. \n### 4.3. 깃허브에 SSH 원격 접속하기\nSSH 원격접속은 프라이빗 키와 퍼블릭 키를 사용해 현재 사용하고 있는 기기를 깃허브에 인증하는 방식임.\n* **명령어**\n1. ssh-keygen -\u003e SSH 키 생성하기, Enter를 세번 누르면 id_rsa 파일이 프라이빗 키이고, id_rsa.pub 파일이 퍼블릭 키임. ~/.ssh 경로에 저장됨.\n2. cd ~/.ssh -\u003e cat id_rsa.pub을 통해 퍼블릭 키 복사 -\u003e 깃허브 setting에 SSH Keys에 복붙 -\u003e 이제 SSH 키를 만든 컴퓨터는 SSH 주소만 알고 있으면, 로그인 정보를 입력하지 않고도 즉시 그 저장소에 접속할 수 있다.\n## 5. 깃허브로 협업하기\n### 5.1. 여러 컴퓨터에서 원격 저장소 함께 사용하기\n* **명령어**\n1. git clone [원격저장소 주소] git_home -\u003e git_home(지역저장소) 이라는 디렉터리가 없다면 자동으로 디렉터리가 만들고, 원격 저장소를 git_home에 복사함. 이렇게 원격 저장소를 복제하면, 자동으로 지역 저장소와 원격 저장소가 연결됨.\n2. git pull + git push 적절하게 사용.\n### 5.2. 원격 브랜치 정보 가져오기\n* **명령어**\n1. git fetch -\u003e 원격 브랜치 정보 가져오기, git pull과 다르게 원격 브랜치에 어떤 변화가 있는지 그 정보만 가져옴. 패치해서 가져온 최신 커밋을 살펴보고 싶다면 FETCH_HEAD 브랜치로 체크아웃해서 확인함. 만약 여기서 최신 커밋을 현재 브랜치에 합치려면 git merge FETCH_HEAD 를 통해 병합.\n2. git merge origin/브랜치 이름 -\u003e 브랜치에 있는 커밋을 현재 브랜치와 병합함. \n### 5.3. 협업의 기본 알아보기\n* **공동작업자 추가하기**\u003c/br\u003e\n저장소 화면에서 setting에 들어감 -\u003e [Collaborators]를 클릭해서 초대하고자하는 사람의 깃허브 아이디나 메일주소를 입력 -\u003e 초대받은 사람이 초대 수락하면 됨\n* **첫 번째 커밋이 아니라면 풀 먼저하기**\u003c/br\u003e\n깃허브에서 협업할 때는 여러 사람이 함께 문서를 수정하고 푸시하기 때문에 반드시 작업하기 전에 원격 저장소의 최신 커밋을 풀한 다음 자신의 커밋을 푸시해야 함.\n### 5.4. 협업에서 브랜치 사용하기\n* **명령어**\n1. git checkout -b [브랜치 이름] -\u003e 브랜치를 만들고, 체크아웃까지 함. 브랜치가 이미있으면 체크아웃만 함.\n2. git push origin [브랜치 이름] -\u003e 원격 저장소에 브랜치를 푸시한다는 의미임.\n* **pull request로 푸시한 브랜치 병합하기**\n협업을 하다보면 팀원들은 각자 다른 기능을 맡아서 작업하는 경우가 많음. 이럴 때는 각자의 작업이 master 브랜치와 섞이지 않도록 새 브랜치를 만들어서 버전을 관리함. 그리고 pull request를 통해 브랜치를 master 브랜치와 병합함.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchoidae1%2Fgit-github-study","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchoidae1%2Fgit-github-study","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchoidae1%2Fgit-github-study/lists"}