현상관리(svn, git)/설치, 명령어

[git] local에서 상위,하위 경로 .git 사용법 테스트

Mary's log 2024. 9. 2. 22:29

 

 

* github.com에는 'initial commit', 'README.md' 아무것도 없이   빈 repository 'SuperDir' 만 생성.

 

* lcoal 경로 구조

AA  ( 1 depth)

  ㄴ A   ( 2 depth)

      ㄴ Apple.txt

      ㄴ  (3 depth)

            ㄴ Can.txt

            ㄴ Cola.txt

  ㄴ B   ( 2 depth)

       ㄴBanana.txt


[A] 에서 부터 시작

1. [A]에 .git가 이미 있거나                    ( why1️⃣ [A] .git가 있는 하위 경로, 폴더부터 git add 가능. [AA]/[B]는 git add,staging 불가)

    [A]에 git init 또는 .git 생성               ( why2️⃣ repo에 아무런 커밋도 없으면 branch 조회 불가)

 

   ★ 이때도 git remote는 되지만 - 역시 '초기' 커밋이 없으면 branch 조회 불가

                                                    - clone이나 pull하면 조회되는지 확인

2. [A] git add       <.git기준 하위파일>

           git add -A  <.git기준 하위폴더>    ( 근데 -A 안붙여도 폴더만 적어도 폴더하위파일까지 자동추가됨...)

           git add C                                   //    C/Cola.txt와 C/Can.txt 둘 다 statging됨

3. [A] git commit -m "first commit"

    ★★ 이 때, 첫 커밋 이후부터 git branch 조회 가능 ★★

4. [A] git branch                                 // 현재 브랜치 조회 가능.

5. [A]  git branch <신규브랜치명>               → 이 상태에선 push해도 checkout을 안한 상태라 신규브랜치로 반영 안됨;  

     github.com에서 신규 브랜치 추가            → 이건 github에서 한거라 local update하면 조회 가능

6. [A] git remote update

7.  git checkout <신규브랜치> 

8. git remote add origin <https://github.com/abc123/SuperDir.git>

9. git push -u origin <최종push할 브랜치>    이때 초기 커밋 브랜치가 default 브랜치가 됨


[AA] 상위경로에서  .git 생성 시, 동일 레포에 반영될 수 있는지

10. 상위경로 AA로 이동. git init해서 .git 생성

11. git add <AA기준 하위폴더파일>

12. git commit -m "second commit"

13. git remote add origin <[A]와 동일 레포 https:>

14. git push -u origin <브랜치>

    ★오류 발생. pull하라고 뜸.  [A]의 first commit이었던 C가  [AA] .git 기준 경로에는 없으니까 충돌나는 것.

15. git pull <https://>   <브랜치>                →[AA] 경로에,    [A] 하위 first commit 였던 [C]가 생성됨. 지저분~.

16. 아무튼 다시 14 하면 정상적으로 push됨

 


!!★!! 16에서 [AA]에서 [C]가 github.com에 빈 폴더만 올라간다면 이미 레포로 사용했던 [A]의 .git가 있어서 그렇다.
폴더만 올라가는 [C] 경로를 기준으로 Finder\우클릭\터미널을 새로 실행

 

$ find ./ -name ".git" | xargs rm -Rf  // 모든 하위 폴더에 있는 .git 경로 전부 강제 삭제
$ rm-rf .git                                          // [C] 하위에 있는 .git 전부 삭제
$ git rm--cached. -rf

[AA]에서 다시 [C]를 git add하고 
 commit push 하면 됨

 


 

* github.com 에는 'initial commit', 'README.md' 만 있는  빈 repository 만 생성되어있고,

 

* local 저장소에 이미 기존 파일이 있고 위 repo에 넣어야한다면...

  [AA]같은 상위경로에 .git을 만들고 위의 repo에 remote해서 기존 파일인 README.md를 pull해주고 난 후,

(그러면 AA엔 (1) .git   (2) README.md   (3) 기존 파일들이 있을 것?)

   기존 파일을 commit push

 

1. .git 이 있거나

    git init 하여 .git 생성

2. git remote add origin <https://>

3. git remote update           // 새로운 브런치 main 떠야함

4. git branch                        // github.com default 브랜치 main이면 맞춰가기

5. git branch main    

6. git branch

7. git checkout main            // 성공했다고 떠야함

8. git branch

 

9. git pull <https> main       // README.md 가져왔는지 확인

10. git status                        // 이미 있던 파일들 조회 확인(unstaged든 staged든)

11. git add -A <특정경로> 

12. git status                        // 특정경로 밑의 파일들 staged 조회 확인

13. git push -u origin main

 

 

★ github 저장소엔 아직 존재하는 파일이고

    local 저장소에선 삭제해버린 파일이어도

git add <삭제해버린 파일들>  올리고

commit "delete file"하고

push 해줘야함

 

 

 

 

 

 

 

참고 문헌