로컬 리포지토리에서 커밋 한 시간을 변경하려면 어떻게해야합니까?커밋 시간을 변경하려면 어떻게합니까 (아직 푸시되지 않았습니까?).
몇 가지 커밋을 수행하고 컴퓨터의 날짜가 잘못되었다고 가정합니다. 이 커밋들이 아직 어느 곳으로도 밀려 들지 않았다고 가정 해보십시오.
로컬 리포지토리에서 커밋 한 시간을 변경하려면 어떻게해야합니까?커밋 시간을 변경하려면 어떻게합니까 (아직 푸시되지 않았습니까?).
몇 가지 커밋을 수행하고 컴퓨터의 날짜가 잘못되었다고 가정합니다. 이 커밋들이 아직 어느 곳으로도 밀려 들지 않았다고 가정 해보십시오.
당신은 MQ (의욕 대기열)을 쉽게 수행 할 수 있습니다
나쁜 날짜의 repo
+ hg qimport -r 2
+ hg qimport -r 1
+ hg qimport -r 0
각을 확인
+ hg init
+ echo line
+ hg commit -A -d 12/1 -m first
adding file
+ echo line
+ hg commit -A -d 12/2 -m second
+ echo line
+ hg commit -A -d 12/3 -m third
+ hg log
changeset: 2:81c88de729a8
tag: tip
user: Ry4an Brase <[email protected]>
date: Thu Dec 03 00:00:00 2009 -0600
summary: third
changeset: 1:c1fe70008824
user: Ry4an Brase <[email protected]>
date: Wed Dec 02 00:00:00 2009 -0600
summary: second
changeset: 0:abb97adaa541
user: Ry4an Brase <[email protected]>
date: Tue Dec 01 00:00:00 2009 -0600
summary: first
대기열에 패치로 변경 집합을 돌려 설정 qtip을 차례로 패치하고 날짜를 수정하십시오.
+ hg qrefresh -D
+ hg qpop
Now at: 1.diff
+ hg qrefresh -D
+ hg qpop
Now at: 0.diff
+ hg qrefresh -D
,
실제 체인지
+ hg qdel -r 0
+ hg qdel -r 1
+ hg qdel -r 2
에 다시 패치를
+ hg qpush
applying 1.diff
Now at: 1.diff
+ hg qpush
applying 2.diff
Now at: 2.diff
켤 때마다 패치를 다시 적용 모든 더 나은 :
+ hg log
changeset: 2:6b51e14aadfc
tag: tip
user: Ry4an Brase <[email protected]>
date: Wed Feb 25 22:29:01 2009 -0600
summary: third
changeset: 1:5cbb9fc51bcc
user: Ry4an Brase <[email protected]>
date: Wed Feb 25 22:29:02 2009 -0600
summary: second
changeset: 0:ec58d1f24278
user: Ry4an Brase <[email protected]>
date: Wed Feb 25 22:29:02 2009 -0600
summary: first
hg commit
에 --date
플래그가 있습니다. 이것이 커밋 시간을 덮어 쓰는 방법입니다. 문제는 툴을 사용하지 않고 이전의 변화를 재촉하는 방법입니다.
것은 이제 로컬 커밋의 다음과 같은 역사를 얻을 가정 해 봅시다 : 여기
dir1> hg commit # r100, OK
dir1> hg commit # r101, need to fix time
dir1> hg commit # r102, need to fix time
나의 해결책 :
hg diff -r100:101 > 101.diff
hg diff -r101:102 > 102.diff
cd ..
hg clone -r100 dir1 dir2 # create a copy just before changesets than needs to be fixed
cd dir2
patch -i ../dir1/101.diff
hg commit -m "Same commit message" --date="required date"
patch -i ../dir1/102.diff
hg commit -m "Same commit message" --date="required date"
cd ..
rm -rf dir1 && mv dir2 dir1 # replace working copy
당신은 아직 내 실제로 사용하지 않은 hg patch
와 패치의 적용을 자동화 할 수 있습니다 .
간단하고 깨끗한 방법. 감사! –
"hg strip"을 사용하여 복제하는 대신 문제가있는 개정을 제거 할 수 있습니다. – skypher
이 커밋 단 하나의, 그리고 그 커밋 경우 가장 최근의 하나 (어느 지점에 있든 상관없이)이 작업을 수행하는 빠른 한 줄은 다음과 같습니다.
hg commit --amend -d now
좋은 기본 방법 (MQ를 이해해야 함). 감사! –
이것은 cset 1보다 먼저 cset 2가 커밋 된 것으로 보이는 시간 순서를 바꿉니다. 다음 프로 시저를 제안합니다 : import; 모두 터뜨려 라. 푸시, 새로 고침, 푸시, 새로 고침, 푸시, 새로 고침, 모두 삭제. 점진적인 타임 스탬프를 유지하면서 트릭을 수행하는 것 같습니다. –
각 날짜를 qrefresh로 원하는 날짜로 설정할 수 있으므로 실제로 두 방법 모두 동일하게 작동합니다. –