$ cd ~
$ mkdir [디렉토리명]
$ cd [디렉토리명]
$ cd ..
$ pwd
$ ls
//또는
$ dir
$ ls -l
$ ls -a
7, 8번을 합쳐서, ls -al 처럼도 사용 가능
$ vim [파일명.확장자명]
$ rm -r [디렉토리명]
$ clear
$ exit
$ cat [파일명]
내 컴퓨터와 내 git계정을 연동시키는 작업
(본인 소유의 컴퓨터가 아닌 공용 컴퓨터라면 쓰지 않는게 좋음)
//이 폴더를 git으로 상태관리하겠다
$ git init
.git 폴더가 생성됨
(이 폴더를 삭제하면, 상태관리 내역이 사라진다 -> 만약, git으로 더이상 관리할 생각이 없다면 삭제하면 된다.)
$ git config --global user.name "[사용자명]"
global : 컴퓨터 전체에서 사용하겠다는 의미
$ git config --global user.email "[사용자이메일명]"
// 소문자 L 이다.
git config --global -l
$ git status
마지막 버전과 지금 현재 상태와의 차이를 보여줌
$ git config --list
//모든 수정사항 스테이징
$ git add [파일명.확장자명]
//해당 파일 스테이징
git add [파일이름]
//a.txt에 내가 수정한 것을 다음 버전(커밋)에 반영하겠다
git add a.txt
지금까지 변경한 내용을 다음 버전(커밋)에 반영
비유하자면, add : 내가 문서 작업을 할 때 계속 ctrl+s 누르면서 저장하는 작업
$ git commit -m "[메시지명]"
git commit : 지금까지 add했던 내용을 하나의 버전으로 묶겠다
비유하자면, commit : 그 저장한 파일을 "다른이름으로 저장"하는 작업
$ git commit -a -m "[메시지명]"
$ git log
$ git log --pretty=oneline // 한줄로 표기하기
지금까지의 커밋 이력을 확인
$ git show [커밋 id]
$ git diff
$ git diff [이전커밋 id] [이후커밋 id]
$ git checkout [커밋 해시]
$ git reset HEAD^ //현재 HEAD의 이전 커밋으로 되돌리기
$ git reset HEAD~n //현재로 부터 n 번째 이전 커밋으로 되돌리기
$ git reset [커밋 해시]
// 추가! reset의 3가지 옵션
$ git reset --soft [커밋ID] //head 만 바뀜
$ git reset --mixed [커밋ID] //staging 도 그 때로 바뀜
$ git reset --hard [커밋ID] //working디렉토리/staging 모두 그 때로 바꿈
$ git revert [커밋 해시]
파일 수정 한 뒤
$ git add .
$ git commit --amend : 최신 커밋 수정
$ git branch [브랜치명]
git branch -m [기존이름] [변경될이름]
$ git branch
$ git checkout [브랜치명]
//브랜치만들고 바로 이동
$ git checkout -b [브랜치명]
$ git branch -d 브랜치명
$ git log --oneline
$ git add .
$ git log --branches --graph
$ git merge [브랜치명]
$ git merge [브랜치명] --edit // 병합 후 바로 vi 편집기가 나오면서 커밋 메시지 수정 가능
$ git merge [브랜치명] --no-edit // 커밋 메시지 수정없이 바로 병합
$ git merge --abort
$ git branch [브랜치명] -d
원격 저장소에 있는 repository와 내 로컬 폴더(내 컴퓨터 내부에 있는 폴더)와 연결시키는 작업
$ git remote add origin [github 레포지 주소]
$ git remote add origin [branch 이름] // 없으면 생성됨
origin은 default처럼 사용하는 이름이고 따로 설정할 수도 있기도 함
$ git remote -v
$ git push -u origin master
$ git push
$ git push origin master
$ git pull
$ git pull origin master
$ ssh-keygen
//내 현재 폴더 위치에 원격저장소의 내용이 하나의 폴더가 되어 새로 생성됨 (그러나, 다시 그 폴더 안으로 들어가야 내가 원하는 내용들을 확인 가능)
$ git clone [원격 저장소 주소]
//따로 폴더 하나가 생성되지 않고, 원격저장소의 내용들이 내 현재 위치에 모두 들어옴
$ git clone [원격 저장소 주소] .
// 주의! 첫번째 커밋이 아니라면 풀 먼저하기
$ git remote remove origin
가져온 branch 내용은 origin/[브랜치] 로 저장됨
$ git fetch
$ git merge FETCH_HEAD
$ git checkout -b [브랜치명]
$ git push origin [브랜치명]
$ git remote remove origin
// 이렇게도 사용 가능
git remote rm origin
$ git reset --hard
$ git checkout --[파일명]
(예시) 일반적으로 어떤 명령어 순서대로 사용할까?
올리고자 하는 폴더에서 마우스 우클릭 후 Git Bash Here
git init
현재 위치에서 지역 저장소를 생성.
.git 폴더가 생성된다.
git remote add origin [github 레포지 주소]
로컬 저장소와 원격 저장소를 연결
git remote -v
원격 저장소에 연결됐는지 확인
git status
현재 프로젝트가 어떻게 관리되고 있는지 확인.
로컬 저장소의 현재 상태를 확인.
깃의 상태를 확인.
git log
수정된 변경 사항들을 확인.
만약 변경 사항이 있다면, git pull origin
을 통해 프로젝트를 가장 최신 상태로 만들어두기.
git add .
작업 공간의 파일들을 준비 영역에 추가
(git add 입력시 왼쪽과 같이 소스가 추가되지 않는다. git add는 특정 파일만 업로드하고자 할 때 사용)
만약, warning: LF will be replaced by CRLF in .project. 에러가 발생한다면?
- 원인: 문서의 개행 문자를 처리하는 OS 차이 때문에 발생하는 것이다.(참고 : 유닉스에서는 한 줄의 끝이 LF(Line Feed)로 이루어지는 반면, 윈도우에서는 줄 하나가 CR(Carriage Return)와 LF(Line Feed)인 CRLF로 이루어진다)
- 해결법: git config core.autocrlf true 를 입력 후, 다시 add 하기
git commit -m "[메시지명]"
로컬 저장소에 최종 저장.
커밋 메시지 [메시지명]을 붙여 커밋.
커밋할 브랜치에 체크아웃을 해둔 후, 새로운 파일을 해당 브랜치에 커밋.
git push origin master
로컬 저장소의 파일들을 원격 저장소로 올린다.
업로드.
git push origin --all
여러 브랜치를 한번에 모두 올리고 싶을 경우.
만약, 처음 push할 때는 로그인 창이 뜬다. 계정 정보를 입력하면 된다.
에러가 발생한다면?
- 원인: 원격 저장소와 로컬 저장소의 상태가 달라서 나는 오류일 것임(원격 저장소에는 README.md 파일이 있었기 때문인 것 같다.)
- 해결법: pull을 먼저 해주어 둘의 상태를 같게 한 다음 push를 해준다.
깃허브에서 소스가 잘 올라왔는지 확인
< 새프로젝트를 직접 생성하는 경우 >
STEP1. 프로젝트를 생성하는 위치에서 폴더 생성 후 .git 생성 => CLI 명령어 :
git init
STEP2. 로컬과 원격 저장소 연결 => CLI 명령어 :
git remote add origin (깃헙에서 생성한 레포지토리 주소)
STEP3. 폴더에 무언가 변경(파일이나 리드미나 테스트용 파일) 후 스테이징 => CLI 명령어 :
git add .
STEP4. 커밋 메시지 남기기 => CLI 명령어 :
git commit -m "메세지"
STEP5. 메인에 푸쉬하기 => CLI 명령어 :
git push origin main
이후에 다른 사람들이 포크하거나 레포지토리에 팀원 초대해서 같이 사용
< 다른 사람의 레포지토리 fork 하는 경우 >
STEP1. 레포지토리를 저장할 위치에서 => CLI 명령어 :
git init
STEP2. fork한 레포지토리 주소를 복사하여 로컬저장소와 원격저장소(GitHub)연결 => CLI 명령어 :
git remote add origin (복사한 주소값)
STEP3. 원격 저장소에 저장된 파일들을 로컬에 땡겨옴 => CLI 명령어 :
git pull origin main
STEP4. 나의 작업을 분리하기 위해 새 브랜치 생성 및 적용 => CLI 명령어 :
git branch (사용할 이름)
/git checkout (생성한 브랜치 이름)
브랜치 생성후, 해당 브랜치로 체크아웃. 체크아웃한 브랜치에서 새로운 브랜치 생성STEP5. 작업 후 로컬의 git이 변경 사항이 있는지 확인 => CLI 명령어 :
git status
STEP6. 로컬에서 변경 및 추가된 파일이 있다면 스테이지에 추가 => CLI 명령어 :
git add (파일명)
or.(변경 및 추가된 파일 모두)
STEP7. 스테이지에 올라간 파일에 대한 작업 내역 메시지 남기기 => CLI 명령어 :
git commit -m "여기에 메세지"
STEP8. 원격 저장소의 브랜치에 저장하기 => CLI 명령어 :
git push origin branchname (main으로 할 경우 메인에 저장되고, test로 할경우 test라는 브랜치에 저장됨)
STEP9. GitHub의 Pull requests 메뉴에 들어간 후 내가 작업한 브랜치에서 main 브랜치로(base <- compare) Pull requests하기
STEP10. 레포지토리의 마스터가 내가 올린 PR을 확인 후 코드 병합(Merge) or 충돌이 있을 경우 함께 해결 후 코드 병합
STEP11. 이 과정을 거치면 로컬에서 내가 작업한 파일들이 원격 저장소와 합쳐짐!!!
< 터미널 명령어 >
PWD
: 현재 내가 위치하고 있는 주소
CD (대상)
: 현재 위치에서 존재하는 폴더를 선택해서 들어감 CD test(test 폴더에 접근)
CD ..
: 현재 위치에서 상위 폴더로 이동
LS
: 현재 위치에 존재하는 파일 조회
CLEAR
: 터미널창 깨끗하게 청소
참고: git 명령어 모음, 총 정리 (gitbash, terminal)
참고: Git Bash #명령어 정리
참고: GitHub 사용법 - Git Bash를 이용한 소스 올리기