git clone 깃헙리포주소 <- repo 그대로 복붙
-> git log도 다 그대로 저장되어 있음
git remote -v 확인시 origin이 해당 주소로 출력
보통 push할 때 별도 절차 있음. 없애려면 personal access token을 만들어줘야함.
ex) git remote set-url origin https://토큰값@origin의 host주소 및 path 복붙
별도 인증없이 push하게하는 절차
[프로젝트 방법]
한쪽이 push를 해버리면 다른 한쪽은 git repo의 옛날 기준으로 업데이트를 하기때문에 git에서 reject함
-> git fetch, git merge 실행하거나 git pull로 로컬 작업공간을 먼저 최신화를 하고 push를 진행해야한다.
ex)
여기서 git log하면 내 로컬 영역만 나옴
그럼 다른 친구가 한걸 보려면? -> git log origin/main 실행
git diff origin/main <- origin과 main이 다른 점 살펴보기
git merge 사용
ex) git merge origin/main -> conflict 발생!
왜? : 여러 사람이 동시에 같은 파일의 동일 부분을 수정해서 merge하려했기 때문! -> 수동으로 해결해야함
(또는 서로 다른 브랜치로 작업하고나서 병합할때 생김)
충돌파일 = git status에서 unmerged로 표시 -> 충돌파일 열람해서 수정하자! -> vi 이름.확장자 ex) vi first.txt
>>>> 빠져야(?)하는 혹은 누락된 부분
<<<< 넣으려는거(HEAD)
충돌 부분은 <<<<< >>>>> 이런 부분이므로 빨리 찾으려면
해당 <<<< , >>>>부분에 커서를 대고 'dd' 두 번 눌러주면 한 줄 삭제가 된다.
수정방법은 vi로 바로 열람할 수도 있지만 vscode 등 여러 방법이 가능하다.
ex) code first.text <-여기서 찾기는 ctrl+F, 저장은 vscode에서 저장 후 종료
결론: git status로 unmerged 파일 찾기
-> 충돌 확인(파일 열람해서 >>>>, <<<<, ====부분 찾기)
-> 수동으로 해당 부분 삭제 등으로 해결
-> git add로 다시 스테이징
-> 브랜치 병합 혹은 커밋 푸시
원격 브랜치 확인: git branch -r
이렇게 해결된 경우 나머지 다른 사람들은 다시 git pull origin으로 최신 상태를 반영해야한다.
실제 내용은 cat 파일.확장자 (Ex> cat first.txt) <- 로 확인
실제로는
fetch , pull을 주기적으로 자주 해서 outdated를 최소화하고 작업 진행
보통 작업 진행은 충돌 방지를 위해 한 파일에 대해서보다는, 완전 서로 다른 부분에 대해 작업함.
충돌은 충돌하는 사람이 주로 해결해야 함.
branch: 특정 커밋 reference (작업내역) <- 매우 가볍고 메모리 디스크 등에 부담 X
활용 예)
1. 새 기능 개발시, 기능 개발용 branch에서 작업함으로써 다른 작업과 충돌 방지. 개발 완료시 branch 병합으로 깔끔함
2. 버그 수정용 branch로 하면 안전하게 효율적으로
3. 공개용 branch와 수정 작업용 branch 분리 (배포용은 안정성 , 신뢰성 높게)
4. 실험적 작업. (성공하면 개이득, 별로면 쉽게 버리기)
branch 열람하기
git branch 모든 로컬 브랜치 열람
git branch -a github(원격) 브랜치까지 전체 열람
git branch -r github 브랜치만 열람
git branch -v 브랜치 + 마지막 커밋 같이 열람
branch 생성하기
git branch 이름 <- 현재 위치한 브랜치에서 해당 이름의 브랜치 생성
branch 이동하기
git checkout 이름 <- 해당 이름의 branch로 전환
주의사항: 브랜치간 내역이 다른 경우, 작은 임의 브랜치에서 작업하다가 기존 main으로 이동할 때, 로컬도 그대로 반영되어 기존 작업내용이 로컬에서도 사라져서 출력됨! 이동하는 것에 주의가 필요!
branch 합치기 (git merge)
ex) git checkout main 으로 main 기존 본체로 이동 후, git merge feature 입력시, main이 feature 흡수
가능한 git은 자동 병합하지만 충돌 발생 可 -> 이때는 위에서처럼, 수동으로 해결해야함
branch 삭제 (git branch -d 이름) <- 가능한 함부로 하지 않도록 주의 (다른 팀원이 사용할 수도 있음)
git log --graph <- merge 현황 확인 可
다시 git log --graph 확인하면
그 외는 브랜치 main에 합치고 push에서 원격에 업데이트하면 origin/main 원격 저장소도 제일 상단에 올라감
'TechStudy > Git(hub)' 카테고리의 다른 글
Codespaces (깃헙 repo내 가상환경) (0) | 2024.01.04 |
---|---|
실전 프로젝트 끄적임(git ignore) 등.. (0) | 2023.09.25 |
[self addition] fork. pull request, issue (0) | 2023.08.21 |
[pre course] git show, git diff (0) | 2023.07.25 |
[pre course] 기본 세팅, 브랜치, 커밋 (0) | 2023.07.24 |