본문 바로가기
부트캠프 개발일지 2023-2024/Git & Github

[1주차] Git / Github

by whereanna00 2023. 10. 6.

Git / Github 공부정리


원격환경과 로컬환경을 구분한다.

원격환경 = Github

로컬환경 = 내 컴퓨터


1. 팀원이 수정한 코드를 받아올 때 

(1) 처음이라서 새 파일에 clone 해서 받는 경우 -> 로컬(노트북)에 빈파일 생성 -> vscode에 열기 -> git clone 프로젝트코드링크 . -> 로컬에서 코드 수정 -> branch 확인하고 add, commit, push ->

push 할 때 다른사람이 내가 코드를 수정하는 동안 아무 commit을 올리지 않은 경우 -> 그냥 그대로 진행함

push 하려하는데 다른 사람이 내가 코드를 수정하는 동안 또 다른 commit 을 한 경우 -> git pull origin release(브랜치명) 해서 원격환경의 최신업데이트 git pull 코드 당기고 적용시키기 & 컨플릭트 있으면 해결하기 -> git push

 

(2) 처음이 아니라서 내 로컬에 이미 작업파일이 있는 경우 -> git pull origin release -> 로컬에서 코드수정 ->

push 할 때 다른사람이 내가 코드를 수정하는 동안 아무 commit을 올리지 않은 경우 -> 그냥 그대로 진행함

push 하려하는데  다른 사람이 내가 코드를 수정하는 동안 또 다른 commit 을 한 경우 -> git pull origin release(브랜치명) 해서 원격환경의 최신업데이트 git pull 코드 당기고 적용시키기 & 컨플릭트 있으면 해결하기 -> git push

 

++ 추가사항

git pull origin release = release 라는 branch에서 당겨오기

git pull origin = ?


원격환경과 로컬환경을 연결해주는 변수가 있다. (현재는 origin)

// 변수 상태 확인 //

git remote -v

위 처럼 코드가 나오면 'origin'이라는 이름을 가진 원격환경과 로컬환경을 연결해주는 매개체 변수가 있다는 것을 확인할 수 있다.

 


원격환경과 로컬환경을 연결해주는 변수를 새로 하나 추가할 수도 있다.

// 변수 새로 추가//

git remote add origin_test(예시) 깃허브프로젝트레포지토리코드복사링크 .

더보기

git remote add origin_test https://github.com/dancinncoder/B_team_five_website.git .
ihamin@ihamin-ui-MacBookAir B_team_five_website % git remote -v                                                                     
origin  https://github.com/dancinncoder/B_team_five_website.git (fetch)
origin  https://github.com/dancinncoder/B_team_five_website.git (push)
origin_test     https://github.com/dancinncoder/B_team_five_website.git (fetch)
origin_test     https://github.com/dancinncoder/B_team_five_website.git (push)


원격환경과 로컬환경을 연결해주는 변수를 삭제할 수 있다.

// 변수 삭제//

git remote remove origin_test(예시)

더보기

git remote remove origin_test
ihamin@ihamin-ui-MacBookAir B_team_five_website % git remote -v                
origin  https://github.com/dancinncoder/B_team_five_website.git (fetch)
origin  https://github.com/dancinncoder/B_team_five_website.git (push)

origin_test 매개체 변수를 지정하여 지워서, git remote -v 를 통해 현황을 보면 origin 밖에 남아있지 않다.


현재 나의 로컬 환경이(노트북 또는 PC) 연결되어 있는 branch가 무엇인지 확인

// 로컬환경이 연결되어 있는 branch 확인//

git status

더보기

git status
On branch release  현재 'release'라는 branch에 연결되어 있다는 뜻이다.
nothing to commit, working tree clean


현재 나의 로컬 환경이(노트북 또는 PC) 연결되어 있는 branch를 다른 브랜치로 이동하기

// 로컬환경이 연결되어 있는 현재 branch 에서 다른 branch 로 이동 //

git checkout main(예시: 브랜치 이름)

checkout = 이동해라

더보기

git checkout main
Switched to branch 'main'
Your branch is behind 'origin/main' by 1 commit, and can be fast-forwarded.
  (use "git pull" to update your local branch)
ihamin@ihamin-ui-MacBookAir B_team_five_website % git checkout dev
branch 'dev' set up to track 'origin/dev'.
Switched to a new branch 'dev'

 

++ 업데이트

Git 2.23이 출시되면서 checkout의 일부 기능이 switch와 restore로 분리되었다.

따라서 아래와 같이 상황에 맞게 쓰면 된다.

 

git checkout = tree-ish를 처리하기 위한 고급 옵션

git switch = branch 전환(이동)

git Restore = commit 복원 을 사용하는 것을 권장한다.

 


 

한 branch 에서 팀원들과 협업하다 꼬인 경우 -> 새 branch를 만들어 그곳으로 이동한다

// git checkout -b release1(예시이름)

더보기

git checkout -b release1
Switched to a new branch 'release1'
ihamin@ihamin-ui-MacBookAir B_team_five_website % git status
On branch release1 현재 새로만든 release1 이라는 branch에 로컬환경이 연결되어 있음

 

시나리오 (1)

 

위와 같이 새 branch를 만들고 -> 내 로컬(노트북)환경이 새로 만든 branch에 연결한다.

-> 이제 로컬에 있는 내 프로젝트에서 코드 수정

-> add (stage 하기) git add .

-> commit git commit -m "fix"

-> push git push origin release1 (이 단계를 해야만 원격환경인 github에 반영이 된다. 중요)

 

더보기

git status
On branch release1
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   index.html

no changes added to commit (use "git add" and/or "git commit -a")
ihamin@ihamin-ui-MacBookAir B_team_five_website % git add .
ihamin@ihamin-ui-MacBookAir B_team_five_website % git commit -m "fix"
[release1 180f66a] fix
 1 file changed, 1 insertion(+), 1 deletion(-)
ihamin@ihamin-ui-MacBookAir B_team_five_website % git push origin release1
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 286 bytes | 286.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
remote: 
remote: Create a pull request for 'release1' on GitHub by visiting:
remote:      https://github.com/dancinncoder/B_team_five_website/pull/new/release1
remote: 
To https://github.com/dancinncoder/B_team_five_website.git
 * [new branch]      release1 -> release1


시나리오 (2)

 

팀원입장: 새 branch로 올려진 코드를 받아서 수정해서 다시 push 해야 하는 경우

 

Github Repository Project Code Link 복사 -> 빈 파일(새파일) 만들어서 vscode에 넣기

-> Terminal 열어서 git clone Github Repository Project Code Link  

-> git status 입력새서 현재 로컬이 연결되어 있는 branch가 무엇인지 확인

-> 코드 수정

-> 이제 branch 변경해야 하는데 git switch 또는 git checkout 또는 아래 사진과 같이 vscode 하단클릭 후 목적지 branch 클릭.

-> branch 이동이 완료되었다면 이제 -> git add .

-> git commit -m "fix"

-> git push origin release


Git 기록보기

// git log

OR

// git log --oneline

 

https://velog.io/@jiiiiinni/Git-GitHub-push%ED%95%9C-commit-%EC%82%AD%EC%A0%9C

 

[Git, GitHub] push한 commit 삭제

git log, reset, revert

velog.io

 


더보기

 

ihamin@ihamin-ui-MacBookAir B_team_five_website % git pull origin main
From https://github.com/dancinncoder/B_team_five_website
 * branch            main       -> FETCH_HEAD
hint: You have divergent branches and need to specify how to reconcile them.
hint: You can do so by running one of the following commands sometime before
hint: your next pull:
hint: 
hint:   git config pull.rebase false  # merge
hint:   git config pull.rebase true   # rebase
hint:   git config pull.ff only       # fast-forward only
hint: 
hint: You can replace "git config" with "git config --global" to set a default
hint: preference for all repositories. You can also pass --rebase, --no-rebase,
hint: or --ff-only on the command line to override the configured default per
hint: invocation.
fatal: Need to specify how to reconcile divergent branches.
ihamin@ihamin-ui-MacBookAir B_team_five_website % git config pull.rebase false
ihamin@ihamin-ui-MacBookAir B_team_five_website % git config pull.rebase false
ihamin@ihamin-ui-MacBookAir B_team_five_website % git pull origin main
From https://github.com/dancinncoder/B_team_five_website
 * branch            main       -> FETCH_HEAD
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Auto-merging style.css
CONFLICT (content): Merge conflict in style.css
Automatic merge failed; fix conflicts and then commit the result.
ihamin@ihamin-ui-MacBookAir B_team_five_website % git add .
ihamin@ihamin-ui-MacBookAir B_team_five_website % git commit -m "code merge"
[detached HEAD 4e990d9] code merge
ihamin@ihamin-ui-MacBookAir B_team_five_website % git push origin main
To https://github.com/dancinncoder/B_team_five_website.git
 ! [rejected]        main -> main (non-fast-forward)
error: failed to push some refs to 'https://github.com/dancinncoder/B_team_five_website.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. Check out this branch and integrate the remote changes
hint: (e.g. 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
ihamin@ihamin-ui-MacBookAir B_team_five_website % git pull     
From https://github.com/dancinncoder/B_team_five_website
 * [new branch]      dev        -> origin/dev
You are not currently on a branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.

    git pull <remote> <branch>

ihamin@ihamin-ui-MacBookAir B_team_five_website % git pull main
fatal: 'main' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
ihamin@ihamin-ui-MacBookAir B_team_five_website % git pull origin main
From https://github.com/dancinncoder/B_team_five_website
 * branch            main       -> FETCH_HEAD
Already up to date.
ihamin@ihamin-ui-MacBookAir B_team_five_website % git add .
ihamin@ihamin-ui-MacBookAir B_team_five_website % git commit -m "merge"
HEAD detached from d0e4216
nothing to commit, working tree clean
ihamin@ihamin-ui-MacBookAir B_team_five_website % git add .
ihamin@ihamin-ui-MacBookAir B_team_five_website % git commit -m "merge1"
[detached HEAD 600406c] merge1
 1 file changed, 45 deletions(-)
ihamin@ihamin-ui-MacBookAir B_team_five_website % git push origin main
To https://github.com/dancinncoder/B_team_five_website.git
 ! [rejected]        main -> main (non-fast-forward)
error: failed to push some refs to 'https://github.com/dancinncoder/B_team_five_website.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. Check out this branch and integrate the remote changes
hint: (e.g. 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
ihamin@ihamin-ui-MacBookAir B_team_five_website % git log
commit 600406ce7d3e97c5f1e06ffdcbf320484eec0b6d (HEAD)
Author: Hamin Lee <whereanna7@gmail.com>
Date:   Fri Oct 6 10:22:53 2023 +0900

    merge1

commit 4e990d9a283b5c45be2ac494eae34b23c4c09d1e
Merge: d4cea6a 8549b4e
Author: Hamin Lee <whereanna7@gmail.com>
Date:   Fri Oct 6 10:07:29 2023 +0900

    code merge

commit d4cea6a9e26b06bd139d6f511ae8f8d2887ceaf1
Author: Hamin Lee <whereanna7@gmail.com>
Date:   Fri Oct 6 09:45:44 2023 +0900

    지훈님과 code merge

commit 8549b4e25d04c07713a12cccd24fad67a393e712 (origin/main, origin/dev)
Author: Hamin Lee <whereanna7@gmail.com>
Date:   Thu Oct 5 18:22:27 2023 +0900

    배경화면추가 및 팀원소개 토글기능

commit d0e4216d255c12195a6ec364bf32e758a6d4f1ee (main)
Author: volant97 <volant97@naver.com>
Date:   Thu Oct 5 12:59:16 2023 +0900

commit 600406ce7d3e97c5f1e06ffdcbf320484eec0b6d (HEAD)
Author: Hamin Lee <whereanna7@gmail.com>
Date:   Fri Oct 6 10:22:53 2023 +0900

    merge1

commit 4e990d9a283b5c45be2ac494eae34b23c4c09d1e
Merge: d4cea6a 8549b4e
Author: Hamin Lee <whereanna7@gmail.com>
Date:   Fri Oct 6 10:07:29 2023 +0900

    code merge

commit d4cea6a9e26b06bd139d6f511ae8f8d2887ceaf1
Author: Hamin Lee <whereanna7@gmail.com>
Date:   Fri Oct 6 09:45:44 2023 +0900

    지훈님과 code merge

commit 8549b4e25d04c07713a12cccd24fad67a393e712 (origin/main, origin/dev)
Author: Hamin Lee <whereanna7@gmail.com>
Date:   Thu Oct 5 18:22:27 2023 +0900

    배경화면추가 및 팀원소개 토글기능

commit d0e4216d255c12195a6ec364bf32e758a6d4f1ee (main)
Author: volant97 <volant97@naver.com>
Date:   Thu Oct 5 12:59:16 2023 +0900

-----------------


ihamin@ihamin-ui-MacBookAir B_team_five_website % git checkout -b 이름(ex.release)

이동한다 없으면 만들어라, 새브랜치를! 뭘 기준으로? 지금 로컬환경에 있는 main 브랜치 기준으로부터 소스코드를 복사해서 만는 것.
Switched to a new branch 'release'
ihamin@ihamin-ui-MacBookAir B_team_five_website % git remote -v

현재 로컬과 원격 연결 매개체인 'origin'이라는 이름의 매개체의 상태 체크


origin  https://github.com/dancinncoder/B_team_five_website.git(fetch)
origin  https://github.com/dancinncoder/B_team_five_website.git(push)
ihamin@ihamin-ui-MacBookAir B_team_five_website % git remote add origin2 https://github.com/dancinncoder/B_team_five_website.git 
ihamin@ihamin-ui-MacBookAir B_team_five_website % git remote -v
origin  https://github.com/dancinncoder/B_team_five_website.git (fetch)
origin  https://github.com/dancinncoder/B_team_five_website.git (push)
origin2 https://github.com/dancinncoder/B_team_five_website.git (fetch)
origin2 https://github.com/dancinncoder/B_team_five_website.git (push)
ihamin@ihamin-ui-MacBookAir B_team_five_website % git remote remove origin2
ihamin@ihamin-ui-MacBookAir B_team_five_website % git remote -v
origin  https://github.com/dancinncoder/B_team_five_website.git (fetch)
origin  https://github.com/dancinncoder/B_team_five_website.git (push)
ihamin@ihamin-ui-MacBookAir B_team_five_website % git push origin release

새로 만든 브랜치를 원격으로 올리기
Enumerating objects: 16, done.
Counting objects: 100% (16/16), done.
Delta compression using up to 8 threads
Compressing objects: 100% (10/10), done.
Writing objects: 100% (10/10), 1.22 KiB | 1.22 MiB/s, done.
Total 10 (delta 7), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (7/7), completed with 3 local objects.
remote: 
remote: Create a pull request for 'release' on GitHub by visiting:
remote:      https://github.com/dancinncoder/B_team_five_website/pull/new/release
remote: 
To https://github.com/dancinncoder/B_team_five_website.git 
 * [new branch]      release -> release
ihamin@ihamin-ui-MacBookAir B_team_five_website % 

 

나머지 사람이 로컬에 원격에 있는 릴리즈 브랜치를 가져와야 함.

그 다음에 코드 수정해서

릴리즈 브랜치로 연결해서 push

 

728x90
반응형