Connect between Git and Github
sudo apt install git
https://projects.raspberrypi.org/en/projects/getting-started-with-git
0. 준비사항 - 사용하는 컴퓨터에 git이 install과 config가 되어있어야한다 ( Git Setup 참조 )
git init
git add filename
와 git commit -m "short message"
진행my_github_username.github.io
형식으로 하면 이것이 나의 github website 주소가 된다git remote add origin my_github_repository_address
나의 github repository address는 개인정보 상 username을 삭제함
나는 위 snippet에 나온 방법 중 두번째를 how to에 설명하였다
git init
git status
git add file_name
git add file_name1 file_name2 ...
와 같이 복수의 파일도 가능add
해야 한다git diff file_name
add
한 후, WD에서 해당 파일A를 수정한 경우, SA 안의 파일A와 WD 안의 파일A사이에는 차이점이 생긴다. git diff
는 이 차이점을 시각적으로 보여준다git commit -m "short message"
-m (follwed by a message)
comit message 관습 (conventions)
-m
을 사용한다면 commit message는 SA에 영구적으로 저장된다git log
git show HEAD
git checkout HEAD filename
git add filename_1 filename_2
git add
가능하다git reset HEAD filename
git add
를 진행하였다면 git reset HEAD
로 되돌릴 수 있다git reset commit_SHA
commit_SHA
는 git log
에서 확인할 수 있는데 이 중 SHA번호 앞의 7자리가 필요하다commit_SHA
Version으로 되돌릴 수 있다현재는 master branch가 아니라 main branch로 이름이 변경됨
git branch
git branch new-branch-name
git checkout branch-name
git merge
하기 위해선 main으로 이동해야하는데 이때 자주 사용된다git merge branch-name
git merge
를 실행한다git merge
하는 중에 발생하는 경우로 Git이 어떤 lines은 남기고 어떤건 삭제해야할지 모르는 경우 발생git merge branch-name
git add
와 git commit
git branch -d branch-name
git push origin your_branch_name
git push --all origin
git clone remote_Location clone_name
하면 current working 환경 안에 자동으로 두 개의 local directories가 생성되는데 이중에 project
와 동일한 이름의 directory안에 저장된 local branches이다git fetch
를 하면 remote는 업데이트되고 포인터는 GS에서 받아온 업데이트된 commit을 가르킨다git clone
에 의해서 생성된 두 개의 directory 중 사용자가 이름을 부여한 directory 안에 담긴, GS에서 복제된 branches를 말한다. 이중 main branch는 main이라고 부르고 역시 포인터도 이 main 가르키는 제일 최신 commit을 의미한다. 사용자의 작업은 여기서 이루어진다git push
를 통해 해당 repository의 내용을 변경했다면 Git 사용자는 git fetch
로 origin/main을 포함한 local remote branches를 업데이트해줘야 변경사항이 local에도 적용된다git clone
하면 Git은 자동으로 Git Server 안의 모든 data를 사용자의 local remote에 복제하고 pointer를 만드는데 이 pointer는 Github main branch의 가장 최신 commit과 clone한 직후에는 동일하다 ( 모든 data를 복제한다는 뜻은 commit정보도 복제한다는 의미이다. 자세한 사항은 뒤에나오는 remote workflow를 살펴보자) Git은 또한 사용자가 git clone
을 통해 이름을 부여한 directory ( main )에도 같은 data를 복제하고 pointer도 생성한다git.ourcompany.com의 주소에 저장된 Github repository( 다른 말로 Git Server, 앞으로 GS라고 표기한다 )를 git clone
을 이용하여 사용자 컴퓨터에 복제하였다. 상단의 Github main branch의 포인터뿐만 아니라 하단의 origin/main와 main branch도 모두 같은 SHA#를 가르키고 있다는 것을 알 수 있다
사용자가 로컬컴퓨터에서 작업을하며 commit을 진행하고 있는 와중에 그림 상단에서 보듯이 다른 누군가 GS에 push를 진행하였다. 이제 Github 포인터는 190a3를 가르키고 나의 main은 893cf를 가르킨다. 그리고 origin/main은 아직도 f42c5에 머물러있다. 이처럼 git fetch
를 진행하지 않으면 origin/main은 GS의 변경된 내용을 가져오지 못한다
git fetch origin
또는 git fetch
를 실행하여 GS에 변경된 사항을 사용자의 local remote에 업데이트했다. 이제 origin/masin pointer는 GS pointer와 같은 SHA#를 가르킨다. 그리고 같은 local이지만 origin/main과 main은 다른 commit history를 가지게 된다
만약 GS외에 이와 관련된 GS가 하나 더 있다면(git.team1.ourcompany.com에 저장됨)이 remote server도 사용자의 current working환경에 추가할 수 있다
상단의 그림을 보면 git remote add wished_clone_name remote_location_in_url
command를 이용한 것을 알 수 있다
git fetch teamone
을 통해 teamone remote server안의 update된 내용을 가져와 teamone/master(즉, teamone이라는 이름을 가진 새로운 remote)에 적용시켰다
git clone
이나 git remote add
한 후에는 꼭! git fetch
를 진행하자git merge
를 실행하기 전에도 꼭! git fetch
한 후에 merge하고 git push
하자git clone remote_location_in_url clone_name
git remote -v
git fetch
또는 git fetch origin
git merge branch_name
git merge
를 실행한다git push origin your_branch_name
git push --all origin
은 내 current working환경에 존재하는 main branch 포함 모든 branches를 push할 수 있다git push in_local_given_remote_name your_branch_name
http://blog.jinlaixu.net/books/ProGit/en/index.html