본문 바로가기
포스코x코딩온

[포스코x코딩온] 풀스택 부트캠프 3주차 정리 -2 (Github)

by 김선지 2023. 11. 7.

branch

-- 독립적을 어떤 작업을 하기 위해 필요한 개념으로 default로는 main(master) branch가 있다.


branch 생성 (cmd or bash 등에서 입력)

git branch (현재 local branch 목록 확인)
git branch 브랜치명 ('브랜치명'이라는 이름의 branch 생성)
git checkout 브랜치명 ('브랜치명'이라는 이름의 branch로 이동)
git checkout -b 브랜치명 (branch를 생성하고 그 branch로 이동 -b는 branch인 듯)
git branch -d 브랜치명 (branch 삭제, -d는 delete인 듯)

 

*만약 삭제할 브랜치가 현재 branch에 merge되어있지 않은 상태라면 git branch -D 브랜치명으로 해야함.  (git branch -d 브랜치명 하면 친절하게 설명해준다.)


---------
ex)
if - test2 라는 브랜치에 있었는데
main으로 이동하고싶음

git branch // expected result : *test2 , main

git checkout main // expected result : test2 , *main



단, test2 브랜치에서 수정을 했는데 add, commit 단계를 거치지 않았다면 checkout이 불가능하다.

즉 소스제어 쪽에 수정사항이 있고, 이를 반영하지 않았다면 checkout 불가능. 저장하고 나가라는 뜻



a와 b브랜치를 mergy 하고싶을 경우 (a에다가)

 

git checkout a (a 브랜치로 이동)
git mergy b (b브랜치와 mergy)

mergy할 branch에 있는 파일이, 받고싶은 branch에 없어도 된다. (branch에 새로운 파일을 만들어도 된다.)
mergy할 때 같은 파일의 다른 구역을 수정하는 것까지는 상관 없지만 ,같은 파일의 같은 곳을 수정하면 confilct가 일어남.

그때는 수기로 merge를 해주고 add, commit 해줘야함.
conflict가 일어나지 않으면 add, commit 안해도 됨 (이미 했음).

 



branch를 (main 제외) github에 push 할때

 

git checkout 브랜치명 
//해당 branch로 이동

git add
git commit

git push origin 브랜치명 
// (remote에 있는, origin/브랜치명에 push하겠다. 다만 브랜치가 없으면 생성하고 넣음.)



Local 에서 Remote 브랜치 제대로 삭제하기 

git branch -d 브랜치명 
// 1. Local에서 Branch 삭제

git push origin --delete 브랜치명
// 2. Remote (깃허브) Branch 삭제
 
 git branch -r
 //원격 branch (remote branch) 출력

 

git reset

git reset HEAD^
//가장 최근 커밋 취소, local repository와 remote repository는 두 개가 연결 되어있을 뿐
//엄밀히 말하면 크게 관련은 없다.
// 위의 git reset HEAD^는 local repository에 가장 최근에 올라온 커밋을 unstaged하게 한다.
(commit과 add를 취소한다.)


// 다음 두 명령은 동일하다.

git add .
git commit -m "커밋"

git commit -am "커밋"

 



pull request


github에서 내가 수정한 코드를 검토한 후 merge요청하는 것, push 권한이 없는 오픈소스 프로젝트에 기여할 때 사용함.

1. 코드를 branch에 올리기(push하기) 

2. github에서 pull request 생성하기 (base: mergy 당할 브랜치) ( compare: mergy 할 브랜치)

3. 다른 사람이 검토 -> mergy or not

 


.gitignore

깃에 올라가지 않는다. 공개하지 않는 정보를 담아둔다고 생각하면 될 듯하다.

새로 만든 파일만 가능.

*.txt : 확장자 txt 모두 무시
!test.txt : test.txt는 무시하지않음
test/ : test폴더 내부의 모든 파일 무시
/test : 현재 폴더 내에 존재하는 내부 파일 전부 무시