“7 gün önce yazan ne; 14 saat önce işlendi ”demek GitHub'ta


21

Bunu GitHub deposunda görüyorum :

görüntü tanımını buraya girin

Ne anlama geliyor? Bir şey "7 gün önce hazırlandı" ve yine de "14 saat önce işlendi" nasıl olabilir?


Git, düzenlediği dosyalar arasında ve gerçekten işlediğinde ve ittiğinde zaman damgalarını ölçüyor olabilir mi? Böyle bir özellik için bir kullanım görmüyorum, ancak ifadelerin ima ettiği türden biri ..
Seth

@Seth İlk başta düşündüğüm şeydi, ama Git'in zaman damgası olan bir şey yaptığını hiç duymamıştım.
geri al

@Seth Git dosya zaman damgalarını yok sayar. Üretici, anında basarken yazar zaman damgasını değiştirebilir commit --date=. Schwern bunu çok güzel anlatıyor.
ADTC

@Undo "14 saat önce" ile "14 gün önce" ile karıştırmazsınız umarım ... Şimdi gerçekten garip olurdu, görünüşe göre henüz 7 gün sonraya bile yazılmayan bir şey işlemek ... ... ' Git'in yazarın zaman damgasını, yorumcunun zaman damgasından daha büyük ayarlamasını engelleyip engellemediğinden emin değilim; Muhtemelen umursamıyor.
ADTC

Yanıtlar:


21

Git'in ayrı bir yazarı (kodu yazan kişi) ve yorumcusu (deposu işleyen kişi) vardır. Benzer şekilde her ikisi için de farklı tarihler olabilir. Genellikle aynıdırlar.

Öncelikle kodu yazan veya düzeltme ekini gönderen kişi düzeltme eki gönderimleri için posta gönderme listelerini kullanan projelerde olduğu gibi depoya zorla erişemezse, bunların farklı olmasını istersiniz. Bu durumda, itme erişimi olan kişi yama ve koşmak geçerli olacak git commitbiriyle --authorve --dateanahtarlar ya GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL ve GIT_AUTHOR_DATE ortam değişkenleri kullanarak (belgelenen git-taahhüt-ağacının .

Diğer durum git cherry-pickya da git rebase kullanıyor . Alıcı, vişne toplamasını yapan kişidir ve yazar asıl taahhüdün yazarıdır. Git sizin için yazarın kimliğini ve tarihini ayarlamayı ele alacak.

Bu bilgiyi depoda görebilirsiniz 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 rebaseAyrıca, yazarın tarihi aynı kalırken, bitiş tarihinin güncellenmesine neden olur.
cjm

@cjm Haklısın! rebase ve cherry-pick bu konuda aynı şekilde davranır. Bu mantıklı, bir rebase çoklu kiraz seçtikleri olarak düşünülebilir.
Schwern

1
Postadan düzeltme ekleri uygulamak için, tarih ve yazarı otomatik olarak posta iletisinden alan git am da vardır .
20'de

6

Bu, Git'in tarihlerle nasıl çalıştığı ve GitHub'ın kapanış anahtar kelimeleriyle nasıl referans aldığı ile ilgili bir karışıma benziyor .

Git, taahhüt ve yazar tarihleri ​​arasında ayrılır. Gelen Pro Git onlar fark içine biraz gitmek :

Yazar, eseri ilk yazan kişidir, oysa ki eser, işi en son yapan kişidir. Bu nedenle, bir projeye bir yama gönderirseniz ve çekirdek üyelerden biri yamayı uygularsa, her ikiniz de kredi alırsınız - siz yazar olarak ve çekirdek üye de alıcı olarak.

Bu nedenle, kodun kendisi "7 gün önce" (yerel olarak) işlenirken / yazılırken, "14 saat öncesine" kadar "uygulanmadı" veya "yamalı" olmadı, çünkü yakında görünene kadar uzaktan görülemedi mesaj.


2
Test etmedim, ancak yazar bilgilerinin Github kapanış anahtar kelimeleri tarafından eklendiğine inanmıyorum. Üretici ve yazar kimlikleri ve tarihleri ​​taahhüt kodunda belirtilir. Github bunlardan herhangi birini değiştirirse, uzak uçtaki taahhüt kimliğini değiştirir. Uzak ve yerel depolar birbirinden uzaklaşacaktır. Yazar zorlamadan zorlayamaz veya çekemez.
Schwern

2
Taahhüt, uzaktan kumandaya itmekle aynı değildir. Git'teki hemen hemen her şeyin, taahhütler dahil, yerel olarak yapılabileceğini unutmayın. İlk önce (her ikisi de zaman damgası verir) ve sonra ileriye itebilirsiniz (bu yalnızca uzaktan kumandayı yükler ancak zaman damgası vermez). Bir teklifin ne zaman basıldığını bilmek önemsiz olduğu için bir 'itme zaman damgası' yoktur - çoğu kez itilip çekilebilir.
ADTC
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.