๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’Ž/GIT

[Git] ๋‚ด๊ฐ€ ๋ณด๊ธฐ ์œ„ํ•ด ์ •๋ฆฌํ•˜๋Š” Git 2

by dar0m! 2020. 4. 23.
  • git show ์ปค๋ฐ‹ + ๋ณ€๊ฒฝ๋‚ด์šฉ ํ™•์ธ
  • git log ์ปค๋ฐ‹ ๋‚ด์šฉ ํ™•์ธ
  • git log -p ์ž์„ธํ•œ ๋‚ด์šฉ
  • git shortlog ์ปค๋ฐ‹ ๋‚ด์šฉ ๊ฐ„๋žตํžˆ
  • git diff ์ฝ”๋“œ ๋‚ด ๋‹ฌ๋ผ์ง„ ์  ๋ณด๊ธฐ
  • cat .git/config remote ์ฃผ์†Œ๋“ค ์•Œ ์ˆ˜ ์žˆ์Œ. ๋ณดํ†ต

origin/upstream ์ด๋ฆ„์„ ๋งŽ์ด ์“ฐ๋Š”๋ฐ, upstream์€ ๊ณต๋™์˜ ์ž‘์—…๊ณต๊ฐ„์ด๋ผ๋Š” ๋œป.

์„œ๋ช… ์ถ”๊ฐ€

  • git commit -sm "" -s ์˜ต์…˜์œผ๋กœ ์„œ๋ช…์„ ํฌํ•จํ•œ๋‹ค. (Signed-off by: darom)
    ์˜คํ”ˆ์†Œ์Šค์—์„œ ์ค‘์š”. ๋ผ์ด์„ผ์Šค๋ฅผ ๋‹ค ์ดํ•ดํ•˜๊ณ  ๊ฐœ๋ฐœ์„ ํ–ˆ๋‹ค๋Š” ๋œป.

commit ์ˆ˜์ •

  • git commit --amend ๋‚ด๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ํ–ˆ๋˜ ์ปค๋ฐ‹ ์ˆ˜์ •

--amend ํ›„ push ํ•  ๋•Œ๋Š” ์ถฉ๋Œ์ด ๋‚˜๋ฏ€๋กœ,

  • git push origin master --force ๋˜๋Š”
  • git push origin master -f

    ์ด ๋‘˜์€ ์œ„ํ—˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ณต๋™์ž‘์—…์—์„œ๋Š” ํ”ผํ•˜๋Š” ๊ฒŒ ์ข‹๋‹ค.

add ๋ชฉ๋ก ์‚ญ์ œ

  • git reset addํ•œ ๋ชฉ๋ก ์‚ญ์ œ
    touch test / rm (-f) test

commit ๋ชฉ๋ก ์‚ญ์ œ

touch test

git add test; git commit -sm "test"

git push origin master

  • git reset HEAD~1 ์ตœ์‹ ์ˆœ์œผ๋กœ 1๊ฐœ ์‚ญ์ œ. ๊ฐ€์žฅ ์ตœ๊ทผ ์ปค๋ฐ‹์„ ์ง€์šด๋‹ค. (๋กœ์ปฌ์—์„œ๋งŒ ์ง€์›€)

๋”ฐ๋ผ์„œ remote ์—๋‹ค๊ฐ€๋„ ํ˜„์žฌ์ƒํƒœ์™€ ๋˜‘๊ฐ™์ด ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, git push origin master -f

pull-request

๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์— ๋‚ด๊ฐ€ ๋งŒ๋“  commit์„ ์ œ์ถœํ•˜๋Š”๊ฒƒ์ด๋‹ค. (์‹ค์ œ ์ „์†ก๋‹จ์œ„๋Š” branch)

์ƒ๋Œ€๋ฐฉ ํ”„๋กœ์ ํŠธ๋ฅผ fork(๋ณต์‚ฌ) ํ•ด์„œ ๋‚ด ๊ณ„์ •์—์„œ ๊ด€๋ฆฌ๋˜๋Š” ํ”„๋กœ์ ํŠธ๋กœ ์ƒˆ๋กญ๊ฒŒ ๋งŒ๋“ค์–ด ๋‘๊ณ  ํ’€๋ฆฌํ€˜๋กœ ์ œ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

remote origin ์—๋Š” ๋‚ด ๋ ˆํฌ์ฃผ์†Œ

remote upstream ์—๋Š” ๊ณต๋™ ๋ ˆํฌ ์ฃผ์†Œ.

Rebase(๋˜๊ฐ๊ธฐ ๊ธฐ๋Šฅ์„ ํฌํ•จ)

commit์„ ์—ญ์‚ฌ์˜ ํ•œ๋‹จ์œ„ '๋ธ”๋Ÿญ'์ด๋ผ ํ•˜๊ณ  ๋ธ”๋Ÿญ๋“ค์˜ ๋ชจ์ž„์„ 'tree'๋ผ ํ• ๋•Œ

๋‚ด๊ฐ€ ์Œ“์€ ๋ธ”๋Ÿญ์„ ์ž ์‹œ ๋นผ๊ณ 

โ€‹ (๋บ€ ๋‚˜๋จธ์ง€)๊ธฐ์ค€์ด ๋˜๋Š” tree๋ฅผ ์ตœ์‹  ์—…๋ฐ์ดํŠธ ํ•œ ํ›„์—

โ€‹ ๊ทธ ์œ„์— ๋‹ค์‹œ ๋‚ด ๋ธ”๋Ÿญ์„ ์Œ“์•„ ์˜ฌ๋ฆด๋•Œ ์“ธ ์ˆ˜ ์žˆ๋‹ค.

→ ๋ฒ ์ด์Šค๋ฅผ ๊ต์ฒดํ•œ๋‹ค.

// remote upstream ์ถ”๊ฐ€. ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋Š” ๊ณต์šฉ ๋ ˆํฌ์ง€ํ† ๋ฆฌ.
git remote add upstream http://github.com/Taeung/git-training.git

// ํ™•์ธ
$ cat .git/config
[core]
        repositoryformatversion = 0
        filemode = false
        bare = false
        logallrefupdates = true
        symlinks = false
        ignorecase = true
[remote "origin"]
        url = https://github.com/vo0a/git-training-1.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master
[remote "upstream"]
        url = http://github.com/Taeung/git-training.git
        fetch = +refs/heads/*:refs/remotes/upstream/*

fetch๋กœ upstream์˜ dev ๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ€์ ธ์˜ด

$ git fetch upstream dev
warning: redirecting to https://github.com/Taeung/git-training.git/
From http://github.com/Taeung/git-training
 * branch            dev        -> FETCH_HEAD
 * [new branch]      dev        -> upstream/dev

$ ls -A
.git/  img/  packing_knapsack/  pull_reqeust_test/  README.md

fetch์™€ pull์˜ ์ฐจ์ด๋Š” ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์€ ๋งคํ•œ๊ฐ€์ง„๋ฐ,

  • fetch๋Š” .git์—๋‹ค๊ฐ€ ๋„ฃ๊ณ 
  • pull์€ merge๋ฅผ ๋™๋ฐ˜ํ•œ๋‹ค.
// ํ˜„์žฌ ๋‚ด ๋ธŒ๋žœ์น˜๊ฐ€ develop์ธ์ง€ ํ™•์ธ ์•„๋‹ˆ๋ผ๋ฉด ์ด๋™. -> ๋ธŒ๋žœ์น˜ ์ƒ๊ด€์—†์ด fetch๋กœ ๋‹น๊ฒจ์˜จ ๊ฒƒ.
git status

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

nothing to commit, working tree clean

$ git checkout develop
Switched to branch 'develop'

// rebase. develop์˜ ๋ฒ ์ด์Šค๋ฅผ upstream/dev๋กœ ๋ฐ”๊พผ๋‹ค.
$ git rebase upstream/dev
First, rewinding head to replay your work on top of it...
Applying: test pull request
Applying: test // ์ƒˆ๋กœ ์ž‘์„ฑํ–ˆ๋˜ ์ปค๋ฐ‹๋“ค์„ ๋‹ด์•„๋’€๋‹ค๊ฐ€ ๋ฒ ์ด์Šค๊ฐ€ ๋ฐ”๋€Œ๋ฉด ๋‹ค์‹œ ์ ์šฉ๋˜๋Š” ํ˜•ํƒœ.

์ค‘๊ฐ„์— ๋‚€ commit ์ˆ˜์ •

์ตœ์‹  ์ปค๋ฐ‹์ด ์•„๋‹Œ ์ค‘๊ฐ„์— ์žˆ๋Š” ์ปค๋ฐ‹์„ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

  • git rebase -i --root // ์ตœ์ดˆ์˜ ์ปค๋ฐ‹๊นŒ์ง€ ๊ฐ๋Š”๋‹ค.
  • ๋‘ ๋ฒˆ์งธ ์ปค๋ฐ‹์„ ์ˆ˜์ •ํ•ด๋ณด๋ฉด,git commit --amend
$ git rebase -i --root // ์—๋””ํ„ฐ๊ฐ€ ๋–ด์„ ๋•Œ 2๋ฒˆ์งธ ์ค„์„ ์ˆ˜์ •ํ–ˆ์Œ.
Stopped at 864cf0f...  Add knapsack problem PDF
You can amend the commit now, with

  git commit --amend

Once you are satisfied with your changes, run

  git rebase --continue

$ git shortlog
Taeung Song (2): // ๋ถ„๋ช…ํžˆ 15๊ฐœ ์˜€๋Š”๋ฐ 2๊ฐœ ๋ฐ–์— ๋ณด์ด์ง€ ์•Š์Œ. -> ๋˜๊ฐ์•˜๊ธฐ ๋•Œ๋ฌธ.
      Add README file
      Add knapsack problem PDF

/GitGitHub ์ž…๋ฌธ/git-training/git-training-1 (develop|REBASE-i 2/15)
$ git status
interactive rebase in progress; onto cf2a256
Last commands done (2 commands done):
   pick 73e7acf Add README file
   edit 864cf0f Add knapsack problem PDF
Next commands to do (13 remaining commands):
   pick f9b87bb packing knapsack: Basic code solving this question
   pick 91f2d24 packing knapsack: Change basic code
  (use "git rebase --edit-todo" to view and edit)
You are currently editing a commit while rebasing branch 'develop' on 'cf2a256'.
  (use "git commit --amend" to amend the current commit)
  (use "git rebase --continue" once you are satisfied with your changes)

nothing to commit, working tree clean
  • ๋งˆ์น˜ ์˜ˆ์ „ ์—ญ์‚ฌ๋กœ ๋Œ์•„๊ฐ„ ๊ฒƒ์ฒ˜๋Ÿผ,
  • ๊ทผ๋ฐ statusํ•ด๋ณด๋ฉด ์ž ๊น ๋˜๊ฐ์•„ ๋†“์•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
  • 2๋ฒˆ์งธ ์ปค๋ฐ‹๊นŒ์ง€.
  • ๊ทธ๋Ÿฌ๋ฉด, ์ด์ œ --amend๋ฅผ ํ†ตํ•ด ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.
// ๋‘ ๋ฒˆ์งธ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์ˆ˜์ •
$ git commit --amend -sm "packing knapsack: Add knapsack problem PDF"
[detached HEAD 24f7c1f] packing knapsack: Add knapsack problem PDF
 Author: Taeung Song <treeze.taeung@gmail.com>
 Date: Fri Mar 25 12:00:37 2016 +0900
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 packing_knapsack/knapsack_problem.pdf

// ๋ณ€๊ฒฝ๋œ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ํ™•์ธ
$ git shortlog
Taeung Song (2):
      Add README file
      packing knapsack: Add knapsack problem PDF

// rebase๋ฅผ ๊ณ„์†ํ•˜๋ฉด ๊ฐ์•„๋†จ๋˜ ๊ฒƒ์„ ์ญ‰ ํ‘ธ๋Š” ๊ฒƒ์ด๋‹ค.
$ git rebase --continue
Successfully rebased and updated refs/heads/develop.

// ๋‚ด์—ญ์„ ๋ชจ๋‘ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
$ git shortlog
Taeung Song (13):
      Add README file
      packing knapsack: Add knapsack problem PDF
      packing knapsack: Basic code solving this question
      packing knapsack: Change basic code
      packing knapsack: Rename packing_knapsack to pack_knapsack
      packing knapsack: Input & Output
      packing knapsack: Add test script
      packing knapsack: Add test script generator
      packing knapsack: Implement code to solve this question
      test git-pull-request
      New version git-training
      Add v3 PDF
      Rebase test

vo0a (2):
      test pull request
      test
  • rebase -i(-interactive) ๋ฅผ ๋ฌถ์–ด์„œ ํ•˜๋‚˜์˜ ์„œ๋ธŒ ์ปค๋ฉ˜๋“œ๋ฅผ ๋งŒ๋“ ๋‹ค๊ณ  ํ•œ๋‹ค๋ฉด rewind ๋ฅผ ์“ธ ๊ฒƒ ๊ฐ™๋‹ค. -> ๋˜๊ฐ๋Š” ๊ฒƒ์ด ํฌ์ธํŠธ.

Blame

$ cd report-card

$ git blame report_card.c
7161cacd (vo0a 2020-04-06 23:16:45 +0900  1) #include<stdio.h>
7161cacd (vo0a 2020-04-06 23:16:45 +0900  2)
7161cacd (vo0a 2020-04-06 23:16:45 +0900  3) int main()
7161cacd (vo0a 2020-04-06 23:16:45 +0900  4) {
badb0fab (vo0a 2020-04-06 23:22:19 +0900  5)    int kor, eng, math;
198fa683 (vo0a 2020-04-06 23:24:44 +0900  6)    int sum = 0;
badb0fab (vo0a 2020-04-06 23:22:19 +0900  7)
badb0fab (vo0a 2020-04-06 23:22:19 +0900  8)    math = 80;
badb0fab (vo0a 2020-04-06 23:22:19 +0900  9)    eng = 100;
badb0fab (vo0a 2020-04-06 23:22:19 +0900 10)    kor = 90;
198fa683 (vo0a 2020-04-06 23:24:44 +0900 11)    sum = 80 + 100 + 90;
badb0fab (vo0a 2020-04-06 23:22:19 +0900 12)
0e5cc18f (vo0a 2020-04-06 23:20:24 +0900 13)    printf("This program print report card.\n");
badb0fab (vo0a 2020-04-06 23:22:19 +0900 14)
badb0fab (vo0a 2020-04-06 23:22:19 +0900 15)    printf("Korean : %d\n", kor);
badb0fab (vo0a 2020-04-06 23:22:19 +0900 16)    printf("English : %d\n", eng);
badb0fab (vo0a 2020-04-06 23:22:19 +0900 17)    printf("Math : %d\n", math);
198fa683 (vo0a 2020-04-06 23:24:44 +0900 18)    printf("Sum : %d\n", sum);
68d507ec (vo0a 2020-04-06 23:30:35 +0900 19)    printf("Average : %d\n", sum/3);
7161cacd (vo0a 2020-04-06 23:16:45 +0900 20)    return 0;
7161cacd (vo0a 2020-04-06 23:16:45 +0900 21) }
  • ์†Œ์Šค์ฝ”๋“œ ๋‚ด์šฉ๊ณผ ๋ผ์ธ๋„˜๋ฒ„๊ฐ€ ๊ทธ๋Œ€๋กœ ๋‚˜์˜จ๋‹ค.
  • ํ•ด๋‹น ๋ผ์ธ์ด ์–ด๋–ค ์ปค๋ฐ‹๊ณผ ์—ฐ๊ด€๋˜์–ด์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
  • git show 68d507ec ๋กœ ํ•ด๋‹น ์ปค๋ฐ‹ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

์ƒ๋Œ€์ฐธ์กฐ

์ƒ๋Œ€ ์ฐธ์กฐ๋กœ ์šฐ๋ฆฌ๊ฐ€ ๊ธฐ์–ตํ•  ๋งŒํ•œ ์ง€์ (๋ธŒ๋žœ์น˜ bugFix๋ผ๋˜๊ฐ€ HEAD๋ผ๋˜๊ฐ€)์—์„œ ์ถœ๋ฐœํ•ด์„œ ์ด๋™ํ•˜์—ฌ ๋‹ค๋ฅธ ์ง€์ ์— ๋„๋‹ฌํ•ด ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ํ•œ๋ฒˆ์— ํ•œ ์ปค๋ฐ‹ ์œ„๋กœ ์›€์ง์ด๋Š” ^
  • ํ•œ๋ฒˆ์— ์—ฌ๋Ÿฌ ์ปค๋ฐ‹ ์œ„๋กœ ์˜ฌ๋ผ๊ฐ€๋Š” ~<num>

'๐Ÿ’Ž > GIT' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Git] ๋‚ด๊ฐ€ ๋ณด๊ธฐ ์œ„ํ•ด ์ •๋ฆฌํ•˜๋Š” Git  (0) 2019.08.09

๋Œ“๊ธ€