command line 노트

iterms2에서 push 완료 상태를 확인하고 새 branch 만들고 변경하기

Jonchann 2020. 4. 5. 19:05

어제 git init부터 git push까지 했다.
현재의 git 상태를 확인해보자.

$ git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

 

그럼 어제까지 했던 것을 확인해보자.

$ git log
commit [checksum_SHA-1] (HEAD -> master, origin/master, origin/HEAD)
Author: [your_name] <[your_email]>
Date:   Sun Apr 5 01:17:35 2020 +0900

    [commit_message]

commit [checksum_SHA-1]
Author: [your_name] <[your_email]>
Date:   Sun Apr 5 01:11:43 2020 +0900

    [commit_message]

가장 최근에 한 일이 가장 위에 뜬다.
checksum의 SHA-1해시에 대해서는 Git의 무결성을 참고하면 이해가 될 것이다.

 

더 자세히 각 commit마다 어떤 차이가 있는지 알고 싶다면

$ git log -p #혹은
$ git log --patch

를 입력하면 된다.

 

현재 remote명은 origin, branch명은 master이며 아무것도 commit되지 않은 상태라는 것을 알 수 있다.
새 branch를 만들어 그 branch로 checkout할 것이다.
checkout이라는 것은 branch를 변경한다는 뜻이다.

git checkout의 설명서를 보면

$ git checkout --help
git checkout -b|-B <new_branch> [<start point>]
           Specifying -b causes a new branch to be created as if git-branch(1) were called and
           then checked out. In this case you can use the --track or --no-track options, which
           will be passed to git branch. As a convenience, --track without -b implies branch
           creation; see the description of --track below.

           If -B is given, <new_branch> is created if it doesn't exist; otherwise, it is reset.
           This is the transactional equivalent of

               $ git branch -f <branch> [<start point>]
               $ git checkout <branch>

           that is to say, the branch is not reset/created unless "git checkout" is successful.

라고 되어있다.
-b옵션을 사용하면 새로운 branch를 만들 수 있는데 만약 -B옵션을 사용하면 해당 branch가 존재하지 않을 경우에는 입력한 이름으로 새로운 branch를 만들지만 이미 존재하고 있는 경우에는 reset 된다고 한다.

$ git checkout -b [new_branch_name]
$ git status
On branch new_branch
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:   sample.txt

 

checkout하기 전에 sample.txt에 새로운 문장을 추가했더니 빨간 색으로 modified: sample.txt라고 뜬다.
git add sample.txt를 하면 초록색으로 modified: sample.txt가 출력된다.

$ git commit -m "modify"

라고 commit 했더니 log에서 sample.txt에 대한 내용은 사라졌다.

 

이제 push를 할 때에는 새 branch이름을 적어주어야 한다.

$ git push origin [new_branch_name]

 

branch가 master일 때 sample.txt에는 Hello github, this is sample.txt.만 적혀있고 new_branch일 때 sample.txt에는 Hello github, this is sample.txt. And I'll checkout branch.라고 적혀있다.

new_branch의 변경 사항을 master에 merge할 것이다.

$ git checkout master
$ git merge new_branch


어느 branch에서나 sample.txt에는 Hello github, this is sample.txt. And I'll checkout branch.가 적혀있는 것을 확인할 수 있다.