[220901] git과 GitHub의 차이 / git 명령어 등등
✏️ 오늘 배운 내용
- git은 무엇이고, GitHub는 무엇인가요?
- 리눅스 명령어
- git 명령어
- GUI와 CLI
- 프레임워크와 라이브러리의 차이
- 서비스를 만들 때
📖 git은 무엇이고, GitHub는 무엇인가요?
- git과 GitHub는 서로 다른 것이다. 잘 분간하자.(잘 분간 못했었음)
- git : 소스코드나 파일의 변경 내역을 저장하는 분산 버전 관리 시스템
- GitHub : 분산 버전 관리 툴인 깃 저장소 호스팅을 지원하는 웹 서비스로,
다른 사람과 코드를 쉽게 공유하고 협업하기 위한 공간이다.(깃 관리하는 곳)
📖 리눅스 명령어
git 명령어를 배우기 앞서, 간단하고 자주 사용하는 리눅스 명령 몇 가지를 알아보겠다.
명령어 | 명령어 의미 |
mkdir 디렉토리명 | 디렉토리를 만든다. |
cd ../ | 상위 디렉토리로 이동한다. |
cd 이동할 디렉토리 | 원하는 디렉토리로 이동한다. |
touch 파일명.확장자 | 파일을 만든다. |
vi | 유닉스 환경에서 가장 많이 쓰이는 문서 편집기 |
i | 편집 상태로 들어가는 단축키 |
esc | 편집 상태를 마친다. |
wq | 현재 편집기에서 빠져나온다. |
wq! | 오류가 있어도 강제로 빠져나온다. |
pws | print working directory의 약자 현재 작업 중인 디렉터리의 이름을 출력 |
ls | 디렉토리의 내용물을 보여준다 |
ls -l | l은 'long'을 의미하며, 한줄 한줄 길게 리스팅한다. |
ls -a | a는 'all'을 의미하며, 숨겨진 파일까지 모두 보여준다. 파일 이름이 .(점)으로 시작하는 파일은 보통의 ls 명령에서는 보여지지 않는 숨겨진 파일이다. 숨겨진 파일은 특정 프로그램의 설정파일인 경우가 많다. |
rm 삭제할 파일명 | 파일을 삭제할 때 사용한다. |
rmdir 삭제할 디렉토리명 | 해당디렉토리 삭제할 땐, cd ../ 로 나와서 상위 디렉토리에서 명령어 입력한다. |
📖 git 명령어
git 명령어 | 명령어 의미 |
git clone repo주소 . | • 깃허브에 만든 repository로부터 모든 파일을 가져오는 것을 의미한다. • 입력한 repo 주소와 내가 작업할 디렉토리가 동기화 된다. • 내가 작업할 디렉토리에 .git 디렉토리가 생성이 된다. |
git add | 수정된 파일이나 새로 만든 파일을 스테이징 환경에 보낸다(임시저장) |
git commit-m "커밋 메세지" | 변경 내역에 대한 이력 작성 |
git push | 깃허브로 파일들을 보낸다 |
git -v | 깃 버전 확인 |
git status | git에 의해 관리되는 파일들의 상태를 추적하고 확인한다. |
git diff | 파일 수정 이력 확인 |
아래는 내 컴퓨터에서 작업하는 디렉토리를 깃허브 repo와 동기화 시키는 과정이다.
1. 내 컴퓨터의 새 디렉토리에서 터미널을 실행시킨다.
2. 깃허브에 repo를 만든다.
3. 만든 repo의 주소를 복사한다.
4. 터미널에 git clone repo주소 . 을 입력하고 실행시킨다.
이렇게 하면 이제부터 제 디렉토리는 깃허브 겁니다. 깃허브가 관리합니다.
* .gitignore 파일 안에 적인 파일명은 깃이 무시한다.
📖 GUI와 CLI
- GUI(Graphic User Interface)
- 사용자가 편리하게 사용할 수 있도록 입출력 등의 기능을 알기 쉬운 아이콘 따위의 그래픽으로 나타낸 것
- 마우스로 편하게 클릭할 수 있는 환경
- CLI(Command Line Interface)
- 가상 터미널 또는 터미널을 통해 사용자와 컴퓨터가 상호 작용하는 방식을 뜻한다.
- 터미널에 리눅스 명령어를 입력해 프로그램을 실행하는 환경
- 회사서버의 90%이상은 리눅스 환경입니다.
📖 프레임워크와 라이브러리의 차이점(제어 흐름의 권한)
- 프레임워크
- 원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 골격, 뼈대를 의미한다.
- 장점
- 코드가 더 안전성
- 버그를 적게 생성함
- 중복 코드 개선작업을 빠르게 끝낼 수 있음
- 오픈소스 프레임워크에 기여할 수 있음 - 예시
- 웹 개발에 사용되는 Angular, Vue.js 등
- Java 서버 개발에 사용되는 Spring
- Python 서버 개발에 사용되는 Django, Flask
- 안드로이드 앱 개발에 사용되는 Android
- 아이폰 앱 개발에 사용되는 Cocoa Touch - 제어권한
- 프레임워크는 애플리케이션의 코드가 프레임워크에 의해 사용됩니다.
- 원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 골격, 뼈대를 의미한다.
- 라이브러리
- 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임.
즉 특정 기능을 모와둔 코드, 함수들의 집합이며 코드 작성 시 활용 가능한 도구들을 의미합니다. - 예시
- React: 웹에서 사용자 인터페이스를 만들기위한 JavaScript 라이브러리
- JQuery: HTML의 클라이언트 사이드 조작을 단순화
- Node.js에서 npm으로 설치한 모듈 - 제어권한
- 라이브러리를 사용할 때 사용자는 애플리케이션 코드의 흐름을 직접 제어해야 합니다.
- 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임.
📖 서비스를 만들 때
0. 기획자가 기획
1. URL 구조 작성
/about
/index.html
/a/index.html
/b/index.html
/c/index.html
2. model 설계
- 게시판
- 게시물 제목
- 게시물 내용
- 사진
...
3. 디자이너가 디자인
4. templates 작성(HTML 파일)
5. model 설계한 것과 templates 연동
❓헷갈렸던 점
✏️ git clone과 git pull의 차이점
- git clone
- git clone은 GitHub로부터 .git 폴더까지 전부 다 받아온다. 말 그대로 복제
- 리모트 설정을 자동으로 해주는 초기 다운로드에 사용한다.
- 처음에 팀원들과 깃허브(원격저장소)에서 레포지토리를 받아올때만 사용한다.
- git pull
- 리모트 설정이 이미 되어있을 때 업데이트 사항 등을 다운로드 할 때 사용한다고 합니다
- 누군가의 수정 내역을 받아올 때 사용한다.
- 내가 이미 .git 폴더를 가지고 있고, 작업하고 있는 파일도 있는 상태에서 사용한다.
✏️ 충돌이 일어나는 이유
- 같은 파일의 같은 라인을 수정 했을 때, 충돌이 일어난다.
- 같은 파일 이어도 다른 라인이면 충돌이 일어나지 않기때문에, 이 부분은 merge(병합) 하면 된다.
- 충돌은 내가 해결해야한다. 깃헙에서 해결해주지 않는다.
- .git 폴더는 하위폴더 내에서도 하나만 있어야 한다.
✏️ 깃허브에서 협업하려면?
- 깃헙의 콜레버레이터스에서 구성원 추가하면 됨
✏️ 개발을 하면서 마음가짐
- 나한테 너무 심한 자극을 주는 회사는 나가라.
- 코드 리뷰는 상처 받지 말아라
- 코드와 나는 인격적으로 분리해라
📚 Reference
- [git 컨벤션] (https://velog.io/@shin6403/Git-git-커밋-컨벤션-설정하기)
- [프레임워크와 라이브러리 차이] (https://cocoon1787.tistory.com/745)
🫥 하루 회고
git과 GitHub는 뭐랄까,,,
개인적으로 공부했었을 때 굉장히 애를 많이 먹었었다.
배우고 배워도 너무 어렵고 헷갈리고 까만창은 그냥 무섭고-!
그래도 한 58,000번 정도 보니까 쪼끔은 익숙해진 것같기도 하고 아닌 것 같기도 하고,,,
이건 기본 역량이라는 말을 듣는 순간 뜨끔했다^^;;
이래서 다른 공부 언제하니. 잘하자 민지야