220602 TIL

Parker.Park·2022년 6월 2일
0

TIL

목록 보기
15/39

220602 TIL

팀프로젝트 기간에는 git관리에 대해서 전혀 신경쓰지 못하였다. 이제 팀프로젝트도 끝나고 깃허브 관리를 본격적으로 해보자. 기존에 메인프로젝트, 미니프로젝트, 수업시간에 배운 폴더들이 모두 하나의 레파지토리에 있었다. 더구나 개인 정보도 신경 못쓰던 코드들이 좌르르 있어서 급하게 private으로 봐꿔놓기도 했다. 그리고 깃 안에서 변경하려고 시도했던 것도 기억난다 ㅠㅠ. 이제 좀 변경해서 관리하고 싶어졌다.
먼저 알고리즘을 매일 공부하고 싶어서 알고리즘 폴더는 따로 레파지토리를 생성하려고 한다.
기존 속해있던 .git 폴더를 지우고, 원하는 폴더로 가서 init을 진행한다.

git init

다음으로 github으로 가서 레파지토리를 만들고 주소를 복사한다음, 연동시켜 주었다.

git remote add main 'git address'
git push origin main

error: src refspec main does not match any
error: failed to push some refs to 'origin'

error : src refspec main does not match any

응? 잠깐 벙쪘다. 깃이라면 팀플 때 많이 해봤다고 생각했지만, 착각이었을까?
개인 리파지토리 이기 때문에 일단 push 해본다.

git push main master

이상하게 push 된 것이 틀림 없다. github에서도 main 밑에 다른 branch로 들어가 있었다. 아마 remote에서 실수가 있지 않았을까. 지금까지는 git clone으로 비교적 쉽게 origin을 만들 수 있었다.

git branch -a

// * master
//  remotes/main/master

main/master까지는 알겠지만... remotes/main/master??!

git remote -v
//main    https://github.com/eotkds/Algorithm.git (fetch)
//main    https://github.com/eotkds/Algorithm.git (push)

git remote rename main origin
git add .
git commit -m "message"
git push origin main

//error: src refspec main does not match any
//error: failed to push some refs to 'origin'

이름은 왜 바꾼것일까 ㅠㅠ. 전혀 감이 안잡힌다.

//remote 서버 리스트를 보는 명령어다.
git branch -r
//  origin/master
git push origin master

여기저기 알아보니 local에는 master만 있고, 레파지토리에는 main인 예전 master처럼 있는 셈인 것같다. 좀더 알아보자.

git remote show origin

  //* remote origin
  //Fetch URL: https:// git address
  //Push  URL: https:// git address
  //HEAD branch: main
  //Remote branches:
  //  main   new (next fetch will store in remotes/origin)
  //  master tracked
  //Local ref configured for 'git push':
  //  master pushes to master (up to date)

local branch 명을 main으로 만들고, main으로 push 한 다음 master를 지워보자 -> 정리해 보자
이제 테스트로 main으로 push를 날려 보자

git checkout -b main
//Switched to a new branch 'main'
git branch -D master
//Deleted branch master.

git add .
git commit -m "message"
git push origin main

//! [rejected]        main -> main (fetch first)
//error: failed to push some refs to 'git address'
//hint: Updates were rejected because the remote contains work that you do
//hint: not have locally. This is usually caused by another repository pushing
//hint: to the same ref. You may want to first 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.

역시 되지 않는다, 그러고 보니 레파지토리를 생성할 때 '.gitignore'를 만들었던 적이 있었다. 아마 그 내용이 로컬과 맞지 않을까 생각한다. pull을 해보자.

git pull
//remote: Enumerating objects: 3, done.
//remote: Counting objects: 100% (3/3), done.
//remote: Compressing objects: 100% (2/2), done.
//remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
//Unpacking objects: 100% (3/3), 1.33 KiB | 454.00 KiB/s, done.
//From 
// * [new branch]      main       -> origin/main
//There is no tracking information for the current branch.
//Please specify which branch you want to merge with.
//See git-pull(1) for details.
//
//    git pull <remote> <branch>
//
//If you wish to set tracking information for this branch you can do so with:
//
//    git branch --set-upstream-to=origin/<branch> main

당연히 되지 않는다. remote/main에는 .gitignore파일 있기 때문이다. local과는 내용이 다르기 때문이다. 그렇다면 서로 다른 내용을 merge하기 위해서는 어떻게 해야 할까...?
앞서 git pull에는 git merge에 기능이 있다고 배웠었다. 그렇다면 git merge를 먼저 하면 어떨까?
아니면 경고문 처럼 우선 upstream을 지정하면 될까?

git pull --allow-unrelated-histories
//...
//Merge made by the 'recursive' strategy.
git push origin main

우선 구글링하여 정리는 했다. 하지만 생각했던 방식과는 차이나서 다음 시간에 정리 하리라 마음을 먹는다.

참조

[[Github 깃헙] git push origin main? master?, UCDAyoung tistory, 2022년06월02일 접속]
https://beingdesigner.tistory.com/40
[3.5 Git 브랜치 - 리모트 브랜치, git-scm, 2022년06월04일 접속]
https://git-scm.com/book/ko/v2/Git-%EB%B8%8C%EB%9E%9C%EC%B9%98-%EB%A6%AC%EB%AA%A8%ED%8A%B8-%EB%B8%8C%EB%9E%9C%EC%B9%98
[2.5 Git의 기초 - 리모트 저장소
, git-scm, 2022년06월04일 접속]
https://git-scm.com/book/ko/v2/Git%EC%9D%98-%EA%B8%B0%EC%B4%88-%EB%A6%AC%EB%AA%A8%ED%8A%B8-%EC%A0%80%EC%9E%A5%EC%86%8C
[GitHub 레포지토리로 push 에러 해결[Updates were rejected because the remote contains work that you do], https://medium.com/, 2022년06월04일 접속]
https://medium.com/@js230023/github-%EB%A0%88%ED%8F%AC%EC%A7%80%ED%86%A0%EB%A6%AC%EB%A1%9C-push-%EC%97%90%EB%9F%AC-%ED%95%B4%EA%B2%B0-updates-were-rejected-because-the-remote-contains-work-that-you-do-99f7aa36a12b
[git-merge에서 --ff, --no-ff의 차이점, [순차적 처리 제어:티스토리], 2022년06월04일 접속]
https://koreabigname.tistory.com/65
[깃(Git) fatal: refusing to merge unrelated histories 오류, [안경잡이개발자:티스토리], 2022년06월04일 접속]
https://ndb796.tistory.com/275
[git pull 가 안먹을때, tistory, 2022년06월04일 접속]
https://insapporo2016.tistory.com/53

profile
개발자준비중

0개의 댓글