Belli başlı git komutları

Sıkça kullandığım git komutlarını listelemeye çalıştım.

No Komut Açıklama
1 git checkout dev Lokaldeki dev brach’ine geçmenizi sağlar.
2 git pull Tüm brach güncellemelerini sunucudan indirir.
3 git checkout -b bug/yeni Yeni bir lokal brach oluşturur.
4 git checkout bug/yeni  Lokal bug/yeni branch’ine geçmeyi sağlar.
5 git commit -m “Açıklama” Yapılan değişiklikleri çalışılan lokal brach’e kaydeder.
6 git push Kaydedilen değişiklikleri çalışılan brach ile aynı isimle sunucuya gönderir.
7 git merge dev Çalışılan brach’i lokal dev branch’ine birleştirir.
8 git stash Yapılan değişikliği geçici olarak kaydeder.
9 git stash pop Kaydedilen geçici değişikliği geri getirir.
10 git cherry-pick commitno Commit’i aktif branch’a taşır.
11 git reset --hard HEAD~x hard yapılan değişiklikleri geri alır.
HEAD commit referansı vermek için kullanılır, kullanılmazsa sadece commit edilmemiş değişiklikleri dikkate alır.
x commit öncesine döner. ~x yerine ^ kullanılırsa son commit’i ifade eder.
12 git push -f <remote> <branch> brach geçmişini temizleyerek gönderir.
13 git stash clear Geçici dosyaları temizler.
14 git reset HEAD^ Son commit’i geri alır, değişiklikler korunur.
15 git clean -fd Takip edilmeyen dosya ve klasörleri siler

Komutların kullanımı için örnek senaryolar:

Yeni geliştirme yapılması:
1 -> 2 -> 3 -> 5 -> 6 -> 1 -> 2 -> 4 -> 7 -> 6

Henüz sunucuya gönderilmemiş (6) değişiklikleri farklı bri brach’e taşımak:
4 -> 10

Sunucuya gönderilmiş commitleri silmek:
11 -> 12

Sunucuya gönderilmiş commit’i silerek yeni bir commit ile göndermek için:
14 -> 12

Henüz commitlenmemiş değişikleri geri alarak takip edilmeyen dosya ve klasörleri silmek için:
11 -> 15

Sunucuya gönderdilmiş commit içindeki bir dosyaya ait değişliğin kaldırılması:
git show commitno -- some_file.c | git apply -R

Aynı kodların başka bir git sunucusuna aynalanması / kopyalanması:
git push --mirror https://github.com/mkysoft/myproject.git

Detaylar: http://ohshitgit.com/

Git konusunda değerli bir kaynak: https://www.slideshare.net/lemiorhan/git-antipatterns-extended-version-with-28-common-antipatterns-scturkey-meetup

UBL-TR şema kontrol

UBL-TR belgelerinden e-Fatura, e-Arşiv, e-İrsaliye, Ticari Cevap, e-İrsaliye Cevap için şema (schema) kontrolü yapabilen, php ‘de basit bir sayfa yaptım, umarım birilerinin işine yarar.

http://mkysoft.com/ubltr/

C# ‘da X509 sertifikasını PkiPath formatında kaydetmek

Her zaman olduğu gibi C# bu formatı desteklemiyor. Normalde X509Certificate2 nesnesnin Export() metodu mevcut ancak PkiPath formatını destelemiyor. Bu işlemi yapabilmek için ücretis Bouncy Castle kütüphanesi kullanabilirsiniz. Kütüphane içinde yer alan Org.BouncyCastle.Pkix.PkixCertPath class’ın GetEncoded() metodunu kullanabilirsiniz.

C# Uygulamanın yada DLL’nin dosya sürümünü almak için

System.Reflection.Assembly assembly = System.Reflection.Assembly.GetEntryAssembly(); //DLL'i çağıran ana uygulama
if (assembly == null)
assembly = System.Reflection.Assembly.GetExecutingAssembly(); //Kodu çalıştıran uygulama
string version = System.Diagnostics.FileVersionInfo.GetVersionInfo(assembly.Location).FileVersion; //versiyon

Terminal ekranında daha büyük yazılar görmek için

Terminal ekranı True Type tipinde fontlarla çalışmaktadır. Eğer hazır bir true type font bulabilirseniz aşağıdaki adımları takip ederek bunu kullanılabilir hale getirebilirsiniz. Hazır bir true type fontu buradan  indirebilirsiniz.
  1. Kayıt Defteri düzenyecisini açınız (regedit.exe)
  2. Aşağıdaki alana gidiniz:
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont
  3. Sağdaki alanda sağ tıklayarak veri ekleyiniz.
  4. Metin türünde bir değer ekleyiniz ve isim olarak da sıfırlardan oluşan bir isim veriniz. Verdiğin isim içerdiği sıfır sayısı bakımından en büyük olan olmalıdır ve sıfır sayıları birbirini takip etmelidir. Örneğin 0 ve 00 varsa 000 olarak ekleyiniz.
  5. TerminalVector değerini eklediğiniz yeni anahtara giriniz.

Uygulama yönergesi aynağı: http://www.yohng.com/software/terminalvector.html

Bu adımlardan sonra temin ettiğiniz fontu Denetim Masası’ndaki Fontlar bölümüne yükleyiniz. Terminal ekranını açtığınızda sol üst köşesine tıklayarak Özellikler seçeneğine giriniz.

Yazı tipi sekmesinde yukarıdaki adımları uygulayarak girmiş olduğunuz TerminalVector değierini yazı tipi başlığı altında göreceksiniz.

Buradan TerminalVector yazı tipini seçerek Boyutunu istediğiniz gibi değiştirebilirsiniz.

Komut Satırı Özellikleri

MS SQL’de yine ciddi bir bug

UPDLOCK ve READPAST anahtarlarını birlikte kullanarak transaction içinde seçmiş olduğunuz kayıtların diğer transactionlar tarafından görülmemesini istiyorsanız sorgunuzda mutlaka ORDER BY deyimi bulunmalıdır. ORDER BY yoksa çalışmıyor.

MSSQL’de ciddi bir bug

MSSQL’de tabloya insert cümlesi ile veri atmaya çalışırken aşağıdaki hatayı aldım. İnternet üzerinden yaptığım aramalarda bu hatanın network sorunu olduğundan bahsedilmiş. Oysaki lokalde çalışan 2008 R2 veri tabanı ile çalışıyordum.

A transport-level error has occurred when receiving results from the server. (provider: Session Provider, error: 19 – Physical connection is not usable)

Aşağıdaki gibi bir insert cümlesi kullanıyordum:

INSERT INTO MyTable (RecordDate) VALUES (@RecordDate)

DateTime nesnesini C# tarafında yaratmıştım ve NULL olduğu için aşağıdaki değeri taşıyordu:

01.01.0001 00:00:00

C# nesnemi nullable yapıp insert komutuna eklerken DBNull.Value yapınca sorun düzeldi.

Ama aklım hala Microsoft gibi bir firmanın DateTime hatası dönmek yerine fiziksel bağlantının koptuğu yönünde bir mesaj veriyor olması.

Düşeyara ‘yı formüllü hücrelerde kullanmak

Excel’de düşeyara fonksiyonunun başvurduğu alan eğer bir formül ise, fonksiyon düzgün çalışmıyor. Başvuru yaptığınız hücreyi parçaal gibi bir fonksiyon içine alırsanız sorun çözülecektir. Örneğin

DÜŞEYARA(A2;C1:D100;2;YANLIŞ) fonksiyonu eğer A2 hücresi formül içeriyorsa çalışmayacaktır. Formülü şu şekilde düzeltin:

DÜŞEYARA(PARÇAAL(A2;1;5);C1:D100;2;YANLIŞ)

Parçal fonksiyonundaki 5, A2 hücresindeki ilk 5 karakteri alır. Siz metnin tamamının alınmasını sağlayabilirsiniz.