일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 로컬 런타임
- Python
- ollama
- streamlit
- Github
- ai 캠프
- djangorestframework
- 정치기 필기
- pandas
- 오블완
- finpilot
- ai_캠프
- team_project
- mysql
- 머신러닝
- seaborn
- 파이썬
- pytorch
- Jupyterlab
- EC2
- lightsail
- aws
- mifare
- conda
- sLLM
- ML
- 티스토리챌린지
- django
- ai캠프
- chromeextention
- Today
- Total
greatsangho의 이야기
캠프 67일차 - 한 페이지에 정리하는 Git CLI 사용법 본문
Git - Downloads
Downloads macOS Windows Linux/Unix Older releases are available and the Git source repository is on GitHub. Latest source Release 2.47.1 Release Notes (2024-11-25) Download Source Code GUI Clients Git comes with built-in GUI tools (git-gui, gitk), but ther
git-scm.com
깃은 여기서 받을 수 있다. 설치 시 그대로 설치하면 된다.
먼저 설치한 Git Bash를 실행해준다. 깃에서 리눅스 명령어를 사용할 수 있다.
clear : 지우기
ls : 파일, 폴더 목록
ls -a : 숨긴 파일
ls -l : 리스트로 자세히
ls -al : 숨긴파일까지 리스트로 자세히 -> 주로 사용함
symbolic -> 바로가기
-rw-r--r--
- : 종류(파일 -, 폴더 d, 바로가기 l)
rwx : read, write, excute
읽기, 쓰기, 실행에 관한 권한
사용자, 그룹, 외부사용자에 대해 표기
chmod 777 : 모든 권한을 부여
7인 이유
r w x
4 2 1 -> 이진수로 2^2, 2^1, 2^0 이다.
모든 권한 4 + 2 + 1 = 7
echo 넣을 내용 > 파일 이름 으로 파일 생성
rm으로 파일 제거
cd .. : 상위 디렉터리로 이동
pwd : 현재 위치
git init을 이용해 깃을 사용할 수 있는 상태로 초기화
git status는 깃의 상태를 보여줌
빨간 글씨는 변경되었으나 스테이지로 add하지 않은 상태
git add를 이용하면 스테이지 되고, 초록 글씨로 바뀜
깃허브에 commit하기 위해서는 설명이 필요하기 때문에 git commit -m "설명"을 이용
변경사항을 git log로 확인 가능
echo와 cat
echo는 파일을 생성할 때 안에 내용을 넣어서 생성하거나 추가할 수 있음
> 는 생성할 때
>>는 추가할 때
cat은 내용을 볼 수 있음
변경된 사항을 git status로 확인
변경된 사항을 바로 stage에 add하고 commit하고 싶으면 git commit -am "메세지"를 한다.
다음과 같이 파일을 변경해본다
git diff : 변경 사항 확인
git checkout : 변경 여부 확인
삭제 된 파일도 인식한다.
git diff는 변경된 사항을 보여준다.
실습
- hello-git2 디렉터리 만들기
- hello-git2를 repository로 생성하기 -- git init
- 임의의 파일 생성하기
- git에 해당파일 스테이징 하기 add
- git에 commit 하기 commit -m " message "
- 파일 내용수정하기
- git status로 상태 확인하기
- git diff 확인해기
- git --stat : 커밋과 관련 파일을 함께 확인
- 스테이징에 올라간 수정사항을 다시 내리기 - 명령어는 가이드대로
- 스테이징과 커밋을 동시에 실행하기 -am "message"
test라는 폴더 안에 여러 파일을 넣고 add하면 다음과 같다.
한번에 commit이 가능하다
폴더 안에 있는 파일을 수정해도 마찬가지로 add와 restore가 가능하다.
git resotre는 파일을 지정하여 git의 최신 상태로 복구 시킨다. 파일은 git에 저장된 상태로 복구된다.
새로운 커밋을 해본다.
git reset HEAD^는 커밋을 취소한다. 이때 파일은 변하지 않는다.
git reset --hard <주소>를 통해 강제로 해당 상태로 되될릴 수 있다. 이 때 파일도 변한다.
git revert를 통해 해당 상태에서의 메세지를 바꿀 수 있다.
vi 편집 가능
i로 쓰기
esc로 i에서 쓰기모드 나가기
:wq로 저장 및 나가기
revert 된 것을 확인할 수 있다.
git branch <브렌치 명>으로 브렌치를 추가할 수 있다.
HEAD에서 새로운 커밋을 하면 HEAD만 달라진다.
git switch apple을 하면 apple로 head가 바뀐다.
git log --oneline은 log를 간소화 한다.
git log --oneline --branches는 branch 전체를 보여준다
git log --oneline --branches --graph는 git이 어떤 상태인지 시각적으로 보여준다.
git merge
#title
work2
#title
work
---------------------------------------------------------
#title
work
#title
work3
---------------------------------------------------------
#title
work2
#title
work3
---------------------------------------------------------
같은 파일 다른 위치이면 문제 없다.
같은 위치에 수정이 있으면 충돌이 발생하며 직접 고쳐야 한다.
#title
<<<<<<< HEAD
work2
=======
work1
>>>>>>> o2
#title
work
git branch -d o2
강제 제거는 git branch -D o2
o2라는 branch를 제거한다.
touch는 파일 생성, 여러 파일을 만들거나 기존에 있던 파일은 업데이트한다.
다음과 같이 되어있는 상태를 reflog를 보면 다음과 같다.
git reflog는 reference log의 줄임말로, 로컬 저장소에서 발생한 모든 HEAD 및 브랜치의 변경 이력을 보여주는 명령어이다.
git reset --hard로 삭제된 커밋도 reflog를 통해 복구할 수 있으며, 삭제된 브랜치의 이전 위치를 확인하고 복구할 수 있다.
- 실습
- 폴더 hello-git4 생성
- 해당 폴더로 이동해서 git 초기화
- text.txt 파일 생성
- content 1
- 커밋
- 브랜치 분리(생성) work1
- 브랜치 분리(생성) work2
- work1으로 이동
- text.txt파일에 content 1 --> 2로 변경 하고 커밋
- work1.text 생성
- workd2으로 이동
- text.txt파일에 content 1 -> 3 으로 변경
- work2.txt 파일 생성
- master 브랜치로 와서
- 각각 의 브랜치들을 병합
- 만약 conflict가 발생하면 적당한 수정사항을적용해서 해결
- work1, work2 브랜치는 삭제
지금까지는 로컬에서 깃을 사용하였다. 깃허브에 연결해보자. 먼저 New를 눌러 깃허브 레포지토리를 만들어준다.
생성할 때는 readme를 생성하지 않아야 바로 올릴 때 충돌이 일어나지 않는다.
주소를 복사한다.
아무 파일을 추가해 준다.
init을 해준다. 파일을 커밋한다. master 이름을 main으로 바꾼다.
git remote add origin <깃주소>를 이용해 github를 origin에 추가해준다.
git remote -v로 확인할 수 있다.
git push -u origin main을 한다.
잘 올라간 것을 확인할 수 있다.
로컬을 commit만 하면 되지만, 깃허브에 올리려면 git push를 해 주어야 한다.
만약 다른 사람이 올린 파일로 인해 새로운 파일이 추가되었다면 git pull을 통해 싱크를 맞출 수 있다.
git clone으로 가져올 수 있으며, 그냥 가져오면 폴더로 묶어서 가져오고, . 을 찍으면 페이지에 보이는 상태로 가져온다.
다른 레포지토리에 push가 되지 않으면 contributer 권한을 받지 못한 것일 수 있다.
반드시 github에서 온 쪽지를 확인하고 들어가서 'accept invitation'을 눌러야 push를 할 수 있다.
혹시 충돌이 나서 올라가지 않으면 git pull origin main을 실행한다.
이와 같이 push도 가능하고, pull을 하면 다른 사람이 올린 것을 가져올 수 있다.
새로운 branch를 생성하고 push 하기 위해서는 git push origin <branch 이름>으로 실행한다.
main으로 pull 요청을 보낼 수도 있다.
깃허브에는 프로젝트 관리를 위한 프로젝트 탭이 있다.
오른쪽 위의 + 표시를 누르면 프로젝트를 생성페이지로 이동해서 New project를 생성할 수 있다.
Convert to issue를 이용하면 진행중인 프로젝트에 issue를 줄 수 있다.
이제 git을 사용해서 협업을 하면 된다!
'프로그래밍 > SK AI 캠프' 카테고리의 다른 글
캠프 77일차 - AWS EC2 Amazon Linux 인스턴스 설정 및 Nginx + Gunicorn + Django (1) | 2024.12.13 |
---|---|
캠프 76일차 - AWS lightsail 사용하여 AWS 입문하기 (0) | 2024.12.12 |
캠프 65일차 - RAG를 활용한 챗봇 만들기 프로젝트 완료 (2) | 2024.11.27 |
캠프 64일차 - 3차 프로젝트(LLM, RAG를 이용한 내외부 데이터셋 기반 질의응답 시스템) (3) | 2024.11.26 |
캠프 63일차 - 자연어-이미지 멀티모달(텍스트 기반 이미지 생성) (0) | 2024.11.25 |