Posta listesi + git format-patch
+ git apply
yazar oluşturabilir! = Committer
Yamaların olduğu Linux çekirdeği gibi projelerde:
farklı yazar ve komisyoncularla tek bir yeni taahhüt oluşturmak:
- yazar yamayı yazan
- komisyoncu, proje sorumlusu kimdir ve yamayı birleştiren kişidir
Örneğin bu rastgele seçilen yamaya ve ilgili işleme bakınız:
GitHub ve GitLab gibi Git web arayüzleri yazar üretebilir veya üretmeyebilir! = Committer
Git (Hub | Lab) hem yukarı akış hem de çatal depolarını aynı makinede tuttuğundan, aşağıdakilerden biri de dahil olmak üzere yerel olarak da yapabileceğiniz her şeyi otomatik olarak yapabilirler:
Bir birleştirme taahhüdü oluşturun.
Yazar oluşturmaz! = Committer.
SHA'yı veya yeni taahhüdü sağlam tutar ve yeni bir taahhüt oluşturur:
* Merge commit (committer == author == project maintainer)
|\
| * Feature commit (committer == author == contributor)
|/
* Old master (random committer and author)
Tarihsel olarak, bu GitHub'daki ilk kullanılabilir yöntemdi.
Yerel olarak, bu ile yapılır git merge --no-ff
.
Bu, çekme isteği başına iki işlem üretir ve git geçmişinde bir çatal tutar.
üstüne inmek master
GitHub ayrıca, birleştirme düğmesine kim basmışsa committer == ayarlamak için taahhütleri hackler. Bu zorunlu değildir ve varsayılan olarak yerel olarak yapılmaz git rebase
, ancak proje yöneticisine hesap verebilirlik sağlar.
Git ağacı şimdi şöyle görünüyor:
* Feature commit (committer == maintainer, author == contributor)
|
* Old master (random committer and author)
bu git apply
e-posta yamaları gibidir.
Şu anda GitHub'da:
- birleştirme düğmesindeki açılır menüden birleştirme yöntemini seçersiniz
- yöntemler repo ayarlarında sahibi tarafından etkinleştirilebilir veya devre dışı bırakılabilir
https://help.github.com/articles/about-merge-methods-on-github/
Yeni bir taahhütte bulunmak nasıl yapılır?
Bulabildiğim en iyi, değişkeni geçersiz kılmak için ortam değişkenlerini kullanmaktı:
GIT_COMMITTER_NAME='a' GIT_COMMITTER_EMAIL='a' git commit --author 'a <a>'
Belirli bir taahhüdün teslim ve taahhüt tarihini nasıl alabilirim?
Varsayılan olarak yalnızca yazar verileri gösterilir git log
.
Başlangıç tarihini görmek için aşağıdakilerden birini yapabilirsiniz:
günlüğü özellikle bunun için biçimlendirin:
git log --pretty='%cn %cd' -n1 HEAD
nerede cn
ve nerede cd
durun Committer Name
veCommitter Date
fuller
önceden tanımlanmış formatı kullanın :
git log --format=fuller
Ayrıca bkz: 'git günlüğünü' 'bitiş tarihi' gösterecek şekilde yapılandırma
düşük seviyeye gidin ve tüm taahhüt verilerini gösterin:
git cat-file -p HEAD
Yeni bir taahhüdün başlama tarihi nasıl belirlenir?
git commit --date
sadece yazar tarihini ayarlar: değiştirici tarih için bulabildiğim en iyi ortam değişkeni idi:
GIT_COMMITTER_DATE='2000-01-01T00:00:00+0000' git commit --date='2000-01-01T00:00:00+0000'
Ayrıca bakınız: Git'teki yazar ve committer arasındaki fark nedir?
Git, yazarı ve taşıt olanı dahili olarak nasıl depolar?
Bkz: git kesinleştirme nesnesinin dosya biçimi nedir?
Temel olarak, kesinleştirme bir metin dosyasıdır ve iki satırla ayrılmış alan içerir:
author {author_name} <{author_email}> {author_date_seconds} {author_date_timezone}
committer {committer_name} <{committer_email}> {committer_date_seconds} {committer_date_timezone}
Bu, her ikisinin tamamlama nesnesinde tamamen bağımsız iki veri girişi olduğunu açıkça ortaya koymaktadır.