local에서_git저장소에_업로드하기

heyme·2023년 10월 27일

git

목록 보기
2/2

git 저장소에 업로드하는 방법

1. Git 서버에 새로운 저장소를 생성

먼저 저장소를 생성히면, 다음에 로컬의 my_project를 그곳에 업로드할 수 있다.
아래처럼 저장할 git 서버에서 업로드할 위치로 가서 저장소를 생성, 초기화한다.

[git@devserver ~]$ pwd
/home/git
[git@devserver ~]$ mkdir fold_detection.git

[git@devserver ~]$ cd fold_detection.git
[git@devserver fold_detection.git]$ git init --bare fold_detection.git
Initialized empty Git repository in /home/git/fold_detection.git/

[git@devserver ~]$ cd fold_detection.git/
[git@devserver fold_detection.git]$ git init --bare
Initialized empty Git repository in /home/git/fold_detection.git/

2. 로컬에서 원격 서버로 올리기

1) 로컬에서 리모트 저장소 설정

이제 로컬에 업로드할 주소로 이동한다.
그리고 그 폴더 안에서 깃 초기화 한다.

[root@localhost yolov5_fold]# git init //새로운 Git 저장소를 초기화
/home/docker/share/heyme_share_218/yolov5_fold/.git/ 안의 기존 깃 저장소를 다시 초기화

git init 이 필요한 이유
git init 명령어는 새로운 Git 저장소를 초기화하거나 기존 디렉토리를 Git 저장소로 변환하는 데 사용됩니다.
이 명령어를 실행하면 .git이라는 하위 디렉토리가 생성되고, 여기에 저장소의 모든 정보와 설정, 로컬 브랜치, 로그 등이 저장됩니다.

Git은 파일 변경 내역을 추적하기 위해 이러한 초기 설정이 필요합니다. 따라서 git init은 로컬에서 작업을 시작할 때 첫 번째 단계로 거의 항상 필요합니다. git init 이후에 git remote add origin을 통해 원격 저장소를 지정할 수 있습니다.

2) 원격 서버의 Git 저장소를 로컬 저장소에 연결

git remote add origin [URL] 명령어는 로컬 저장소와 원격 저장소를 연결하기 위해 사용됩니다. 이렇게 설정하면 로컬에서의 변경사항을 원격 저장소에 쉽게 푸시(push)할 수 있고, 원격 저장소의 변경사항을 로컬로 쉽게 풀(pull)할 수 있습니다.

여기서 origin은 원격 저장소의 단축 이름입니다. 이 이름은 관습적으로 origin을 사용하지만, 원하는 다른 이름으로 설정할 수 있습니다. 이 단축 이름을 통해 원격 저장소에 대한 다양한 작업을 할 수 있습니다 (git push origin master, git pull origin master 등).

git remote add origin ssh://your_username@server_address:/path/to/my_new_repo.git

만약, 아래처럼 이미 origin이 이미 있다고 하면 origin을 제거하고 다시 만들면 된다.

git remote add origin ssh://git@dev.neoconv.com:/home/git/fold_detection.git
error: origin 리모트가 이미 있습니다.
[root@localhost yolov5_fold]# git remote remove origin
git remote add origin ssh://git@dev.neoconv.com:/home/git/fold_detection.git

3) 로컬 저장소의 변경 사항을 커밋

[root@localhost yolov5_fold]# git add .
[root@localhost yolov5_fold]# git commit -m "Initial commit"
[master eb777bd] Initial commit
 Committer: root <root@localhost.localdomain>
이름과 전자메일 주소를 사용자 이름과 호스트 이름을 이용해서
자동으로 설정했습니다. 이 정보가 맞는지 확인하십시오. 이 메시지를
보지 않으려면 정보를 명시적으로 설정하십시오:

    git config --global user.name "내 이름"
    git config --global user.email you@example.com

이렇게 한 다음, 이 커밋에 사용한 신원 정보를 다음과 같이 해서 바꿀 수 있습니다:

    git commit --amend --reset-author

 90 files changed, 235489 insertions(+), 1024 deletions(-)
 create mode 100755 data/data.yaml
 create mode 100755 data/data_1011.yaml
 create mode 100755 data/data_1020.yaml
 create mode 100755 data/data_1021.yaml
 create mode 100755 data/data_old.yaml
 create mode 100644 data/fold.yaml
 create mode 100644 data/fold_re2_org.yaml
 ...
 create mode 100644 result/results_1024.txt
 create mode 100644 result/results_1025.txt
 create mode 100644 result/results_AdamW.txt
 create mode 100644 result/results_x6_fail.txt
 create mode 100644 test.py
 create mode 100644 today.txt
 create mode 100644 train_aug.py
 delete mode 100644 tutorial.ipynb
 create mode 100644 utils/dataloader.py
 create mode 100644 val_tmp.py
 create mode 100644 weight_print.py

git add . 명령어는 작업 디렉토리에 있는 모든 변경된 파일들을 스테이징 영역(staging area)에 추가합니다. 스테이징 영역은 커밋할 파일들을 준비하는 임시 영역입니다.

git commit -m "Initial commit" 명령어는 스테이징 영역에 있는 파일들을 실제로 커밋합니다. 이 과정에서 "Initial commit"이라는 메시지를 커밋에 첨부하여 어떤 변경사항이 있는지 설명합니다. 커밋은 로컬 저장소에 변경사항을 기록하는 것으로, 이후에 이 변경사항을 원격 저장소에 푸시할 수 있습니다.

이러한 과정을 통해, 작업의 단계별 변경사항을 명확하게 관리할 수 있습니다. 나중에 문제가 생겼을 때 이 커밋 로그를 통해 어떤 변경사항이 문제를 일으켰는지 쉽게 파악할 수 있습니다.

4) 커밋한 변경사항을 원격 저장소로 푸시

[root@localhost yolov5_fold]# git push -u origin master
git@dev.neoconv.com's password:
오브젝트 나열하는 중: 12120, 완료.
오브젝트 개수 세는 중: 100% (12120/12120), 완료.
Delta compression using up to 32 threads
오브젝트 압축하는 중: 100% (4167/4167), 완료.
오브젝트 쓰는 중: 100% (12120/12120), 14.31 MiB | 18.16 MiB/s, 완료.
Total 12120 (delta 8082), reused 11945 (delta 7944), pack-reused 0
To ssh://dev.neoconv.com:/home/git/fold_detection.git
 * [new branch]      master -> master
branch 'master' set up to track 'origin/master'.

git push -u origin master 명령어는 여러가지 동작을 한 번에 수행합니다.
git push: 이 부분은 로컬 저장소의 변경사항을 원격 저장소로 전송하는 명령어입니다.

-u: 이 옵션은 "Upstream"을 의미하며, 이후에 git pull이나 git push 명령을 사용할 때 원격 저장소와 브랜치를 명시적으로 지정하지 않아도 이 명령이 적용될 원격 저장소와 브랜치를 설정합니다.
origin: 이 부분은 원격 저장소의 단축 이름입니다. 일반적으로 처음에 원격 저장소를 추가할 때 이 이름이 설정됩니다.
master: 이 부분은 원격 저장소에 푸시될 로컬 브랜치의 이름입니다.

따라서, git push -u origin master 명령어는 로컬 저장소의 master 브랜치의 변경사항을 origin이라는 원격 저장소의 master 브랜치로 푸시하며, 이후로는 원격 저장소와 브랜치를 명시하지 않아도 이 설정이 사용된다는 것을 의미합니다.

.

.

여기까지 git에 올리는 과정을 상세히 적어보았다. 이제야 정리하는게 좀늦었다 싶긴 하지만, 늦었다고 느낄때라도 했으니 다행이다.

0개의 댓글