다시 아름다운 상태로 돌아가고 싶다면 (git 프로젝트)
특히 튜닝이나 팩스를 할 때는 "아, 전에 제출하는 게 좋을 텐데..."이렇게 생각하는 일이 많다.
그때는 프로젝트가git관리였다면 취소하려고 했지만 git의 개념을 이해하지 못하면 "어? 여기서 사라진 거 아니야?
git reset --
?"때로는 이렇게 될 수도 있어.이 글은 예를 들어
git checkout .
,git reset --
,git checkout .
의 차이를 설명함으로써 충분히 이해하고자 한다.Excuse
간단하니까 index tree 말은 안 할 거예요.
엄밀한 동작을 알고 싶은 사람은 여기서 읽는 것을 멈추고 원본 코드 m()를 찾으세요.m
https://github.com/git/git
git 관리 창고의 파일
git는 개념적으로도 로컬 창고만 사용하여 버전 관리를 할 수 있지만 보통github 등 원격 창고에서 분산 관리를 하는 데 많이 사용된다.
그래서 원격 창고로 밀어넣기 전의 파일 동작을 설명하고 싶습니다.
먼저 로컬 파일 저장 장치로 새 파일을 만듭니다(그림 왼쪽 아래).
$ touch new_file.txt
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
new_file.txt
nothing added to commit but untracked files present (use "git add" to track)
이 파일은git에 의해 관리되지 않기 때문에 실행 git clean -f
을 실행하여 파일을 관문에 업로드해야 합니다.$ git add new_file.txt
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: new_file.txt
이 단계의 문서는 준비상태라고 할 수 있으며 현지 창고로 확정하기 위해 실행git add
한다.$ git commit -m 'initial commit'
[master a0a2837] initial commit
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 new_file.txt
$ git status
On branch master
nothing to commit, working tree clean
따라서 로컬 창고가 제출되었습니다git commit
.이 파일에 새로운 수정을 추가해 보십시오.
$ echo "hello, world" >> new_file.txt
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: new_file.txt
no changes added to commit (use "git add" and/or "git commit -a")
new_file.txt
의 상태는new_file.txt
, 동시에modified
라고 쓰여 있다.즉, 이 업데이트는 로컬 파일 시스템에만 한정되어 창고에 아무런 변화가 없음을 나타낸다.
그래서 다시
Changes not staged for commit
과git add
.$ git add new_file.txt
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: new_file.txt
$ git commit -m 'second commit'
[master ff64c20] second commit
1 file changed, 1 insertion(+)
$ git status
On branch master
nothing to commit, working tree clean
이렇게 되면 로컬 창고에 변경 사항이 쓰여 있고 원격 창고git commit
에 있으면 이 파일의 수정이 원격 창고에 반영됩니다.$ git push
...(省略)
지금까지git의 기본 파일을 추가, 변경하는 절차였습니다.관문 취소:git push
로컬 창고의 파일
git reset --
이후 수정을 취소할 때git add
.# 新しくファイルを追加
$ touch another_new_file.txt
# ファイルをステージ
$ git add another_new_file.txt
# 状態確認
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: another_new_file.txt
# => git にトラックされている
# 取り消し
$ git reset --
# 状態確認
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
another_new_file.txt
nothing added to commit but untracked files present (use "git add" to track)
# => Untracked files になっている
엄밀히 말하면 git reset --
는 지역 창고의 역사를 거슬러 올라가는 명령(※)이다.그림에서 보듯이 중간축의 상하 방향에 대한 명령이라고 할 수 있다.
※ 더 엄밀히 말하면 index tree를 조작하라는 명령입니다.관심 있는 사람은 읽을 수 있다소스 코드.
로컬 파일 시스템 변경 취소:git reset
로컬 파일 시스템에서 수정된 파일을 취소하려면
git checkout .
.# 状態確認
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: new_file.txt
no changes added to commit (use "git add" and/or "git commit -a")
# => コミットされていない変更がある
# 取り消し
$ git checkout .
# 状態確認
$ git status
On branch master
nothing to commit, working tree clean
# => 変更が取り消されている
그림에서 보듯이 왼쪽 축의 위아래 방향을 따라 전진하는 명령이라고 할 수 있다.단, 대상은git가 관리하는 파일에만 한정됩니다.
새 파일 삭제:git checkkout.
git에서 관리하지 않은 모든 파일을 삭제하려면
git clean -f
을 사용하십시오.# 状態確認
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
another_new_file.txt
nothing added to commit but untracked files present (use "git add" to track)
# => ステージされていないファイルがある
# 取り消し
$ git clean -f
Removing another_new_file.txt
# 状態確認
$ git status
On branch master
nothing to commit, working tree clean
# => ステージされていないファイルは全てなくなっている
왼쪽 축의 위아래 방향을 따라 전진하라는 명령이기도 하다.단, 대상은git에서 관리하지 않는 파일에만 한정됩니다.
끝말
이 세 가지 명령을 사용하면 시행 오류의 변경 사항을 초기화할 수 있습니다. 기억하면 유용합니다.
하지만 이 지령들이 습관이 되면 중요한 업데이트가 사라지기 때문에 과도하게 사용하지 않는 것이 좋다.
상관없는 말이지만
git clean -f
와ls
gs
의 별명 등록에 익숙해졌어요.
Reference
이 문제에 관하여(다시 아름다운 상태로 돌아가고 싶다면 (git 프로젝트)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/chase0213/items/da7bce5512394c73e0de텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)