Git, Github

신예환·2022년 10월 1일
0

목록 보기
1/1

Git 사용흐름

Git 내부구조


Git 명령어 보면서 이해하기

Git을 이용한 기록

  • git init
  • git status
  • git add . or git add a.txt
  • git config user.name
  • git config user.email
  • git config --global --unset-all user.name
  • git config --global --unset-all user.email
  • git config user.name
    • 삭제되었는지 확인
  • git config user.email
    • 삭제되었는지 확인
  • git config user.name "[깃허브아이디]"
    • git config user.name "shinyehwan"
  • git config user.email "[깃허브가입이메일]"
    • git config user.email "jghisjl007@naver.com"

Git commit

  • git commit -m "[메세지]"
    • git commit -m "소설의 첫 줄 완성"
  • git log

Git을 이용해서 과거의 소스코드 불러오기

  • git checkout -f
  • git log
    • 돌아가고 싶은 커밋의 커밋코드 확인
    • 아래쪽이 과거, 위쪽이 현재
  • git checkout -f [커밋코드]
    • 과거로 이동
  • git checkout -f .
  • git checkout -f master
    • 다시 현재로 이동

원격 리포지토리 연결

  • git remote -v
    • 기존 연결 확인
  • git remote add origin [원격리포지터리주소]
    • 원격리포지터리를 origin 이라는 즐겨찾기 이름으로 변경
    • origin 이라는 이름은 다른 이름으로 바꿔도 됩니다.
  • git remote remove origin
    • origin 이라는 이름의 즐겨찾기(외부 리포지터리와의 연결) 제거
  • git push origin master
    • origin 이 가리키는 원격지 주소로 로컬 리포지터리의 커밋들을 업로드

PULL

  • git init
  • git remote add origin [원격 리포지터리 주소]
  • git pull origin master

PUSH

  • git config user.name "[GITHUB아이디]"
    • git config --global user.name "[GITHUB아이디]"
    • 이런식으로 --global 옵션을 붙이면 저장소를 만들 때 마다 입력할 필요가 없다.
  • git config user.email "[GITHUB이메일]"
    • git config --global user.email "[GITHUB이메일]"
    • 이런식으로 --global 옵션을 붙이면 저장소를 만들 때 마다 입력할 필요가 없다.
  • git add .
  • git commit -m "작업2"
  • git push origin master
  • git pull origin master

충돌과 병합

  • 시나리오
  • 초기상태
    • 원격지 커밋 : 1, 2
    • A폴더 커밋 : 1, 2
    • B폴더 커밋 : 1, 2
  • A폴더에서 커밋 3 생성 후 커밋
    • 원격지 커밋 : 1, 2, 3
    • A폴더 커밋 : 1, 2, 3
    • B폴더 커밋 : 1, 2
  • B폴더에서 커밋 3b 생성 후 커밋
    • 원격지 커밋 : 1, 2, 3
    • A폴더 커밋 : 1, 2, 3
    • B폴더 커밋 : 1, 2, 3b
  • B폴더에서 푸시
    • 푸시실패
      • 이유 : 원격지가 가진 최신 커밋으로 부터 파생된 커밋이 아니면 받아들이지 않기 때문에
  • B폴더에서 풀
    • 서버에 있던, 3과 로컬에 있던 3b가 충돌
    • 충돌수정 후 커밋(커밋 4)
  • B폴더에서 푸시
    • 원격지 커밋 : 1, 2, 3, 3b, 4
    • A폴더 커밋 : 1, 2, 3
    • B폴더 커밋 : 1, 2, 3, 3b, 4
  • 올바른 협업을 위한 작업 순서
    • git pull origin master
      • 충돌시, 자동병합 혹은 수동병합
    • 소스코드작업
    • git add .
    • git commit -m "메세지"
    • git pull origin master
      • 충돌시, 자동병합 혹은 수동병합
    • git push origin master

Git Clone

  • 원격지 저장소로부터 새로운 저장소를 만드는 방법
    • 방법1, 정석방법
      • mkdir 폴더명
      • cd 폴더명
      • git init
      • git config user.name "[깃허브아이디]"
      • git config user.email "[깃허브이메일]"
      • git remote add origin [원격 리포지터리 주소]
      • git pull origin master
    • 방법2, git clone
      • git clone [원격 리포지터리 주소] 폴더명
      • cd 폴더명
      • git config user.name "[깃허브아이디]"
      • git config user.email "[깃허브이메일]"

--allow-unrelated-histories

  • git pull 이 안될때 해결하는 방법
    • 안되는 원인 : 간단히 설명하면, 로컬 저장소와, 원격 저장소의 히스토리가 많이 달라서 이다. 올바른 협업을 위한 작업 순서를 지킨다면 이런일이 발생하지는 않는다.
    • 방법1, --allow-unrelated-histories
      • git pull origin master --allow-unrelated-histories
      • 무식하게 합치는 방법이다. 작업전에 폴더에서 중요한 파일들을 백업 후 진행하자.
    • 방법2, 로컬폴더를 삭제 후 clone 하여 재 생성
      • 깔끔한 방법이긴하지만, 폴더 삭제 전에 중요한 파일들을 백업해야한다.

mac과 윈도우간의 협업세팅

  • 윈도우 : git config --global core.autocrlf true
  • MAC : git config --global core.autocrlf input
  • 윈도우의 경우에는 이 명령어도 입력해주세요.
  • git config --global core.ignorecase false

Git add 취소

  • 명령어 : git rm --cached [파일명]
profile
더디가도 함께가자

0개의 댓글