수성컴전자방입니다. 오늘은 Git을 설치하고 사용해 보겠습니다. Git을 사용하면 버전 관리, 분산 개발 등이 편리해집니다. 특히 요즘은 개발자들이 GitHub를 많이 사용하므로 Git에 대해 알아보려고 합니다.
목차
1. 설치
2. Git 기본적인 사용법
2.1. git init
2.2. git status
2.3. git add
2.4. git commit
2.5. 파일 수정하기
3. branch
3.1. branch 생성과 전환(checkout)
3.2. git merge
3.3. merge 중 충돌 발생 시
3.4. branch 삭제
4. 원격 저장소(GitHub) 사용하기
1. 설치
1.1. https://git-scm.com/downloads로 접속합니다.
1.2. 자신의 운영체제에 맞는 버전을 클릭합니다.
1.3. Click here to download를 클릭하여 설치 파일을 내려받습니다.
다른 버전을 선택하려면 아래의 항목 중 원하는 것을 클릭하여 설치 파일을 내려받습니다.
1.4. 내려받은 설치 파일을 실행합니다. Next를 클릭하세요.
1.5. Next 클릭
1.6. Select Components입니다. 제가 관심 있는 것들만 설명 드리겠습니다.(저는 관심 없는 것은 기본 설정대로 했습니다.)
- Additional icons
- On the Desktop: 바탕화면 아이콘 추가
- Windows Explorer integration(Windows 11 기준 파일 탐색기에서 오른쪽 클릭→더 많은 항목 표시에서 나올 항목)
- (중간 생략)
- Check daily for Git for Windows updates: Git for [Windows updates]가 아니라 [Git for Windows] updates입니다. 매일 Git for Windows 업데이트가 있는지 확인합니다.
- (NEW!) Add a Git Bash Profile to Windows Terminal: Windows Terminal에 Git Bash Profile을 추가합니다. Windows Terminal은 Windows 11의 기본 터미널이죠.(Win10도 MS Store에서 내려받으면 사용 가능). 이 항목을 체크하면 Windows Terminal에서 Git Bash를 사용할 수 있게 됩니다.
원하는 대로 항목을 선택한 뒤 Next를 클릭하세요.
1.7. Next 클릭
1.8. Git을 사용할 기본 에디터를 선택합니다.
에디터 목록은 이러합니다. 저는 Visual Studio Code를 선택했습니다.
1.9. 우리가 Git을 사용할 때 처음에 “git init” 명령어를 사용하여 초기화 합니다. 이때 생성되는 초기 branch 이름을 무엇으로 하겠냐는 것입니다. 저는 그냥 Let Git decide를 선택하겠습니다. 그러면 초기 branch 이름이 “master”가 됩니다.
1.10. 환경 변수 PATH 관련 설정입니다. 잘 모르겠으면 그냥 권장되는 설정을 쓰시는 것이 좋겠습니다.
- Use Git from Git Bash only: 환경 변수 PATH에 추가하지 않습니다. Git Bash에서만 Git 명령어를 사용할 수 있습니다.
- Git from the command line and also from 3rd-party software: (권장) 이 설정은 약간의 Git wrappers를 환경 변수 PATH에 등록합니다. CMD나 PowerShell을 비롯하여 Windows Terminal에서 Git 명령어를 사용할 수 있게 됩니다.
- Use Git and optional Unix tools from the Command Prompt: Git 명령어뿐 아니라 Unix 도구까지 PATH에 등록하여 CMD/PowerShell에서 쓸 수 있게 합니다.
주의: 이 설정은 “find”와 “sort” 같은 Windows 도구들을 덮어씁니다. 잘 이해하신 경우에만 이 설정을 사용하십시오.
1.11. Git에서 제공하는(bundled) OpenSSH를 쓰느냐, 외부 OpenSSH를 쓰느냐입니다. 저는 그냥 위의 것(bundled)으로 선택했습니다.
1.12. HTTPS 연결에 사용할 SSL/TLS (인증서) 라이브러리를 선택합니다. 저는 위의 것으로 두고 Next를 클릭했습니다.
1.13. 줄바꿈 설정입니다. 기본적으로 (Git과 상관없이) 줄바꿈 할 때 Windows는 CRLF를, Unix는 LF(\n)를 사용한다고 합니다. 이로 인해 각기 다른 운영체제에서 파일을 수정할 경우 개행 문자도 수정된 것으로 인식될 수 있으므로 이 설정이 존재한다네요. 저는 기본 설정대로 진행했습니다.
1.14. Git Bash를 사용할 터미널을 정합니다. 저는 기본 설정(MinTTY)으로 했습니다.
1.15. ‘git pull’ 명령을 사용할 때의 수행 사항을 정합니다. 저는 Default로 하겠습니다.
1.16. 자격 증명 도우미 설정 화면입니다. 저는 Git Credential Manager를 선택했습니다.
1.17. 나머지 설정들입니다.
- Enable file system caching: 파일 시스템 데이터가 bulk에서 읽어지고 메모리에 캐시됩니다(“core.fschache”가 “true”로 설정됩니다). 이는 수행 속도를 더 빠르게 해 줍니다.
- Enable symbolic links: symbolic links를 활성화 합니다(SeCreateSymbolicLink 권한이 필요합니다). 기존 repository들에는 이 설정이 적용되지 않습니다.
1.18. 실험실 기능 같은 것입니다. 저는 안 쓰겠습니다.
(잘 이해하고 쓰면 좋을 기능이 있는 것 같네요. 단, 버그가 있을 수도…)
1.19. 설치됩니다.
1.20. 설치가 완료되었다고 뜹니다. 참고로 ‘View Release Notes’에 체크하시면
이런 창이 나옵니다. 1.5절에서 설치 경로를 안 바꾸신 경우 C:\Program files\Git\ReleaseNotes.html입니다.
1.21. 시작을 오른쪽 클릭하거나 Windows+X를 누릅니다.
1.22. Windows 터미널을 클릭합니다.
(개발자들 쓰는 프로그램 설명하면서 이런 건 괜히 알려드린 것일까요?ㅎㅎ 참고로 Windows 10에는 Windows 터미널이 선탑재 되지 않음!)
제가 빨간 네모 친 v를 누르면 Git Bash가 있는 것을 확인하실 수 있습니다.(1.10절에서 해당 설정 체크한 경우 한정.)
그러면 Windows 터미널에서 Git Bash를 사용하실 수 있습니다.
물론 그냥 시작 검색창에 Git Bash를 검색하여 Windows 터미널 없이 실행하실 수도 있습니다.
이제 둘러봤으니 Git 계정을 등록하겠습니다. 저는 그냥 PowerShell 탭에서 진행할게요.
1.23. git config –global user.name “당신의 GitHub id” 명령을 실행합니다.
1.24. git config –global user.email “당신의 GitHub email” 명령을 실행합니다.
1.25. 잘 입력되었는지 확인해 볼까요?
git config –global user.name 명령을 실행하면 자신의 user.name을 확인하실 수 있습니다.
git config –global user.email 명령을 실행하면 자신의 전자 우편 주소를 확인하실 수 있습니다.
git config –list 명령을 실행하면 모든 설정을 보실 수 있습니다.
2. Git 기본적인 사용법
2번 문단에서는 Git 명령어 중 init, status, add, commit에 대해 알아봅니다.
그 전에 앞서서 기본적인 터미널 상식은 알아 두시기 바랍니다.
- cd: Change Directory(디렉토리 변경 시 이 명령어를 사용하세요.)
- 상대 경로
- . : 현재 폴더
- .. : 상위 폴더
2.1. git init
2.1.1. 터미널에서 Git을 사용할 폴더로 경로를 이동하세요.
저는 미리 문서 폴더 안에 Temporary 폴더를 만들고 그 안에 gitest 폴더를 만들어 두었습니다.
터미널 처음 열면 경로가 C:\Users\계정명 으로 지정되니
cd Documents\Temporary\gitest
명령을 실행하면 되겠죠?
2.1.2. git init 명령을 실행하면 해당 폴더의 git 관련 내용이 초기화됩니다. 이 명령을 처음 실행하시면 ‘.git’ 폴더가 생기는 것을 보실 수 있습니다.
2.2. git status
2.2.1. 이제 예시를 들기 위해서 이 폴더에 제가 코딩한 파일 3개를 넣었습니다.(여러분도 따라 연습하시려면 아무거나 넣어 보세요. 텍스트 파일도 좋습니다.)
2.2.2. git status 명령을 실행하시면 현재 상태를 보실 수 있습니다. 저는 Untracked files가 있다고 파일명까지 다 뜨네요.ㄷㄷ
2.3. git add
git add 파일명.확장명을 입력하면 index에 해당 파일이 추가됩니다.
저는 폴더 내의 모든 파일을 추가하기 위해서 git add .을 실행했습니다.
그 다음 git status
명령으로 확인하면 방금 add한 파일들이 commit할 파일들이라고 목록에 뜹니다.
2.4. git commit
git commit -m “설명“을 입력하면 commit이 완료됩니다.
설명은 큰따옴표 사이에서 엔터키를 이용하여 줄바꿈이 가능합니다.
주로 아래와 같은 형식으로 메시지를 작성한다고 합니다.
1번째 줄: 커밋 내의 변경 내용을 요약
2번째 줄: 빈 칸
3번째 줄: 변경한 이유
commit 후 git status
명령을 실행하면 이제 commit할 것도 없고, working tree가 clean 하다고 뜹니다.
2.5. 파일 수정하기
2.5.1. 파일 하나를 수정해 보았습니다.
2.5.2. git status 명령을 실행하면 modified: 수정한 파일이라고 뜹니다.
2.5.3. git add . 명령을 실행하면 수정된 파일들 모두가 index에 추가됩니다.
2.5.4. git commit -m “설명“을 입력하면 commit이 완료됩니다.
2.5.5. git status
명령을 실행하면 이제 commit할 것도 없고, working tree가 clean 하다고 뜹니다.
3. branch
branch는 독립적으로 어떤 작업을 진행하기 위한 개념입니다. 필요에 의해 만들어지는 각각의 branch는 다른 branch의 영향을 받지 않기 때문에 여러 작업을 동시에 진행할 수 있습니다.
위 그림은 branch를 나누어 기능 추가와 관련된 코딩을 하다가 긴급하게 버그를 수정해야 하는 상황입니다. 이때 푸른색 화살표와 같이 master branch에서 branch를 따로 파생하여 버그 수정을 할 수 있습니다. 그러면 기능 추가는 빼고 버그만 수정하여 배포할 수 있습니다.
아래 내용을 진행하기에 앞서 최소 한 번 commit을 하시기 바랍니다.
3.1. branch 생성과 전환(checkout)
3.1.1. git branch 명령을 실행하면 현재 branch 목록 확인하실 수 있습니다. 그 중 현재 선택된 branch는 asterisk(*)와 초록색 글씨로 표시됩니다.
3.1.2. git branch branch명 명령을 실행하면 해당 이름으로 branch가 생성됩니다.
3.1.3. git checkout 방금만든branch명 명령을 실행하여 branch를 전환합니다.
3.1.4. 방금 만든 branch가 선택된 상황에서 파일을 수정하고 add와 commit을 하면 적용됩니다.
3.1.5. 이후 git checkout master 명령을 통해 branch를 master로 전환하면 수정 전 상태로 돌아가는 것을 보실 수 있습니다.(master branch에서 마지막으로 commit 했을 때의 상태로 돌아감.)
3.2. git merge
merge는 branch를 병합하는 명령어입니다.
노란색 네모가 4.1절에서 만든 branch입니다. 편의상 ‘test’라고 하겠습니다. master에서 수정한 내용이 있고 add, commit했습니다. test에서도 수정한 내용이 있고 add, commit 했습니다. 이제 test를 master에 병합하려고 합니다.
3.2.1. master branch가 선택된 상태에서 진행합니다.
3.2.2. git merge test 명령어를 실행합니다.
결과를 어떻게 보여드릴지 고민하다가 그냥 소스코드로 예시를 보여드리기로 했습니다.
[①master branch에서]
<h1>세부 항목은 수정 테스트입니다.</h1>
<content>
수정 테스트 2022. 07. 21. 오후 7:06
</content>
.
[②test branch에서]
<h1>세부 항목은 수정 테스트입니다.</h1>
<content>
2022. 07. 21. 오후 7:26 branch test
</content>
.
[③master branch에서]
<h1>세부 항목은 수정 테스트입니다. merge</h1>
<content>
수정 테스트 2022. 07. 21. 오후 7:06
</content>
[merge 결과 master branch에서]
<h1>세부 항목은 수정 테스트입니다. merge</h1>
<content>
2022. 07. 21. 오후 7:26 branch test
</content>
.
(merge 후 test branch의 내용은 ②와 동일)
3.3. merge 중 충돌 발생 시
병합 중 충돌(conflict)이 일어나면 오류 메시지가 터미널에 나타나며,
해당 파일 소스코드를 열어 보시면 어디서 충돌이 일어났는지 확인하실 수 있습니다. 같은 line을 양쪽에서 수정해서 충돌이 일어났습니다. 이 파일에서 확인해 보시고 선택하시면 됩니다.
3.4. branch 삭제
3.4.1. 삭제할 branch 말고 다른 branch가 선택된 상태에서 진행합니다.(삭제할 branch가 선택된 상태에서 진행하면 오류 발생. 심각한 오류가 아니니 경험해 보는 것도 나쁘지는 않아요.)
3.4.2. git branch -d 삭제할branch명 명령을 실행하면 해당 branch가 삭제됩니다.
해당 branch가 commit은 되었으나 master에 병합되지 않은 경우 삭제가 진행되지 않습니다. 강제 삭제하시려면 -d 대신 -D를 사용하여 git branch -D 삭제할branch명 명령을 실행하시면 됩니다.
*. 글 마무리
제 글을 읽어 주셔서 감사합니다. 계속해서 원격 저장소(GitHub)를 사용하는 방법을 보시려면 아래 링크를 클릭해 주시기 바랍니다.
4. 원격 저장소(GitHub) 사용하기
**. 참고 자료
1) 하늘고래c. 2022. “Git 설치하기 ( 2.37.0 )”, #생각의 기록 #하늘고래의 프로그래밍이야기. (2022. 09. 16. 방문). https://whalec.tistory.com/20
2) Nulab Inc. n. d. “누구나 쉽게 이해할 수 있는 Git 입문”, 누구나 쉽게 이해할 수 있는 Git 입문. (2022. 09. 17. 방문). https://backlog.com/git-tutorial/kr/
3) 성장하고 싶은 신입 개발자. 2022. “Git 사용법”, 성장하고 싶은 신입 개발자. (2022. 09. 16. 방문). https://dragondeok.tistory.com/50
4) 58청춘. 2022. “Git 사용법 (repository 생성, 연결, branch 사용)”, Just 두 It. (2022. 09. 16. 방문). https://58cjdcns99.tistory.com/101
5) MongTae. 2022. “[Git 설치 및 초기설정, Git 명령어] Git으로 버전 관리하기”, MongTae. (2022. 09. 16. 방문)). https://mong-tae.tistory.com/20
6) 솜씨좋은장씨. 2020. “[Git] fatal: Not a valid object name: ‘master’. 해결방법”, K·IOK·IO. (2022. 09. 16. 방문). https://somjang.tistory.com/entry/Git-fatal-Not-a-valid-object-name-master-%ED%95%B4%EA%B2%B0%EB%B0%A9%EB%B2%95
7) na.bee. 2022. “[ Tip ] Git은 왜 사용하는가”. (2022. 09. 19. 방문). https://jjhkie.tistory.com/119