본문 바로가기
Robot/22년도 자율주행 테크니션 양성과정 일지록

GITHUB

by 9루트 2022. 3. 17.

 

Readme.file - 마크다운으로 작성됨

gitignore - 특정 파일을 제외하고 싶을 때

ROS로 설정하면 ROS에서 핊요없는 것들은 무시된다.

 

license - 여러 종류가 있다. GPL 라이센스만 조심하면 된다.

GPL를 사용하면 코드를 모두 공개해야 한다.

 

 

kw-cobot@kwcobot-HGDT-Series:~$ mkdir Github_Test
kw-cobot@kwcobot-HGDT-Series:~$ cd Github_Test/
kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ echo "hello" >> 1.txt

1.txt 파일에다가 "hello"을 추가해라.

kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ ls
1.txt
kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ cat 1.txt
hello

 

 

깃을 관리하는 폴더 만들기

kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git init
/home/kw-cobot/Github_Test/.git/ 안의 빈 깃 저장소를 다시 초기화했습니다
kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ ls -al
합계 16
drwxrwxr-x  3 kw-cobot kw-cobot 4096  3월 17 11:26 .
drwxr-xr-x 40 kw-cobot kw-cobot 4096  3월 17 11:24 ..
drwxrwxr-x  7 kw-cobot kw-cobot 4096  3월 17 11:26 .git
-rw-rw-r--  1 kw-cobot kw-cobot    6  3월 17 11:25 1.txt

 

 

kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git status
현재 브랜치 master

아직 커밋이 없습니다

추적하지 않는 파일:
  (커밋할 사항에 포함하려면 "git add <파일>..."을 사용하십시오)

	1.txt

커밋할 사항을 추가하지 않았지만 추적하지 않는 파일이 있습니다 (추적하려면 "git
add"를 사용하십시오)

main이 아닌 master라는 가지에 있다.

commit은 약속, 저지르다... 그냥 '기록'이라고 생각하면 된다.

어떤 파일을 관리하라고 명령하지 않았으므로 어떤 파일이 관리 되지 않았는지 출력된다.

현재 상태를 만들어서 관리해라라고 명령 = 커밋한다.

현재 상태를 알려준다.

 

 

사용자 이메일, 이름 추가하기

kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git config --global user.name "Root9"
kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git config --list
user.name=Root9
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git config --global user.email "rndpqls999@gmail.com"
kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git config --list
user.name=Root9
user.email=rndpqls999@gmail.com
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true

 

 

 

 

kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git add 1.txt
kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git status
현재 브랜치 master

아직 커밋이 없습니다

커밋할 변경 사항:
  (스테이지 해제하려면 "git rm --cached <파일>..."을 사용하십시오)

	새 파일:       1.txt

커밋할 내용이 생겼음을 볼 수 있다. 1.txt라는 파일이 생성되었다는 결과를 볼 수 있다.

 

 

kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git commit -m "first commit"
[master (최상위-커밋) 8356b4f] first commit
 1 file changed, 1 insertion(+)
 create mode 100644 1.txt

고유의 번호가 할당된다.

 

 

파일 두 개를 만든다.

kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ echo "dalbong" >> dog.txt
kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ echo "tom" >> cat.txt
kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git status
현재 브랜치 master
추적하지 않는 파일:
  (커밋할 사항에 포함하려면 "git add <파일>..."을 사용하십시오)

	cat.txt
	dog.txt

커밋할 사항을 추가하지 않았지만 추적하지 않는 파일이 있습니다 (추적하려면 "git
add"를 사용하십시오)

 

kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git commit -m "add cat and dog"
현재 브랜치 master
추적하지 않는 파일:
	cat.txt
	dog.txt

커밋할 사항을 추가하지 않았지만 추적하지 않는 파일이 있습니다
kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git add -A
kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git commit -m "add cat and dog"
[master 0d82dd4] add cat and dog
 2 files changed, 2 insertions(+)
 create mode 100644 cat.txt
 create mode 100644 dog.txt

 

 

기록 보기

git log

kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git log
commit 0d82dd46dcf631ccf820674407d1bb193a3d5b26 (HEAD -> master)
Author: Root9 <rndpqls999@gmail.com>
Date:   Thu Mar 17 11:38:01 2022 +0900

    add cat and dog

commit 8356b4f7cf0f6d58b03ca914eb13b7f0e89ffc7d
Author: Root9 <rndpqls999@gmail.com>
Date:   Thu Mar 17 11:35:04 2022 +0900

    first commit

기록이 위로 점점 쌓아간다.

 

kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ echo "jerry" >> mouse.txt
kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git add -A
kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git commit -m "and mouse"
[master 5957ff4] and mouse
 1 file changed, 1 insertion(+)
 create mode 100644 mouse.txt
kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git log
commit 5957ff40dd39351507772f6e785ecf16f045afc2 (HEAD -> master)
Author: Root9 <rndpqls999@gmail.com>
Date:   Thu Mar 17 11:39:28 2022 +0900

    and mouse

commit 0d82dd46dcf631ccf820674407d1bb193a3d5b26
Author: Root9 <rndpqls999@gmail.com>
Date:   Thu Mar 17 11:38:01 2022 +0900

    add cat and dog

commit 8356b4f7cf0f6d58b03ca914eb13b7f0e89ffc7d
Author: Root9 <rndpqls999@gmail.com>
Date:   Thu Mar 17 11:35:04 2022 +0900

    first commit

 

 


과거의 위치로 되돌리기

kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git log
commit 5957ff40dd39351507772f6e785ecf16f045afc2 (HEAD -> master)
Author: Root9 <rndpqls999@gmail.com>
Date:   Thu Mar 17 11:39:28 2022 +0900

    and mouse

commit 0d82dd46dcf631ccf820674407d1bb193a3d5b26
Author: Root9 <rndpqls999@gmail.com>
Date:   Thu Mar 17 11:38:01 2022 +0900

    add cat and dog

commit 8356b4f7cf0f6d58b03ca914eb13b7f0e89ffc7d
Author: Root9 <rndpqls999@gmail.com>
Date:   Thu Mar 17 11:35:04 2022 +0900

    first commit
kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git reset 0d82dd --hard
HEAD의 현재 위치는 0d82dd4입니다 add cat and dog
commit 0d82dd46dcf631ccf820674407d1bb193a3d5b26
Author: Root9 <rndpqls999@gmail.com>
Date:   Thu Mar 17 11:38:01 2022 +0900

    add cat and dog

에서 일련번호의 앞 6자리를 입력한다. (6자리로도 고유하므로 충분하다.)

 

 

kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git reset 0d82dd --hard
HEAD의 현재 위치는 0d82dd4입니다 add cat and dog
kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git log
commit 0d82dd46dcf631ccf820674407d1bb193a3d5b26 (HEAD -> master)
Author: Root9 <rndpqls999@gmail.com>
Date:   Thu Mar 17 11:38:01 2022 +0900

    add cat and dog

commit 8356b4f7cf0f6d58b03ca914eb13b7f0e89ffc7d
Author: Root9 <rndpqls999@gmail.com>
Date:   Thu Mar 17 11:35:04 2022 +0900

    first commit
kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ ls
1.txt  cat.txt  dog.txt

마우스 txt 파일이 없어졌음을 확인할 수 있다.

 

 

 

커밋을 하기 전에 수정사항(파일 안에 내용 수정)을 없애고 싶을 때 항저

git reset --hard

만 쓰면 된다.

 

 

다시 마우스를 추가하자.

kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ echo "jerry" >> mouse.txt
kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git add -A
kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git commit -m "add mouse"

 

 

 

git revert 일련번호 : 되돌릴 수 있다.

git reset 일련번호 --hard : 되돌릴 수 없다.

 

 


브랜치 만드는 두 가지

1.

kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git branch "test"

 

kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git branch "test"
kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git branch 
* master
  test

 

 

2. 브랜치를 생성하면서 변환까지 해준다.

kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git checkout -b "today"

 

kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git checkout -b "today"
새로 만든 'today' 브랜치로 전환합니다
kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git branch
  master
  test
* today
kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git status
현재 브랜치 today
커밋할 사항 없음, 작업 폴더 깨끗함

 

현재 브랜치 today

로 현재 브랜치까지 변경된다.

 

 

git check

 

 


merge

 

그래프 형태로 보여준다.

kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git log --graph --all
* commit 2a8dfd0ab5ec48fecbe87a914f49576b91abd389 (HEAD -> master, today, test)
| Author: Root9 <rndpqls999@gmail.com>
| Date:   Thu Mar 17 11:46:31 2022 +0900
| 
|     add mouse
| 
* commit 0d82dd46dcf631ccf820674407d1bb193a3d5b26
| Author: Root9 <rndpqls999@gmail.com>
| Date:   Thu Mar 17 11:38:01 2022 +0900
| 
|     add cat and dog
| 
* commit 8356b4f7cf0f6d58b03ca914eb13b7f0e89ffc7d
  Author: Root9 <rndpqls999@gmail.com>
  Date:   Thu Mar 17 11:35:04 2022 +0900
  
      first commit

 

생각보다 merge 할 일이 별로 없다.

test 브랜치에서 변화된 기록들을 master 브랜치에 합쳐준다.

 

kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git merge test
이미 업데이트 상태입니다.

 

각 브랜치에 같은 이름의 파일이 있을 때 merge를 하면 충돌이 일어난다.

 

 

 

여기까지 git에 대한 내용이었다.

 


GItHub

원래 유료였는데 마이크로소프트에서 인수하면서 무료가 되었다.

git은 단독으로 로컬 pc에서 혼자 사용하는 시스템이라면 github는 서버에 업로드해주는 사이트이다.

 

kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git remote add origin https://github.com/LittleForest9/Practice_Repo.git

 

origin에 마스터를 보내준다.

 

SETTING > DEVELOPER SETTING > PERSONAL ACESS TOKENS > Generate new token >

 

주소를 꼭 기억해두어야 한다.

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

위 비밀번호는 꼭 어딘가에 저장해놔야 한다.

 

 

kw-cobot@kwcobot-HGDT-Series:~/Github_Test$ git push -u origin master
Username for 'https://github.com':  LittleForest9
Password for 'https://LittleForest9@github.com': 
오브젝트 개수 세는 중: 10, 완료.
Delta compression using up to 6 threads.
오브젝트 압축하는 중: 100% (5/5), 완료.
오브젝트 쓰는 중: 100% (10/10), 704 bytes | 704.00 KiB/s, 완료.
Total 10 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), done.
remote: 
remote: Create a pull request for 'master' on GitHub by visiting:
remote:      https://github.com/LittleForest9/Practice_Repo/pull/new/master
remote: 
To https://github.com/LittleForest9/Practice_Repo.git
 * [new branch]      master -> master
'master' 브랜치가 리모트의 'master' 브랜치를 ('origin'에서) 따라가도록 설정되었습니다.

 

repositories에 들어가면 업로드한 파일이 뜬다.

main을 마스터로 바꿔주면 작성했던 텍스트 파일들이 나타난다.

이렇게 깃허브에 올려줄 수 잇다.


깃허브 -> 내 컴퓨터

 

 

git fetch

변화된 내용을 확인해준다.

상태가 업데이트가 되어있는지 확인해준다.

 

git pull (서버에서 받아온다.)

 

 

cf)sudo apt update : 새로운 변경 사항 있는지 확인해준다.

sudo apt upgrade : pull 가져오는 작업

 

 

 

 

 

주로 소스트리를 사용한다.

초보자를 위한 PR(PULL REQUEST) 사용법 꼭 알고가자

 

 


주의 해야할 것

1. git clone -b

git clone 주소

로 하면 해당 버전으로 브랜치 이름이 된다.

하지만

git clone -b melodic-devel 주소

로 하면 melodic-devel 이라는 브랜치로 주소를 받아준다.

 

 

2. 파란색 폴더는 어떻게 해야 할까

서브 모듈이라고 다른 깃허브를 포함한 깃허브를 말한다.

파란색 darknet@12434 이라는 폴더가 안 받아진다.

받을 때 --recursive 옵션을 줘야 한다.

ex) darknet_ros

git clone --recursive 주소

이렇게 해야 파란색 폴더 안의 내용까지도 받아진다.

 

 

소스트리를 더 많이 쓰는 가 깃허브를 더 쓰는가

같은 이름의 코드를 수정하면 충돌이 일어나는가

라이센스 문제

 

 

 slam_gmapping