노력과 삽질 퇴적물
Rocky(록키, 로키) 리눅스 9에 git 기능 연습 본문
[이미지 출처: freewear.org] |
|
▼ 0. 루트 계정
|
|
1) root 계정 설정
|
bash쉘에서 root비번 초기화 및 root계정으로 전환 |
▼ 1. GIT 설치
|
|
1) 설치
|
dnf install 명령어 기반 |
2) 계정 설정
|
git config 명령어 기반 |
3) 저장소 만들기
|
|
▼ 2. 기본제어
|
|
1) SVN하고의 차이
|
|
2) 커밋
|
|
① MS애저, rocky 9.3 기준
② putty말고 winSCP나 tabby 추천드립니다.
③ 리눅스 자체가 처음인 경우도 감안한 추가 설명도 붙이겠지만, root계정으로 따로 전환치 않으면 sudo 명령어 붙여서 쓰시길 바랍니다.
③ 리눅스 자체가 처음인 경우도 감안한 추가 설명도 붙이겠지만, root계정으로 따로 전환치 않으면 sudo 명령어 붙여서 쓰시길 바랍니다.
④ Rocky(록키, 로키) 리눅스는 계보상, 레드햇 기반으로 만들어진 centOS에서 파생된터라 레드햇쪽 코드가 호환 가능.
⑤ SVN 사용경험 기준으로 작성되다보니 간혹 생략되는 부분도 존재 가능.
-> 만약, root계정의 환경변수도 연동해서 해야 하면 su - root -> root계정을 따로 안 쓰는 경우, 이후 과정의 명령어 앞에 sudo 명령어 붙여야. 예: cat .gitconfig → sudo cat .gitconfig |
[analoggreen@unixPractice ~]$ echo $SHELL /bin/bash [analoggreen@unixPractice ~]$ sudo passwd root Changing password for user root. New password: ********** Retype new password: ********** passwd: all authentication tokens updated successfully. [analoggreen@unixPractice ~]$ su root Password: ********** [root@unixPractice analoggreen]# echo $SHELL /bin/bash |
▼ 1. GIT 설치 |
1) 설치 📂 |
-> root계정 -> 현위치: /root |
[root@unixPractice ~]# dnf install -y git [root@unixPractice ~]# git --version git version 2.43.5 |
2) 설정 📂 |
2-1) 사용사 설정 및 확인 -> 파일 .gitconfig은 현재 사용자의 모든 저장소에 적용되는 설정이다. |
[root@unixPractice ~]# git config --global user.name "mtg";git config --global user.email "exampleForTest@gmail.com"; [root@unixPractice ~]# git config --get user.name;git config --get user.email; mtg exampleForTest@gmail.com [root@unixPractice ~]# cat .gitconfig [user] name = mtg email = exampleForTest@gmail.com |
2-2) 저장소 설정 |
[root@unixPractice ~]# git config --global init.defaultbranch mainBranch;git config --get init.defaultbranch; mainBranch [root@unixPractice ~]# git init proj20241017_gitTest Initialized empty Git repository in /root/proj20241017_gitTest/.git/ [root@unixPractice ~]# cd proj20241017_gitTest;ls -al total 4 drwxr-xr-x. 3 root root 18 Oct 17 12:48 . dr-xr-x---. 4 root root 4096 Oct 17 12:48 .. drwxr-xr-x. 7 root root 119 Oct 17 12:48 .git |
▼ 2. 기본제어 |
1) SVN하고의 차이 📂 |
[출처: git-scm.com / 버전 관리란?] |
-> SVN은 중앙서버의 저장소를 향해 사용자들의 로컬 컴퓨터가 붙어서 하다보니, 잦은 conflict를 피하기 위해 trunk&brach를 놓고 주기적인 merge를 하는 '중앙집중형 버전 관리 시스템'(CVCS).
GIT은 중앙서버의 저장소를 향해 사용자들이 붙되, 그 사이에 로컬 컴퓨터의 저장소에 저장을 하는 단계가 추가되는 '분산형 버전 관리 시스템'(DVCS).
-> 운영 철학 및 모델자체가 다른만큼 장단점이 다르므로 어느 쪽이 가장 좋다라 말하기에는... SW프로젝트에 프로그래머 혹은 SW개발자만 투입되는게 아니니 용도에 맞게 쓰는것이 좋죠. 그리고 커밋시 제발 로그 좀;;; 버전 관리툴 쓰는 이유 하나를 날리는건 대체?
(C++이나 JAVA쓰면서 클래스를 안 쓰는 사람같은;;;)
상황① -> 저장소 'proj20241017_gitTest'를 생성한 직후 -> defaultbranch는 mainBranch |
[root@unixPractice proj20241017_gitTest]# git status On branch mainBranch No commits yet nothing to commit (create/copy files and use "git add" to track) [root@unixPractice proj20241017_gitTest]# git status -s [root@unixPractice proj20241017_gitTest]# git log fatal: your current branch 'mainBranch' does not have any commits yet [root@unixPractice proj20241017_gitTest]# git log --all [root@unixPractice proj20241017_gitTest]# |
상황② 새파일 추가 및 커밋 -> (절대경로)/root/readme.txt가 존재. -> 'git add'는 저장소 하위 경로에 있는 파일로 해야만. -> git add직후에 git status로 스테이지(혹은 인덱스)에 올라간 작업내역을 확인. |
[root@unixPractice proj20241017_gitTest]# cp /root/readme.txt /root/proj20241017_gitTest/ [root@unixPractice proj20241017_gitTest]# git add readme.txt;git status On branch mainBranch No commits yet Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: readme.txt [root@unixPractice proj20241017_gitTest]# git status -s A readme.txt [root@unixPractice proj20241017_gitTest]# git log fatal: your current branch 'mainBranch' does not have any commits yet [root@unixPractice proj20241017_gitTest]# git log --all [root@unixPractice proj20241017_gitTest]# git commit -m "ADD: 텍스트 파일 커밋 테스트" [mainBranch (root-commit) c3c05dc] ADD: 텍스트 파일 커밋 테스트 1 file changed, 1 insertion(+) create mode 100644 readme.txt [root@unixPractice proj20241017_gitTest]# git status On branch mainBranch nothing to commit, working tree clean [root@unixPractice proj20241017_gitTest]# git log --all commit c3c05dcc752024bd405277879754428747c0c70c (HEAD -> mainBranch) Author: mtg <exampleForTest@gmail.com> Date: Thu Oct 17 15:08:35 2024 +0000 ADD: 텍스트 파일 커밋 테스트 [root@unixPractice proj20241017_gitTest]# |
상황③ 스테이지(혹은 인덱스)에 존재하는 파일(버전관리 대상인 파일)을 수정 -> vi로 파일 수정 -> SVN의 [(파일)수정→커밋]이 아니라 [(파일)수정→git add→커밋] -> 스테이지에 등록하면서 커밋을 합치려면 git commit -am "커밋로그 내용" |
[root@unixPractice proj20241017_gitTest]# git commit -m "UPDATE: 문장 추가" On branch mainBranch 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: readme.txt no changes added to commit (use "git add" and/or "git commit -a") [root@unixPractice proj20241017_gitTest]# git add readme.txt [root@unixPractice proj20241017_gitTest]# git commit -m "UPDATE: 문장 추가" [mainBranch 54c090e] UPDATE: 문장 추가 1 file changed, 2 insertions(+) [root@unixPractice proj20241017_gitTest]# git log --oneline 54c090e (HEAD -> mainBranch) UPDATE: 문장 추가 c3c05dc ADD: 텍스트 파일 커밋 테스트 [root@unixPractice proj20241017_gitTest]# git log --graph * commit 54c090e8a10aaad278d126359f50f2b3ecf2d870 (HEAD -> mainBranch) | Author: mtg <exampleForTest@gmail.com> | Date: Thu Oct 17 15:27:04 2024 +0000 | | UPDATE: 문장 추가 | * commit c3c05dcc752024bd405277879754428747c0c70c Author: mtg <exampleForTest@gmail.com> Date: Thu Oct 17 15:08:35 2024 +0000 ADD: 텍스트 파일 커밋 테스트 [root@unixPractice proj20241017_gitTest]# git log --all commit 54c090e8a10aaad278d126359f50f2b3ecf2d870 (HEAD -> mainBranch) Author: mtg <exampleForTest@gmail.com> Date: Thu Oct 17 15:27:04 2024 +0000 UPDATE: 문장 추가 commit c3c05dcc752024bd405277879754428747c0c70c Author: mtg <exampleForTest@gmail.com> Date: Thu Oct 17 15:08:35 2024 +0000 ADD: 텍스트 파일 커밋 테스트 [root@unixPractice proj20241017_gitTest]# |
상황④ 커밋 이력 확인하기 -> 최초 커밋했을때 2번 이상 커밋했을때 |
[root@unixPractice proj20241017_gitTest]# git log --patch commit c3c05dcc752024bd405277879754428747c0c70c (HEAD -> mainBranch) Author: mtg <exampleForTest@gmail.com> Date: Thu Oct 17 15:08:35 2024 +0000 ADD: 텍스트 파일 커밋 테스트 diff --git a/readme.txt b/readme.txt new file mode 100644 index 0000000..4340669 --- /dev/null +++ b/readme.txt @@ -0,0 +1 @@ +10월 17일, 2024년, 목요일, 주 42 ... ... ... ... ... ... [root@unixPractice proj20241017_gitTest]# git log --patchcommit 54c090e8a10aaad278d126359f50f2b3ecf2d870 (HEAD -> mainBranch) Author: mtg <exampleForTest@gmail.com> Date: Thu Oct 17 15:27:04 2024 +0000 UPDATE: 문장 추가 diff --git a/readme.txt b/readme.txt index 4340669..1ca45c8 100644 --- a/readme.txt +++ b/readme.txt @@ -1 +1,3 @@ <-----(변경전)1줄에서 총 3줄로 10월 17일, 2024년, 목요일, 주 42 + +파일 등록후 1차 편집. <-----추가된 내용 commit c3c05dcc752024bd405277879754428747c0c70c Author: mtg <exampleForTest@gmail.com> Date: Thu Oct 17 15:08:35 2024 +0000 ADD: 텍스트 파일 커밋 테스트 diff --git a/readme.txt b/readme.txt new file mode 100644 index 0000000..4340669 --- /dev/null +++ b/readme.txt @@ -0,0 +1 @@ <-----기존에 없던 파일이니 0에서 +1 +10월 17일, 2024년, 목요일, 주 42 <-----추가된 내용 [root@unixPractice proj20241017_gitTest]# |
▼ 기타. 참조자료 |
1) 서적 |
김희천, 김진욱 저. UNIX시스템, 한국방송통신대학교출판문화원, 2023년.
2) 튜터링 사이트 |
사이트명 |
|
graphite.dev | How to install Git on Linux (접속: 2024-10-17) |
learn.microsoft.com | 기록을 포함하여 SVN(Subversion)에서 Git으로 마이그레이션하는 방법을 알아봅니다. (접속: 2024-10-17) |
3) 개인 블로그 |
[Linux] 현재 Shell 확인하기 - 어제 오늘 내일 (접속: 2024-10-17)
[LINUX] root와 사용자 계정 개념, 계정 정보 및 계정 전환 방법 정리 (접속: 2024-10-17)
▼ 기타. 변경 내력 |
일자
|
변경 내력 |
2024-10-18 | 초안 및 일반 공개. [🔗blogger] [🔗티스토리]. |
'📂게임개발 note > 툴 관련' 카테고리의 다른 글
비주얼 스튜디오 코드(VS code)를 다용도 세팅 -자바, C#, 파이썬- (0) | 2024.06.27 |
---|---|
UML: 다이어그램 기초 및 툴 (0) | 2017.03.30 |
이클립스: 사용중인 플러그인 (0) | 2015.04.15 |
링크: 웹기반 에디터 모음집 (0) | 2013.08.25 |
이클립스: SVN 원격접속 풀세팅 (0) | 2013.07.05 |