3. Versiyon Kontrolü Hakkında
Versiyon kontrolü, herhangi bir proje üzerinde, belirli değişikliklere daha sonra geri
dönüş yapabilmemiz için için bir veya birden çok dosya üzerinde zaman içinde
yapılan değişiklikleri kaydeden bir sistemdir.
Bir VCS, seçilen dosyaları önceki bir versiyonuna geri döndürmenize, zaman içindeki
değişiklikleri karşılaştırmanıza ve daha fazlasını görmenizi sağlar. Bir VCS kullanmak
aynı zamanda belli dosyaları ve üzerindeki çalışmalarınızı kaybederseniz, onları
kolayca kurtarabileceğiniz anlamına da gelir.
4. Git Nedir?
“Git, küçük projelerden büyük projelere kadar her şeyi hızlı ve
verimli bir şekilde ele almak için tasarlanmış ücretsiz ve açık
kaynaklı bir dağıtılmış versiyon kontrol sistemidir.” (git-scm.com)
6. The Three States
Git'in dosyalarınızın bulunabileceği üç ana durumu vardır:
“modified (değiştirilmiş)” , ”staged (hazırlanmış)” ve “committed
(teslim edilmiş)”:
• “Modified”, bir dosya üzerinde değişiklik yaptığımızı fakat bu
değişikliği henüz veri tabanına kaydetmediğimiz anlamına gelir.
• “Staged”, üzerinde değişiklik yaptığımız bir dosyayı veritabanı
üzerine kaydetmek için işaretlediğimiz, hazırladığımız anlamına
gelir.
• “Committed”, dosyanın yeni versiyona işlendiği ve güvenli bir
şekilde veri tabanında tutulduğu anlamına gelir.
8. Repository
Bir projenin sanal deposudur. Kodumuzun gerektiğinde
erişebileceğimiz sürümlerini kaydetmenize olanak tanır.
Repository kavramını genellikle “local repository” ve “remote
repository” olarak iki farklı şekilde göreceğiz. Her iki repository de
aynı projeyi barındırır, aralarındaki fark ise repositorynin
bulunduğu konumdur. Local repository kendi bilgisayarımızda,
remote repository ise bulutta farklı servisler aracılığı ile
projelerimizi saklar.
9. Workspace (Working directory)
Workspace veya working directory, “.git” dizininin yanında,
dosyalarımızı tuttuğumuz alandır. Biz değişiklikleri bu dosyalar
üzerinden yaparız. Yeni versiyonlar, buradaki değişiklikler
üzerinden kaydedilir.
12. Staging Area
Staging area, “.git” dizininde bulunan ve bir sonraki
versiyonumuza hangi dosyaları ve değişikllikleri dahil edeceğimiz
bilgilerini depolayan bir dosyadır. Git dilindeki teknik adı
“index”tir, ancak “staging area (hazırlama alanı)” ifadesi ile aynı
yapıyı temsil eder.
15. Branch
Branch, bağımsız bir geliştirme alanını temsil eder. Branch’leri yeni
bir workspace, staging area ve repository talep etmenin bir yolu
olarak düşünebilirsiniz. Yeni “commit”ler mevcut “commit” üzerine
kaydedilir.
17. $ git init
Yeni Bir Local Repository Oluşturma
Yeni bir projeye başlıyorsak veya var olan bir projemizi artık Git ile
yönetmek istiyorsak, “git init” komutu ile yeni bir Git repositorysi
oluştururuz. Bu komut ile “.git” dizini (repository) oluşur ve “main” veya
“master” isminde yeni bir branch oluşur.
18.
19. $ git clone <url>
Buluttaki Bir Repository’i Kopyalamak
Eğer bulutta bulunan bir Git projesini bilgisayarımıza indirip üzerinde
çalışmak istiyorsak “git clone” komutunu kullanabiliriz.
20.
21. $ git branch
Local Repository’deki Branch’leri Listelemek
“git branch” komutu ile local repository’de bulunan branchleri
listeleyebiliriz.
34. $ git fetch
Remote Repository’den Güncel Bilgileri Almak
“git fetch” komutu, commitleri ve dosyaları Remote Repository’den
Local Repository’e indirir. Fetch, başkalarının ne üzerinde çalıştığını
görmek istediğimizde kullandığımız bir işlemdir. Bu işlem bize yapılan
değişiklikleri gösterir fakat bu değişiklikleri Local Repository’miz ile
birleştirmeyi zorlamaz. Başka bir deyişle, yerel çalışmalarınız üzerinde
kesinlikle hiçbir etkisi yoktur. Getirilen içeriğin “git checkout” komutu
kullanılarak açıkça teslim alınması gerekir. Bu, Local Repository’mize
entegre etmeden önce commit’leri gözden geçirmemizi sağlar.
35.
36. $ git push
Local Repo’nun İçeriğini Remote Repo’ya
Göndermek
“git push” komutu, Local Repository’deki içeriği yani commitleri Remote
Repository’e yüklemek için kullanılır.
37.
38.
39.
40. $ git pull
Remote Repo’daki İçeriği Local Repo’ya İndirmek
“git pull” komutu, Repomte Repository’den içerikleri almak, indirmek
ve yerel depoyu bu içerikle eşleşecek şekilde hemen güncellemek için
kullanılır. “git pull” komutu aslında “git fetch” komutunun ardından “git
merge” komutu ile aynı işlevi gerçekleştirir
43. $ git merge <isim>
Remote Repo’daki İçeriği Local Repo’ya İndirmek
Merge işlemi, Git'in projenin ayrılan dallarını tekrar bir araya getirme
yöntemidir. “git merge” komutu, “git branch” ile oluşturulan bağımsız
dalları alıp tek bir branch’e entegre etmemize olanak tanır.
46. .gitignore Dosyası
Belli Dosyaları Göz Ardı Etmek
Hiç bir zaman index’e eklenmesini istemediğimiz dosyaları “.gitignore”
dosyasında belirterek takipten çıkarabilirz. Örneğin IDE’nin oluşturduğu
ama projenin bir parçası olmayan “.idea” klasörünü Git’in takip
etmemesini istiyorsak, “.gitignore” dosyası oluşturup “.idea” klasörünü
buraya eklemeliyiz.
51. Repository Hosting Services
Repository hosting servisleri, bir sürüm kontrol sistemini saran ve
geliştiren üçüncü taraf web uygulamalarıdır. Bir versiyon kontrol
sistemi kullanmadan bir bu servislerden tam olarak yararlanamazsınız.
57. Git is a popular version control system that helps developers, writers, or
anyone that requires keeping versions of their files to manage them and
track changes. It is mostly used on the terminal by many programmers or
command prompt.
Git GUI focuses on allowing users to make changes to their repository
by making new commits, amending existing ones, creating branches,
performing local merges, and fetching/pushing to remote repositories.
GIT GUI
58. Git GUI is known to work on all popular UNIX systems, Mac OS X, and
Windows (under both Cygwin and MSYS). To the extent possible OS specific
user interface guidelines are followed, making git gui a fairly native
interface for users.
GIT GUI
Selamlar, hoş geldiniz
Bugün Google DSC TED Üniversitesi olarak sizlere Versiyon control sistemlerini ve git yazılımını tanıtacağız.
“Versiyon kontrolü” nedir ve neden önemsemeliyiz? Versiyon kontrolü, herhangi bir proje üzerinde, belirli değişikliklere daha sonra geri dönüş yapabilmemiz için için bir veya birden çok dosya üzerinde zaman içinde yapılan değişiklikleri kaydeden bir sistemdir.
Örneğin bir grafik veya web tasarımcısıysanız ve bir görüntünün veya tasarımın farklı versiyonunlarını saklamak isterseniz, bir VCS kullanmak işinizi oldukça kolaylaştıracaktır. Bir VCS, seçilen dosyaları önceki bir versiyonuna geri döndürmenize, tüm projeyi önceki bir versiyona döndürmenize, zaman içindeki değişiklikleri karşılaştırmanıza ve daha fazlasını görmenizi sağlar. Bir VCS kullanmak aynı zamanda belli dosyaları ve üzerindeki çalışmalarınızı kaybederseniz, onları kolayca kurtarabileceğiniz anlamına da gelir.