Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

Nonamed Develog

[TIL][240626] 미니 프로젝트, 필수 리눅스 명령어, Git & Github, pip install 본문

WHAT I LEARN/TIL

[TIL][240626] 미니 프로젝트, 필수 리눅스 명령어, Git & Github, pip install

노네임드개발자 2024. 6. 26. 20:10
어려웠던 부분

어제 배운 Git & Github를 강의 자료를 정독했다. 모르는 부분은 구글링 해가면서 블로그에 요약을 하니 개념이 잡히는 느낌이다. 파이썬, HTML 태그 등은 굳이 외우지 않아도 필요하면 검색해서 이용하는 것을 권장하곤 했는데, Git은 반드시 외워야겠다는 생각이 들었다. 특강 영상이 나오면 다시 한번 시청해서 애매하게 이해한 부분을 채워야겠다. 튜터님이 3번은 반복해야 한다는데 강의와 요약본으로 30번은 반복할 예정이다.

 

미니 프로젝트를 준비하는데 나의 지분은 여전히 적었고 내가 할 수 있는 것을 찾아보고 팀원들에게 질문도 하면서 고민을 하였다. 잘 알지도 못하고 할 수도 없어 전전긍긍하는 와중에 다시 돌아가기로 했다. 일단 웹개발 종합반을 내일까지 완강해야 하는데 이 상태로 4주차, 5주차 강의를 들으면 지금의 내 상태는 변화가 없을 거라 판단했다. 1~3주차 강의를 다시 들을 물리적 시간은 부족해 강의자료를 읽으며 시청했던 강의를 리마인드 하는 방식으로 진행했다.


느낀 점

Git & Git 관련 내용은 명령어 정도만 블로그에 정리하고자 했는데, 애매하거나 모르는 부분이 나올 때마다 구글링을 하니 추가할 내용이 많아졌다. 파도파도 끝이 없는 느낌... 또한 웹개발 종합반 1~3주차 강의자료를 다시 읽는데 시청했던 강의가 떠오르면서 당시 강의를 들으며 코드만 따라 쓰기 급급했던 내가 보였다. 그것도 경험이라고 자료를 읽으면서 정리가 되는 느낌이었다.


새로 알게 된 내용

pip install -r requirements.txt 명령어

미니 프로젝트를 하면서 첨부파일이나 Github를 이용할 때마다 venv, flask, SQLalchemy 같은 가상환경을 설정해줘야 하는 번거로움이 있었는데 한 조원 분께서 이 명령어를 공유해 주셨다. 버전에 맞게 모든 패키지를 설치해 준다.

 

필수 리눅스 명령어
1. pwd (print working directory): 현재 내가 작업하는 폴더를 보여줘!
    cf) ~ 는 Home이라는 경로이고, 데스크톱 보다 상위의 폴더를 의미
2. ls(list): 내 폴더 안에 있는 폴더와 파일을 보여줘!
3. ls -a(list all): 숨겨진 파일까지 보여줘! (보통 . 으로 시작하는 파일)
4. cd +폴더명(change directory): ls 명령어에서 확인된 폴더로 이동해! (폴더를 더블 클릭한 효과)
    cf) 폴더에서 폴더로 또 그 폴더에서 폴더로 계속 이동 가능
    cf) cd ..(반드시 띄어쓰기하기): 상위 폴더 이동!
    cf) cd +폴더명/폴더명/...: 깊숙한 폴더로 이동할 때 반복하지 않고 한 번에 이동!
5. mkdir +폴더명(make director): 현재 경로에서 폴더를 생성!
    cf) 이미 존재하는 폴더명이 있을 경우엔 생성되지 않음
6. touch +파일명: 현재 경로에서 파일을 생성!
    cf) 정확히는 파일의 생성과, 파일의 날짜, 시간을 변경하는 명령어

 

Git?

  • 어려운 버전: 버전 관리 도구 (형상 관리 도구)
  • 쉬운 버전: 코드 변경점 기록
  • 면접 버전: 소프트웨어의 변경사항체계적으로 추적하고 통제하는 것

보통 과제나 업무를 할 때 제출할 결과물은 단 1개이다. 우리는 단 1개의 결과물을 만들기 위해 수정본을 거쳐가면서 수많은 파일과 폴더를 만들게 되고 각 파일에는 변경 기록 또한 남아있지 않다.

 

폴더와 파일을 복사하지 않아도 되고, 변경 기록이 가능한 방법이 있다? ㅇㅇ Git에서 가능!

 

하나의 폴더 내에서 코드의 변경점을 기록하기 위해 Git을 사용할 수 있으며 Git을 이용하여 에러 발생 시 과거의 코드 기록으로 돌아갈 수 있다. 예를 들어 Git을 사용하여 프로젝트를 진행한다면 단계별로 코드의 변경점을 기록할 수 있기 때문에 에러가 발생하면 에러 전 단계로 쉽게 돌아가서 프로젝트를 진행할 수 있다.

 

Github?

  • 백업과 공유가 가능한 온라인 코드 저장소
  • 백업? 공유? 협업? Git-hub로 가능!
필수 Git 명령어
1. git init: initialize의 준말로 초기화, 초기 세팅을 의미
    cf) 프로젝트 시작 전 딱 한 번만 입력 (여러 번도 문제없음)
    cf) 정확한 프로젝트 폴더(경로)에서 입력해야 함 (컴퓨터 세팅이 망가질 수도)
2. git add +파일명: 코드를 저장하는 명령어 (저장하기 전 저장할 파일 지정)
    cf) git add . : 지정할 파일이 많을 때 사용 . 은 현재 나의 경로의 모든 변경된 사항
    cf) 마찬가지로 다음엔 git commit -m "메시지"가 따라온다.
3. git commit -m "메시지": 코드를 저장하는 명령어 (실제로 저장)
    cf) 파일이 여러 개일 때 하나를 지정해서 저장하기 위해 명령어가 2개!
4. git status: 저장 여부를 확인하는 명령어
    cf) 어떤 파일이 변경됐는지 어떤 파일이 지정(add)됐는지 등 변경 상태를 확인하는 명령어
5. git log: 저장 내역을 확인하는 명령어 
5-1. git diff: 코드 변경 확인
5-2. git reset: commit 취소
5-3. q: 종료 버튼
Github로 코드 백업하기
6. git push: 추가로 수정된 코드 Github에 반영
    cf) git push origin 브랜치명(main)으로 코드 작성했지만 git push도 가
    *브랜치는 다음 시간에 배우니 main으로 코드 작성
7. git clone: Github에서 코드 복사해 오기 
8. git pull: 다른 사람이 변경한 코드 내 코드에 가져오기
    cf) 다른 사람이 먼저 push 했을 때 pull 하고 push (hint: use 'git pull' before pushing again.)

 

Git 명령어 실습

1. git init

  • 명령어를 입력했을 때 Initialized empty Git repository in이라고 뜨면 성공
  • git-test/.git/ 처럼 뒤에 .git이라는 숨겨진 폴더가 생성 (ls -a로 검색 가능)
  • 명령어 입력 후 경로 뒤에 master가 붙는다.
  • pwd로 현재 경로 확인 후 경로가 다르면 cd 명령어로 이동 후 git init 명령어 실행

2. git add & gir commit -m

  • Please tell me who you are 에러가 났을 때 에러 메시지를 보면 힌트가 있다. 아래 명령어를 입력하면 해결!
1.git init
2.git config user.name "someone"
3.git config user.email "someone@someplace.com"
4.git add *
5.git commit -m "some init msg"

 

3. git status

  • 코드의 변경은 있지만 저장을 하지 않은 파일은 빨간색으로 표시된다.
  • git add . → git commit -m "메시지" → git status: Nothing to commit (더 이상 저장할 것이 없음)

4. git log

  • commit 메시지로 코드 변경점 추측 가능

5. git push

  • 코드 수정 → git add & commit -m "메시지" →  git push origin 브랜치명(main)

6. git clone

  • 코드를 작성할 폴더를 생성하고 vscode에서 해당 폴더를 열어준다.
  • Github 주소를 복사하고 git clone <github 주소> . 명령어를 입력한다. (맨 뒤 . 은 반드시 찍어준다.)

7. git pull

  • 하나의 Github에 다른 사람이 이미 push를 하고 내가 push를 하게 되면 에러가 발생한다.
  • hint: use 'git pull' before pushing again (다른 사람이 먼저 push 했을 때 pull 하고 push 하면 된다.)
  • 코드 수정 → git add & commit -m "메시지" → git push origin 브랜치명(main) → error → git pull origin 브랜치명(main)
  • git config pull.rebase false 같은 에러가 뜨면 git config pull.rebase false 입력 후 git pull origin 브랜치명(main) 입력. 자세한 설명: https://velog.io/@9to0/Git-error-git-config-pull.rebase-false
  • 터미널에 아무것도 입력이 안 되는 vim 에디터가 뜬다면 → esc, :, wq, enter

8. 충돌 해결 하기

 

충돌이 일어나는 원인은 두 사람 이상의 같은 파일의 같은 위치의 코드가 변경되었기 때문이다. 예를 들어 내가 git pull을 했는데 내가 작성한 코드와 같은 위치의 수정된 코드가 병합된다면 충돌이 발생한다. 

이때 충돌된 상태를 보여주는 창에서 <<<<HEAD /  ==== / >>>>>1234를 삭제하고 원하는 코드로 수정한다. 그리도 다시 git push를 하면 해결할 수 있다. 


오늘 잘한 점

잘한 짓인지 아직은 알 수 없지만 강의만 보기보단 확실하게 알고 넘어가고 싶어 강의자료를 읽으며 지난 수업을 복습하는 것이다. 진도는 따라가기 분명 촉박하겠지만 나만의 속도를 유지하도록 노력해야겠다. 지금 너무 힘이 들어간 느낌이다.


내일 할 일

미니 프로젝트 마무리하고 강의자료를 바탕으로 웹개발 종합반 1~3주차를 복습하면서 과제를 다시 한번 해보고자 한다. 가능하다면 4주차 강의까지 완강하여 주말에 할 일을 조금이라도 줄여보고자 한다.