WIP에 PR을 올리는 게 좋을 것 같아서 git랑 친해지고 싶어요.

3111 단어 Git

변명


처음에fixup과rebase-i의 말을 하고 싶었어요.
포기했어.

그것 대신


하나라도 좋아요.git의 tips를 제공하고 싶어요.

일단 TIPS.


HEAD는 이미 안 썼어요. @ 가 있으니까.
Release note 1.8.5

일을 해본 적이 없는 것으로 간주하다


너는 일을 진행해서 코드에 몇 가지 변경을 추가했다.즉, Working directory에 몇 가지 변경된 상태가 있습니다.잠시 후, 나는 이 변경이 좋지 않다는 것을 발견했다.Working directory의 변경 사항이 모두 없도록 하기 위해서 어떤git 명령을 내려야 합니까?
$ git reset --hard

or

$ git checkout .

or

$ git stash
문제야.
reset과 checkkout의 차이는 무엇입니까?
문제야.아래의 차이는 무엇입니까?
$ git stash 
$ git stash -u
$ git stash --all

나는 그것을 몇 번 제출한 상태로 바꾸고 싶다


지금 이 상태야.
$ git log --oneline
c1dec0f (HEAD -> master) Add D
658fa0d Add C
5dfec5e Add B
07db11b Add A
네 번 제출했습니다.A-B-C-D.지금은 최신 D의 상태입니다.조금 지나서야 맛이 없다는 것을 알았다.B의 상태에서 다시 일을 시작하고 싶은 당신은 어떤git 명령을 내립니까?
$ git reset @^^

or

$ git checkout @^^
문제야.
특정 파일을 B 상태로만 만들려면 어떻게 합니까?

단지 어떤 파일을 앞의 몇 개의 제출 상태에 두려고 한다


어떡하죠?
$ git checkout @^^ hoge.txt
문제야.
checkkout에게 패스하는 것과 패스하지 않는 것은 어떤 차이가 있습니까?

reset과 checkkout의 차이점


전면적으로 설명하기 어려우므로 몇 가지 요점을 소개한다.
왜 개괄적으로 설명하기 어려운지 말하자면, 리셋, 체크아웃은 모두
파라미터가 있는지 없는지에 따라 path가 있는지 여부를 결정하기 때문이다.

path를 지정할 수 없습니다.

$ g reset --hard @^^ hoge.txt
fatal: Cannot do hard reset with paths.

checkkout@^^는 detached HEAD

$ g checkout @^^
Note: checking out '@^^'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now at 5dfec5e Add B
방금 git를 썼는데 이게 공황을 일으킬 줄은 몰랐어요.
그래프는 이런 느낌이에요.
$ git log --graph --branches --oneline
* c1dec0f (master) Add D
* 658fa0d Add C
* 5dfec5e (HEAD) Add B
* 07db11b Add A
그리고 .git/HEAD는 다음과 같다.
$ cat .git/HEAD
5dfec5ea84035e05983e40e30adabe949325e768
보통 다음과 같다.
$ cat .git/HEAD
ref: refs/heads/master
즉, HEAD에 분기가 없고 SHA-1 해시 값을 직접 기재한 상태는detached HEAD였다.
그러니까 진정하고 그곳git checkout -b <new-branch-name>에서 하면 돼.

checkkout Staging area 무시


dd가 변경된 상태에서 Working directory를 HEAD 상태로 변경하려는 경우git checkout @ . 기대한 결과를 얻지 못했다.

좋은 웹페이지 즐겨찾기