“7 일 전에 작성된 것; 14 시간 전에 커밋했습니다.”GitHub를 의미합니까?


21

이 GitHub 리포지토리 에서 이것을 보고 있습니다 .

여기에 이미지 설명을 입력하십시오

이것은 무엇을 의미 하는가? 어떻게 "7 일 전에 작성"하고 "14 시간 전에 커밋"할 수 있습니까?


git은 그가 편집 한 파일과 실제로 커밋하고 푸시 한 시간 사이의 타임 스탬프를 측정 할 수 있습니까? 나는 그러한 기능에 대한 사용을 보지 못하지만 그것은 그 말이 암시하는 것과 비슷합니다.
Seth

@Seth 그것이 처음에 생각한 것이지만, Git이 타임 스탬프를 사용하여 무엇을하고 있는지 들어 본 적이 없습니다.
실행 취소

@Seth Git은 파일 타임 스탬프를 무시합니다. 커미터는을 사용하여 작성자 타임 스탬프를 즉시 변경할 수 있습니다 commit --date=. Schwern은 매우 잘 설명합니다.
ADTC

@Undo 나는 당신이 "14 시간 전"을 "14 일 전"과 혼동하지 않기를 바랍니다 ... 이제 7 일이 지나서야 아직 작성되지 않은 무언가를 저지른 것은 정말 이상 할 것입니다 ... Git이 작성자 타임 스탬프를 커미터 타임 스탬프보다 크게 설정하지 못하는지 확실하지 않습니다. 아마 상관하지 않습니다.
ADTC

답변:


21

Git은 저자 (코드를 작성한 사람)와 커미터 (저장소에 그것을 저지른 사람)라는 별도의 개념을 가지고 있습니다. 마찬가지로 두 날짜 모두 다른 날짜가있을 수 있습니다. 그들은 일반적으로 동일합니다.

코드를 작성하거나 패치를 제출 한 사람이 패치 제출을 위해 메일 링리스트를 사용하는 프로젝트에서와 같이 저장소에 대한 푸시 액세스 권한이없는 경우에는 주로 다르게 설정하기를 원합니다. 이 경우, 푸시 액세스 할 수있는 사람이 패치 및 실행을 적용 할 것 git commit중 하나와 함께 --author하고 --date스위치 또는 GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL 및 GIT_AUTHOR_DATE 환경 변수를 사용하여 (에 설명 자식 커밋 트리 .

다른 경우는 git cherry-pickgit rebase를 사용하는 것입니다. 커미터는 체리 피킹을하는 사람이고 저자는 원래 커밋의 저자입니다. Git은 저자의 신원과 날짜 설정을 처리합니다.

이 정보는로 저장소에서 볼 수 있습니다 git log --pretty=fuller.

commit 21550561941b078ea1862b882ec89f26696ff5bb (HEAD, origin/master, origin/HEAD, master)
Author:     thiagopnts <thiagopnts@gmail.com>
AuthorDate: Tue Nov 18 14:52:49 2014 -0200
Commit:     Thiago Pontes <email@thiago.me>
CommitDate: Tue Nov 25 09:46:58 2014 -0200

    open repository url if confirmed, closes #1

1
git rebase또한 작성 날짜가 동일하게 유지되는 동안 커밋 날짜가 업데이트됩니다.
CJM

@cjm 당신이 맞아요! rebase와 cherry-pick은이 점에서 동일하게 동작합니다. 리베이스는 여러 체리 픽으로 생각할 수 있습니다.
Schwern

1
메일에서 패치를 적용하기 위해 git am 도 있는데, 메일 메시지에서 날짜와 작성자를 자동으로 가져옵니다.
deltab

6

이것은 Git이 날짜와 작동하는 방식과 GitHub의 닫는 키워드 로 참조되는 방식 사이의 혼합처럼 보입니다 .

힘내는 커밋 날짜와 저자 날짜를 구분합니다. Pro Git 에서는 차이가 있습니다 .

저자는 원래 저작물을 쓴 사람이고 커미터는 마지막으로 작품을 적용한 사람입니다. 따라서 프로젝트에 패치를 보내고 핵심 멤버 중 하나가 패치를 적용하면 둘 다 크레딧을 얻게됩니다 (저는 저자, 핵심 멤버는 커미터).

따라서 코드 자체가 "7 일 전"(로컬로) 커밋 / 쓰기되었지만 "14 시간 전"까지 코드에 "적용"되거나 패치되지 않았습니다. 메시지.


2
나는 그것을 테스트하지는 않았지만 저자 정보가 Github 닫기 키워드에 의해 추가되었다고 생각하지 않습니다. 커미터 및 작성자 ID와 날짜는 커밋 ID에 구워집니다. Github이이 중 하나를 변경하면 원격 쪽의 커밋 ID가 변경됩니다. 원격 및 로컬 리포지토리가 분기됩니다. 저자는 억지로 밀거나 당기지 못할 수 있습니다.
Schwern

2
커밋은 원격으로 푸시하는 것과 다릅니다. 커밋을 포함하여 Git의 거의 모든 것을 로컬에서 수행 할 수 있습니다. 먼저 커밋 (두 타임 스탬프 제공)하고 나중에 푸시 (커밋을 원격에 업로드하지만 타임 스탬프는 제공하지 않음)를 푸시 할 수 있습니다. 커밋이 푸시 된 시점을 아는 것이 중요하지 않으므로 '푸시 타임 스탬프'가 없습니다. 여러 번 푸시 및 푸시 할 수 있습니다.
ADTC
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.