난 일부 내용이 파일로 예증의표적으로 디스크입니다. diskid 커밋되었습니다 몇 번 그룹의 일부로, 지금은 다시 되돌릴 수 있는 파일 변경 / 재설정하려면 이전 버전.
깃 (git) 와 함께 '한' 로그 '나는 깃 (git) 을 찾을 수 있지만, 그냥 아무 생각이 어떻게 데릭쉐퍼드와 diff' 개정 이전의 상태로 돌아가기 위해 해당 파일을 내려받습니다 것이다.
해시 c5f567 커밋합니다 원하는 것은 '가정':
git checkout c5f567 -- file1/to/restore file2/to/restore
이 [git 체크아웃합니다] (https://git-scm.com/docs/git-checkout) 맨페이지를 더 많은 정보를 제공합니다.
전에 ',' ~ '를 되돌려집니다 스케쳐내 커밋합니다 c5f567 덮어쓰기/추가 1' (수행됨 임의의 숫자):
git checkout c5f567~1 -- file1/to/restore file2/to/restore
변경된 사용하여 파일의 diff 명령은 빠르게 검토할 수 있습니다.
git diff <commit hash> <filename>
그럼 되돌려집니다 증대하고자 하는 특정 파일을 사용하여 재설정하지 명령:
git reset <commit hash> <filename>
하드 경우 로컬 수정 '' 옵션을 사용해야 할 수도 있습니다.
좋은 것이 국가링 작업흐름 경유지를 태그를 사용하여 네 타임라인을 변수를 확실하게 lesher 점. 내가 원하는 것은 매우 이해할 수 있지만, t can& # 39 에서 갈리는 너희는너희가 마디였나 마지막 분기 이전 시점으로. 이를 위해 사용하는 휴대용 체크아웃합니다 명령:
git checkout <commit hash>
git checkout -b <new branch name>
그런 다음 네 주류 준비가 되었으면 하는 그러한 변화에 대해 리베이스 병합하려면.
git checkout <my branch>
git rebase master
git checkout master
git merge <my branch>
난 이제 막 쉐퍼드도 경식도 동일한 문제를 이해하기 쉽게 http://support. [이 오토메이티드] [1] ('ref 커밋합니다' 은 sha 값 변화를 로그인되도록 가고 싶어 다시):
git checkout [commit-ref] [filename]
이렇게 하면 그거 작업 디렉토리에 이전 버전 부터 이 스케쳐내 증대하고자 수 있습니다.
[1]: http://www-cs-students.stanford.edu/ ~ blynn/gitmagic/ch02.html
가끔 잊고 싶은 과거를 뒤로 돌아가서 모든 변경 때문에 특정 지점에 they& # 39, re all 빗나갔다.
시작.
깃 (git) '로그' $
최근 커밋한 목록을 보여 주는, 그들의 SHA1 해시.
다음으로, 유형:
git 재설정하지 하드 SHA1_HASH '-' $
주어진 상태 (state) 에서 모든 신규 및 지우기입니다 복구하므로 커밋합니다 커밋한 기록하십시오 있겠느.
When you say rollback" 빈틈없어야 신중한 ";). 버전 파일 하나만 사용할 경우 증대하고자 에서 $ $ $ A, B 와 C 두 차례 변경 후 나중에 두 개의 별도 커밋한 (so what you are 보는 것이 세 번째 이터레이션입니다 파일 경우, 첫 번째 one" " 말하도다 롤백합니다 진심이에요;, I want it?
두 번째와 세 번째 이터레이션에 스케쳐내 변경 사항을 모두 없앨 것은 매우 단순하다.
$ git checkout $A file
그리고 당신이 커밋합니다 결과. I want to 체크아웃합니다 " 묻는, 명령 파일에 기록한 이 상태에서 커밋합니다 $ A".
반면 너희는너희가 변경 없앨 것을 의미한다. (즉 커밋합니다 $ B) 는 두 번째 이터레이션에 들여온 무슨 짓을 했는지 유지하면서 커밋합니다 파일 전날에약혼자에게 그녀의심장을 되돌려집니다 B C $ $
$ git revert $B
참고로 만든 자는 커밋합니다 $ B 않았을 수 있으며, 이 같은 변화가 있을 수 없는 매우 체계적인 및 커밋됩니다 연관해제된 커밋합니다 리업으로 과민반을을 아닌 파일을 볼 수 있습니다 잘못된 변경으로부터 파일 터치 때문에 조심스럽게 그런 결과를 확인할 수 있습니다.
깃 (git) ',' 재미있게 foo 체크아웃합니다 apc® 복제본에 경우 ',' 라는 디렉터리입니다 foo 가 작동하지 않습니다. 그러나 양 '깃 (git)' 가 '와' foo 헤드에게 체크아웃합니다 ./foo 체크아웃합니다 깃 (git):
$ pwd
/Users/aaron/Documents/work/foo
$ git checkout foo
D foo
Already on "foo"
$ git checkout ./foo
$ git checkout HEAD foo
>. 깃 (git) 내 branch> 체크아웃합니다 <; >. git 리베이스 마스터 >. git 체크아웃합니다 마스터 >. git 병합해야 내 branch> <;
Solaris. 합니다.
>. - o o o o 마스터 >. 내 branch> -a-b <;
처음 두 개의 명령. 커밋합니다 깃 (git) 내 branch> 체크아웃합니다 <; git 리베이스 마스터
. 변경 분기로의 체크아웃합니다 적용할 '마스터' 주장한다. 이 '명령' 에서 ',' 는 리베이스 커밋한 <, 내 branch> (없는 '마스터') 와 그 머리를 다시 적용 '마스터'. 즉, ',' 의 첫 번째 커밋합니다 상위입니다 <, 더 이상 내 branch> '마스터' 역사 '의 이전 커밋합니다 있으나 현재 머리를 마스터'. 두 명령의세 같습니다.
git rebase master <my branch>
이 명령에 따라, base" " 모두 너희에게베풀어진 더 쉽게 할 수 있을 수 있습니다. 및 " modify"; 분기로서의 명시성 있다.
. 그 결과 최종 기록이 있다.
>. - o o o o 마스터 >. # 39 -a& B& # 39; -; 내 branch> <;
git checkout master
git merge <my branch>
. 내 모든 ',' 변경, 빨리감기 병합해야 < branch> 하는 적용하십시오 관용으로충만하신 '마스터'. 이 단계를 리베이스 추가할 수 없는 커밋합니다 없이 '마스터'. 최종 결과 입니다.
>. # 39 o-o-o-o-A& B& # 39 - -;; 내 branch> 사찰안에 <;
'마스터' 와 ',', ',' 내 branch> < B& # 39 모두 참조. 또한 이 곳에서 삭제하는 것이 안전합니다. ',' 내 branch> < 참조입니다.
git branch -d <my branch>
[1]: # 373848 http://stackoverflow.com/questions/373812/rollback-file-to-much-earlier-version/373848
그리고, awk, git 앨리어스를 > 쉘로 기능ᆞ기술과 구출하기 위해!
git prevision <N> <filename>
여기서 ',' 는 여러 버전의 파일, N> < 롤백하려면 filename> <, 파일 ','. 예를 들어, 이전 버전의 x/y/z.c 실행하십시오 즉시인지 체크아웃합니다 단일 파일 ''
git prevision -1 x/y/z.c
_
'다음' 기트콘피그 데이터베이스에구성원을 추가
[alias]
prevision = "!f() { git checkout `git log --oneline $2 | awk -v commit="$1" 'FNR == -commit+1 {print $1}'` $2;} ;f"
>. 기본적으로 명령 >. >. 는 '로그' 에서 지정한 파일 및 깃 (git) >. 해당 커밋합니다 id 역사에서 파일이므로 선택 >. * 실행하므로 깃 (git) 'a' 로 지정된 커밋합니다 id 체크아웃합니다 절실해졌습니다.
파일을 복구할 수 있는 경우 이전 커밋합니다 (및 원하는 파일을 되돌려집니다 이미 커밋됨) 사용할 수 있습니다.
git checkout HEAD^1 path/to/file
또는
git checkout HEAD~1 path/to/file
그럼 그냥 스테이징하려면 및 커밋합니다 new" "; 버전.
지식을 가질 수 있는 무장한 커밋합니다 경우, 두 부모가 알아야 할 수 있는 첫 번째 부모 및 헤드에게 병합해야 헤드입니다 ^ 1 은 두 번째로 모피쳐 ~ 1.
하나만 있으면 모피쳐 진단트리의 인컨텍스트 작동합니다.
저는 꽂으십시오 [이시지스] (https://people.gnome.org/ ~ 뉴런 / 예 /) 는 래퍼 더 다가갈 수 있도록 하는 수 없이 초보자 임무야, git 사용자 온 것이다. 이 중 하나는 않니다 [열거하십시오 깃 (git) '에 더 의미를' 리업으로] (http://www.gnome.org/ ~ newren/eg/git-eg-differences.html # 리업으로). 이 경우 기도하라주여 됩니다
code> <; [예 리업으로] (http://www.gnome.org/ ~ newren/eg/documentation/revert.html), foo / 표시줄에는 foo/baz< < /code>;;; /b> b> <.
하지만, that '깃 (git)' 와 './foo 체크아웃합니다 체크아웃합니다 헤드입니다 ./foo 깃 (git)' , 정확히요 같지 않습니다. 성공 사례:
$ echo A > foo
$ git add foo
$ git commit -m 'A' foo
Created commit a1f085f: A
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 foo
$ echo B >> foo
$ git add foo
$ echo C >> foo
$ cat foo
A
B
C
$ git checkout ./foo
$ cat foo
A
B
$ git checkout HEAD ./foo
$ cat foo
A
(두 번째 '' 있지 않지만, 파일 추가 스테이징합니다 색인에서 확보하십시오. 커밋됨.)
깃 (git) '에서' 길 '' , 인덱스화할 ./foo ./foo 체크아웃합니다 고말은 복구입니다. 깃 (git) 이 길을 '헤드' 추가 지시가 되돌려집니다 색인에서 있다. '헤드' 수정번호 언로드하기 전에.
여기서 계열에 따라 가장 많은 제안 '깃 (git) - $ $ 개전판이 체크아웃합니다 파일'. 대체 몇 가지 않았다.
git show $revision:$file > $file
이 뿐만 아니라, 그냥 내가 사용하는 많이유 일시적으로 특정 버전을 볼 수 있습니다.
git show $revision:$file
또는
git show $revision:$file | vim -R -
(OBS: '$ 파일' 필요가 접두어로 './' 경우 $. $ 파일 표시 "에 대한 상대 경로를 깃 (git) '을 개정 작업 중)
그리고 더욱 이상한:
git archive $revision $file | tar -x0 > $file
그러므로 나는 이런 것 하나도 가져다줄래요 질문하시리니 지우시겠습니까 내거냐 추가할 수 있는 슈퍼 쉬운 것 같다.
I have a 커밋합니다 abc1 '과' 내가 행한 후 여러 (또는 원-부트 수정) 파일로 피레스테스트 ''.
git 체크아웃합니다 피레스테스트 ':' 1. 이렇게 하면, 필요할 경우 로컬 변경을 제거하시겠습니까 don& # 39, t
깃 (git) abc1 체크아웃합니다 피레스테스트 ':' 2. 이 그것을들추어 해당 파일이 데이터베이스에구성원을 그들이성년에 버전
깃 (git), 3. ',' abc1" 리스토어된 피레스테스트 " 커밋합니다 - m 버전: 이렇게 하면 너회의 커밋합니다 개정.
git push ':' 4. 이 모든 것을 적극 추진할 방침이라고 이 원격 리포지토리를
물론 네가 할 수 있는 '2 단계와 3 간의 git status' 이해할 수 있는 것입니다. 일반적으로 볼 수 있습니다 '이미' 피레스테스트 깃 (git) '의' 추가 바로 추가되든지 필요는 없다.