프로그램셋업 & 명령어/git

git CLI

wooweee 2023. 6. 11. 20:25
728x90

 

작동 순서

change -> staged chagne -> commit -> push

 

 

  • change: 변화된 모든 file을 읽는다.
  • staged change : change된 file 중 같이 commit 할 file들을 group해 놓은 것. 다시 change로 roll back이 가능하다.
    • ps. staged change가 된 a.txt 파일이 존재하고, commit 하지 않은 상태에서 a.txt file을 수정시 staged 와 change 영역 2곳에 동일 파일이 나타나게 된다. 
    • 물론 change file 영역에서 staged 영역으로 옮기면 합쳐진다.

 

 

 

git log

  • commit 이력을 볼 수 있다.
    • head -> master : 내 컴퓨터에 commit 된 것
    • origin/master : github의 코드 저장소에 올라간 커밋

 

 

git log --graph --all --decorate 

  • git log를 조금 더 시각적으로 보여주는 것

 

 

git add : staged 영역에 올리는 방법

  • git add 파일명 : 파일 1개만 staged area에 올릴 경우\
  • git add . : 파일 여러개를 staged area에 올릴 경우

 

git commit : staged 에 존재하는 file commit 하는 방법

  • git commit -m "메시지 작성"
  • git commit -help : -m과 같은 모든 option 보여준다.

 

 

git push orign main : push하는 방법

  • 위와 같이 하면 된다. main 말고 다른 branch가 존재시, branch 명을 변경하면 된다.

 

 

2. git checkout and hard reset

 

2.1. checkout

  • git checkout으로는 해당 이전 Version file로 이동이 가능하다. 하지만 정말 삭제한 것은 아니다.
  • git checkout commit_nickname : 이전 commit으로 head가 이동, head -> master가 보이지 않음
  • git checkout master : 원래 최종 commit으로 이동

 

2.2. reset

  • 정말로commit을 삭제 해서 이전 version으로 넘어가는 작업
  • git reset --hard HEAD
    • --hard : 정말로 삭제한다는 뜻
    • HEAD 로 부터 얼마나 이전으로 갈지 나타낸다. HEAD는 아무작업 안하는 거고 ^ : head로 부터 하나 이전 ^^: 2개 이전 ^^^: 3개 이전으로 돌아간다.
    • 내 desktop에서만 삭제
  • git push origin master --force
    • 그리고 삭제된 push되었던 file을 github.com의 origin에서도 삭제를 해야한다.
    • 내 원격저장소(=origin)인 github repository에서도 삭제된다.

 

2.3. hard reset

  • reset의 종류
    1. hard reset : reset 하는 파일들을 완전히 삭제
    2. soft reset : staged change 영역으로 이동, untage영역에 작업중인 파일이 있을 때 섞이지 않고 싶을 때 사용
    3. reset : 복합 reset - 파일을 삭제하지 않고 다시 chage 영역으로 이동 -> commit 이전상황으로 변경이 된다. hard reset과 달리 이전 상황으로 갔다고 파일을 삭제 하지 않고 untracked로 변경한다.

 

 

  • git remote -v 
    • fetch:git fetch: 로컬 저장소와 원격 저장소의 변경 사항이 다를 때 이를 비교 대조하고 git merge 명령어와 함께 최신 데이터를 반영하거나 충돌 문제 등을 해결
    • push: 
  • 복합 reset 수정 후 update 방법
    1. git pull origin main : origin의 정보를 받아오는 것 -> conflict가 발생할 수 있다.
      • git conflick 발생시, conflict file 수정 후
      • git add .
      • git commit -m "conflick 해결 message 작성"
      • git push origin main
    2. git push origin main --force
      • 1.번 방식의 복잡한 conflict 상황을 단번에 해결
      • 제일 많이 사용

 

대부분의 경우 hard reset 많이 사용하고, 이외의 경우 복합 리셋을 사용한다.

 

 

 

3. checkout branch

■ 새 브랜치 만들기
git checkout -b (브랜치명)
※한꺼번에 하기
git checkout (커밋별명) -b (브랜치명)

■ 마스터 브랜치로 돌아가기
git checkout master

■ 브랜치 목록 보기
git branch

 

위의 방법들은 과거 시점으로 돌아가서 새 브랜치를 만드는 방법을 알려준다.

그리고 branch를 만든 상황은 현재 내 desktop에서만 적용이 되고, 실제 origin에 올리기 위해서는 마지막에
git push origin 새브랜치이름 을 하면 보여준다.

 

 

 

4. branch 삭제, 커밋 수정, 커밋 파일 상태 보기, stage 영역에서 제거, .gitignore 파일에 file , folder 넣기

■ 브랜치 삭제
git branch -d (브랜치명)

커밋 수정 - 추가하는 것을 깜박한 파일 commit에 추가해주는 방법
▷ 커밋 수정(amend)은 가장 마지막 커밋을 수정하는 것
git commit --amend -m "(메시지)"
git commit --amend --no-edit
--no-edit ▷ 커밋 메세지는 수정하지 않는다

■ 커밋할 때 파일들의 상태보기
git status
▷ stage 영역에 있지 않은 파일은 빨간색으로 표시
▷ stage 영역에 있는 파일은 초록색으로 표시

■ .gitignore파일에 git에 추가하고 싶지 않은 파일이나 폴더 입력
폴더를 추가하는 방법 ▷ /(폴더명)

■ stage 영역에서 제거
git rm -r (제거할 것) --cached 

  • -r : 폴더 제거시 사용
  • --cached: 이미 staged 영역에 오르면 캐시 때문에 삭제가 안되는데 이를 방지한다.

 

.gitignore

  • / : folder 적용
  • . : filer 적용

 

etc

  1.  touch file명.확장자 : file 생성
  2. mkdir : folder 생성
  3. rm file명.확장자 : file 제거
  4. rm -r folder명 : folder 제거