diff --git a/answers/task1.md b/answers/task1.md new file mode 100644 index 0000000..3955e81 --- /dev/null +++ b/answers/task1.md @@ -0,0 +1,37 @@ +# 과제 1 (난이도 하) + +![GitHub Triangle](../resources/git-and-github-initial-setup.png) + +(그림 [출처](https://docs.microsoft.com/en-us/contribute/get-started-setup-local)) + +> 위 그림을 참고해 하단부의 빈칸을 완성해주세요. 들어갈 수 있는 단어 혹은 명령어는 다음과 같습니다. + +- origin +- upstream +- 클론 +- 포크 +- merge +- fetch +- rebase +- git pull +- git clone +- git remote add upstream + + +## 로컬 머신에 작업 환경 구축하기 + +오픈소스 기여의 시작은 기여하고자 하는 리포지토리를 내 계정으로 **포크**하는 것부터 시작됩니다. **포크**가 완료되면 내 GitHub 계정에서 **포크**한 리포지토리의 주소를 확인할 수 있습니다. + +포크 받은 리포지토리 주소 앞에 **git clone**를 붙여 만든 명령어를 로컬 머신(내 컴퓨터)에 입력하면 로컬 머신에 해당 리포지토리를 **클론**받을 수 있습니다. + +참고로, git clone 명령어로 리포지토리를 최초로 클론받는 경우, 해당 리포지토리의 기본 별명은 **origin**이 됩니다. + +## 소스 코드 최신으로 유지하기 + +최신 소스 코드를 받아오려면 먼저, 최신 소스 코드가 담긴 리포지토리를 내 로컬 환경과 연결해줘야 합니다. 이럴 땐 **git remote add upstream**이라는 명령어를 사용하면 됩니다. + +**upstream**은 origin과 같이 리모트 리포지토리를 식별할 수 있는 별명으로, 이름표와 같기 때문에 원하는 대로 수정할 수 있습니다. 다만, 대부분의 git·GitHub 튜토리얼에서 포크 받은 리포지토리는 origin, 원 리포지토리는 **upstream**이라는 별명을 붙여 식별하기 때문에 이런 식별 방법을 미리 알아두는 것이 좋습니다. + +upstream 리포지토리에 있는 최신 변경분을 로컬 리포지토리에 가져오는 방법은 다양합니다. 가장 쉬운 방법은 **git pull**명령어를 사용하는 것입니다. pull은 **fetch**와 **merge**를 합한 명령어입니다. + +이외에도 **fetch** 후, **rebase**를 사용하는 방법이 있는데, rebase는 브랜치를 깔끔하게 관리할 수 있다는 장점이 있습니다. 다만, rebase를 사용하면 커밋 식별자가 변경되기 때문에, 이 점에 주의해야 합니다. diff --git a/answers/task2.md b/answers/task2.md new file mode 100644 index 0000000..db9624e --- /dev/null +++ b/answers/task2.md @@ -0,0 +1,24 @@ +# 과제 2 (난이도 중) + +[링크](http://try.github.io/)에 들어가면 GitHub에서 추천하는 양질의 git·GitHub 학습자료를 확인할 수 있습니다. 많은 개발자들과 실험해본 결과 이 중 [Learn Git Branching](https://learngitbranching.js.org/)이 개념 학습과 실무에 큰 도움이 된다는 결론을 내리게 되었습니다. + +Learn Git Branching 사이트를 열어 모든 과제를 직접 끝내 봅시다. + +과제 완료 후 화면을 캡쳐한 후, 이미지 내에 자신의 GitHub username을 적어주세요. 그리고 해당 이미지 파일을 resources 디렉터리로 옮긴 후, 아래와 같이 마크다운 파일에 삽입해 주시면 됩니다. + + +## 과제 완료 캡쳐 화면 + +**자신의 username이 적힌 그림 파일이 하단에 보여야 합니다.** + +![learn-git-branching-level-1](../resources/learn-git-branching-level1.png) + +![learn-git-branching-level-2](../resources/learn-git-branching-level2.png) + +## 응원의 말 + +여기 있는 명령어를 모두 외우지 않아도 괜찮습니다. git으로 어떤 작업을 할 수 있는지 정도만 알아 두었다가, 필요할 때 다시 Learn Git Branching 사이트로 돌아와 가상 환경에서 실습한 후 실무에 적용하는 개발자들이 많습니다. 겁먹지 마세요! + + + + diff --git a/answers/task3.md b/answers/task3.md new file mode 100644 index 0000000..b8ed4a3 --- /dev/null +++ b/answers/task3.md @@ -0,0 +1,28 @@ +# 과제 3 (난이도 상) + +https://github.com/udacity/asteroids 에 들어가 해당 리포지토리를 로컬 머신에 클론 받고 다음 과제를 수행해주세요. + +## 버그를 유발한 커밋 찾기 + +asteroids를 실행하면 우주선과 소행성이 나타납니다. 키보드에서 ←와 →를 누르면 우주선이 가리키는 방향이 바뀌고, ↑를 누르면 우주선이 전진합니다. 스페이스 바를 누르면 로켓이 발사되죠. + +index.html 파일을 열고 게임을 직접 실행해 봅시다. + +![asteroids-intro](../resources/asteroids-intro.png) + +엇! 그런데 에러가 있네요. 스페이스 바에서 손을 떼지 않고 계속 눌러봅시다. 쉼 없이 총알이 발사됩니다. + +![asteroids-bug](../resources/asteroids-bug.png) + +이렇게 끊임없이 총알이 발사되면 게임을 금방 깰 수 있어서 안 됩니다. 처음엔 총알이 끊임없이 발사되지 않도록 구현했었는데, 어디선가 총알이 끊임없이 발사되도록 하는 코드가 들어간 것 같네요. + +어떤 커밋때문에 버그가 생겼는지 찾아봅시다. 그리고 버그를 수정하려면 어떻게 해야 하는지 적어봅시다. + +### 정답 + +버그를 유발한 커밋 id: 25ede836903881848fea811df5b687b59d962da3 +어떻게 하면 버그를 수정할 수 있는지: 삭제된 코드(this.delayBeforeBullet = 10;)를 복구한다. + +### 힌트 + +과제 2를 통해 커밋도 체크아웃 할 수 있다는 것을 배웠습니다. 이전 커밋을 체크하웃하면 타임머신을 타고 과거로 돌아갈 수 있습니다!