Sad Puppy 3 '형상관리/Git' 카테고리의 글 목록 :: 개발자 아지트
의문
:git branch -r 하면 나오는 브랜치 리스트 중에 일부를 내 로컬 브랜치로 가지고 오고싶은데 git fetch 로는 안되는건가?
 

git fetch 명령어는 원격 저장소의 모든 브랜치와 관련된 최신 변경 사항을 로컬 저장소에 가져온다. 그러나 이 명령어만으로는 원격 브랜치를 로컬 브랜치로 바로 생성하지 않는다. 원격 브랜치를 로컬 브랜치로 가져오려면 다음의 과정을 진행해야한다. 

 

  1. 원격 브랜치 목록 확인:이 명령어로 원격 브랜치의 목록을 확인할 수 있습니다.
    =>git branch -r
  2. 원하는 원격 브랜치를 로컬 브랜치로 체크아웃
    =>git checkout -b feature-branch origin/feature-branch

예시

: feature-branch라는 원격 브랜치를 로컬에 feature-branch라는 이름으로 가져오고 싶다면 다음과 같이 입력한다. 

 
git checkout -b <로컬_브랜치명> origin/<원격_브랜치명>
 
 

 

'형상관리 > Git' 카테고리의 다른 글

[Git] 원본 저장소 원격 추가하기  (0) 2024.07.29
[Git]브랜치 관리  (1) 2024.01.31
[Git] Detached Head의 발생 이유 및 해결 방법  (0) 2024.01.09

문제 상황: 원격저장소에 브랜치 하나 팟는데 포크딴 저장소에서는 해당 브랜치가 git pull을 해도, git fetch를 해도 안보임

 

해결을 위한 방법: 

 

개념:
포크된 저장소는 원본 저장소의 복사본

따라서 내 컴퓨터에서 직접 적인 연결은 포크된 저장소에 돼있음

따라서 새로 생성된 브랜치를 보려면 추가작업이 필요함. 

 

원본 저장소를 원격으로 추가해야함 

그 후 원본 저장소에서 fetch

그후 브랜치 확인과 체크아웃을 해야함


[해결 과정]

 

1. 원본 저장소를 원격으로 추가함. 

먼저, 원본 저장소를 upstream이라는 이름으로 원격 설정에 추가한다. 
이때 <original-repo-url>은 원본 저장소의 URL이다.

git remote add upstream <original-repo-url>
 

2. 원본 저장소로부터 fetch

upstream 원격 저장소로부터 최신 변경 사항을 가져온다. 

git fetch upstream
 

이 명령어는 원본 저장소의 모든 브랜치를 로컬 저장소로 가져오는 명령어이다. 

 

3. 새로운 브랜치 확인

원본 저장소에서 가져온 브랜치를 확인한다.

git branch -r
 

이 명령어는 모든 원격 브랜치를 보여준다.

 

여기서 upstream/<branch-name> 형식으로 원본 저장소의 브랜치를 볼 수 있다.

 

4. 새 브랜치 체크아웃

 

새로운 브랜치를 로컬에 체크아웃한다.

git checkout -b <new-branch-name> upstream/<new-branch-name>
 

이렇게 하면 원본 저장소의 새로운 브랜치를 로컬에 체크아웃할 수 있다. 

 

5. 변경 사항 포크된 저장소에 반영하기

필요하다면, 포크된 저장소에 변경 사항을 반영하기 위해 push할 수 있다.

git push origin <new-branch-name>

포크따온 원본 브랜치에 풀리퀘스트 하는 방법은? 

 

  1. 포크된 저장소에 변경 사항 푸시
     
    git add . git commit -m "설명 추가" git push origin <branch-name>
     
    이 명령어를 통해 <branch-name> 브랜치에 변경 사항이 반영된다.

  2. 먼저 포크된 저장소의 브랜치에서 필요한 모든 변경 사항을 완료하고 커밋한 후, 해당 브랜치를 포크된 저장소에 푸시한다.
  3. GitHub에 로그인하여 포크된 저장소로 이동한다.
  4. 웹 브라우저에서 GitHub에 로그인한 후, 포크된 저장소로 이동한다.
  5. New Pull Request 버튼 클릭
    • 포크된 저장소의 GitHub 페이지에서 "Pull Requests" 탭을 클릭한다.
    • "New Pull Request" 버튼을 클릭한다.
  6. 브랜치 비교 설정
    • Base Repository 설정: 원본 저장소와 그 안의 병합을 원하는 브랜치를 선택합니다. 일반적으로 main이나 develop 브랜치가 됩니다.
    • Head Repository 설정: 포크된 저장소와 그 안의 변경 사항이 있는 브랜치를 선택한다.
    GitHub는 기본적으로 포크된 저장소의 변경 사항을 원본 저장소의 브랜치에 비교하는 UI를 제공한다.

  7. 변경 사항 검토
    • 비교 화면에서 변경된 파일 목록과 커밋을 검토할 수 있다.
    • 모든 것이 올바른지 확인한다.
  8. Pull Request 제목과 설명 작성
    • Pull Request의 제목과 설명을 작성하여 변경 사항의 내용을 명확히 설명한다. 이때 변경의 이유, 수정한 내용, 테스트한 부분 등을 상세히 기술하면 좋다.
  9. 리뷰어 및 라벨 설정 (선택 사항)
    • 필요한 경우 리뷰어를 지정하여 검토를 요청할 수 있다.
    • 라벨이나 마일스톤을 설정하여 Pull Request의 성격을 명확히 할 수 있다.
  10. Create Pull Request 버튼 클릭
  11. 모든 설정이 완료되면 "Create Pull Request" 버튼을 클릭하여 Pull Request를 생성한다.

Pull Request 생성 후

  • 코드 리뷰: 원본 저장소의 관리자는 Pull Request를 검토하고 피드백을 줄 수 있다.
  • 수정 및 추가 커밋: 피드백이 있을 경우 로컬에서 수정을 진행한 후, 동일한 브랜치에 추가 커밋을 푸시하면 Pull Request에 자동으로 반영된다.
  • 병합: 모든 리뷰와 수정이 완료되면 원본 저장소 관리자가 Pull Request를 병합한다.

브랜치 삭제 방법

 

1. 로컬 브랜치 삭제

git branch -D [브랜치 이름]

 

 

2. 원격 브랜치 삭제 

 

원격 브랜치에 내 브랜치가 있는지 확인해본다. 

git branch -r

 

원격 브랜치를 삭제한다. 

git push [원격저장소 이름] -d [원격 브랜치 이름]

 

 

자주 쓰는 명령어

$git remote update #git remote를 갱신

$git status #현재 git 에서의 상태를 타나냄

$git branch -r #-r옵션으로 원격 저장소의 branch list를 볼 수 있음

$git branch -a #-a옵션으로 로컬과 원격 저장소 모두의 branch list를 볼 수 있음

$git branch -d <branchname> #git 브랜치 삭제

참고 - $echo ‘hello world’ > a.txt 하면 내용들어간 파일 생성됨

git add 할 때 숨김 파일도 추가하게 하기

특정 폴더에 있는 모든 파일을 추가하고자 할 때 git add * 명령어를 쓰곤 한다. 그런데 저렇게 하면 숨김파일은 추가가 안됨.

숨김파일까지 추가하고자 한다면?

$git add /.

Git원격저장소에 다른 branch push하기

master 브랜치말고 예를들어서 me 브랜치에 푸시한다 치자.

‘me’ branch가 안만들어 졌으면

$git branch me 를 하면 브랜치 생성됨

 

사용하는 작업 디렉토리를 me 브랜치로 변경

$git checkout me

정상적으로 변경되었으면 밑에 Switched to branch ‘me’ 이런 문구 뜸

 

테스트가 하고싶으면 .txt파일 하나 작성.

$git add . or $git add 특정파일

$git commit -m “메모 메모 메모 ~”

$git push origin (origin의 master가 아닌 다른 브랜치명)

 

 

Detached Head: head가 branch로 부터 떨어져있는 상태를 말함. 

branch 를 통해서가 아닌 직접 다이렉트로 commit을 참조하고 있는 상태를 말함. 

 

git 에서 head는 단 하나만 존재하며, 시작점 같은 개념이라고 한다. 
head는 특정 branch를 가리키고 그 branch는 해당 branch의 마지막 commit을 가리킨다.
보통의 경우엔 head-> branch -> commit 의 참조순서를 가진다.

하지만 이 때, check out 명령어로 특정 커밋으로 check out할 경우, 깃은 참조하던 branch를 잃어버리고, 직접 특정 commit을 참조하는 detached head 상태가 된다.

git checkout <revision number>명령어를 사용해, 특정 커밋으로  check out할 경우 detached head상태가 된다.

출처: https://devcamus.tistory.com/6
고 한다. 근데 난 revision number 명령어를 사용해서 커밋하지 않았는데?;


 


아 내가 checkout 할 때 -b 옵션(브랜치 이름을 변경해서 가져올 수 있는 옵션, 로컬 저장소를 만들 수 있는 옵션) 혹은 -t(원격 브랜치를 이름 변경없이 로컬 저장소를 만들 수 있는 옵션)을 추가하여 명령어를 실행하지 않아서 임시로 해당 브랜치로 이동하게 되었고, 따라서 로컬 브랜치가 만들어지지 않았음. 그래서 HEAD detached at 상태였다.

git checkout -b 브랜치명  혹은 git checkout -t 브랜치명
명령어를 주면 로컬 브랜치를 만들 수 있다. 





 

'형상관리 > Git' 카테고리의 다른 글

[Git] 원격브랜치를 로컬환경에 가져오기  (0) 2024.08.15
[Git] 원본 저장소 원격 추가하기  (0) 2024.07.29
[Git]브랜치 관리  (1) 2024.01.31

+ Recent posts