노력과 삽질 퇴적물

Rocky(록키, 로키) 리눅스 9에 git 기능 연습 본문

📂게임개발 note/툴 관련

Rocky(록키, 로키) 리눅스 9에 git 기능 연습

MTG 2024. 10. 18. 00:49


[이미지 출처: 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 명령어 붙여서 쓰시길 바랍니다.

④ Rocky(록키, 로키) 리눅스는 계보상, 레드햇 기반으로 만들어진 centOS에서 파생된터라 레드햇쪽 코드가 호환 가능.

⑤ SVN 사용경험 기준으로 작성되다보니 간혹 생략되는 부분도 존재 가능.
0. 루트 계정
1) root 계정 설정 📂
-> 만약, 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
1) SVN하고의 차이 📂
[출처: git-scm.com / 버전 관리란?]
-> SVN은 중앙서버의 저장소를 향해 사용자들의 로컬 컴퓨터가 붙어서 하다보니, 잦은 conflict를 피하기 위해 trunk&brach를 놓고 주기적인 merge를 하는 '중앙집중형 버전 관리 시스템'(CVCS).
 GIT은 중앙서버의 저장소를 향해 사용자들이 붙되, 그 사이에 로컬 컴퓨터의 저장소에 저장을 하는 단계가 추가되는 '분산형 버전 관리 시스템'(DVCS).
-> 운영 철학 및 모델자체가 다른만큼 장단점이 다르므로 어느 쪽이 가장 좋다라 말하기에는... SW프로젝트에 프로그래머 혹은 SW개발자만 투입되는게 아니니 용도에 맞게 쓰는것이 좋죠. 그리고 커밋시 제발 로그 좀;;; 버전 관리툴 쓰는 이유 하나를 날리는건 대체?
(C++이나 JAVA쓰면서 클래스를 안 쓰는 사람같은;;;)
-> 사족으로 SVN을 GIT으로 마이그레이션도 가능합니다. MS에도 자료가 있으니 참조링크 하나 남깁니다. [🔗learn.microsoft.com]




2) 커밋 📂
[출처: git-scm.com]


상황①
-> 저장소 '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 --patch
commit 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.devHow to install Git on Linux  (접속: 2024-10-17)
learn.microsoft.com기록을 포함하여 SVN(Subversion)에서 Git으로 마이그레이션하는 방법을 알아봅니다.  (접속: 2024-10-17)



3) 개인 블로그 
3-1) 티스토리
기타. 변경 내력
일자
변경 내력
2024-10-18 초안 및 일반 공개. [🔗blogger] [🔗티스토리].