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 "[깃허브이메일]"
- 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 [파일명]