17 Ağustos 2020 Pazartesi

Git Notlarım

Not :  Konuyla ilgili SVN Notlarım başlıklı yazıya göz atabilirsiniz.

Giriş
Git ile ilgili aldığım notlarım aşağıda. Mercurial'in Git'ten daha kolay olduğu da söyleniyor.

Git history'i ilelebet saklar.

Git Flow
Git Flow yazısına taşıdım

packfile Nedir ?
Değişikliklerin kaydedildiği dosya. Yerden tasarruf sağlar. Açıklaması şöyle
The packfile is a single file containing the contents of all the objects that were removed from your filesystem. The index is a file that contains offsets into that packfile so you can quickly seek to a specific object. What is cool is that although the objects on disk before you ran the gc were collectively about 22K in size, the new packfile is only 7K. You’ve cut your disk usage by ⅔ by packing your objects.
Git Tarihçesi
Git'ten önce BitKeeper vardı. Ancak BitKeeper'ın geliştiricisi bedava kullanımı kaldırınca yeni bir versiyon kontrol sistemine ihtiyaç doğdu ve Git ortaya çıktı

Git Staging Area Nedir
Açıklaması şöyle
When you save your changes with git add, GIT will start tracking and saving your changes with files. These changes are stored in the .git directory. Then, files are moved from Working Directory to Staging Area. Still, if you make changes to these files, GIT will not know about them, you need to tell GIT to notice those changes.
Şeklen şöyle

Git Komutu Seçenekleri
Git komutları globla komutlar ve action + action seçenekleri şeklide düşünülebilir. Şeklen şöyledir
command [global options] action [action-specific options]
add seçeneği
add seçeneği yazısına taşıdım.

branch seçeneği
branch seçeneği yazısına taşıdım

config seçeneği
config seçeneği yazısına taşıdım

core.pager Alanı
Örnek
Şöyle yaparız.
git config --global core.pager 'less -FRSX'
--global seçeneği
Açıklaması şöyle
omit the --global if you want it to only apply to the current repository.

bundle seçeneği
git bundle seçeneği yazısına taşıdım.

checkout seçeneği
checout seçeneği yazısına taşıdım.

cherry-pick seçeneği
cherry-pick seçeneği yazısına taşıdım.

clean seçeneği
Açıklaması şöyle
Delete untracked files, including ignored ones.
Şöyle yaparız.
git clean -fdx
clone seçeneği
clone seçeneği yazısına taşıdım

commit seçeneği
commit seçeneği yazısına taşıdım.

config seçeneği
config seçeneği yazısına taşıdım.

count-objects seçeneği
Şöyle yaparız.
$ git count-objects -v
count: 49
size: 568
in-pack: 307916
packs: 40
size-pack: 176024
prune-packable: 0
garbage: 0
size-garbage: 0
diff seçeneği
branch ve master arasındaki farkı görmek için şöyle yaparız.
git diff featureXYZ_branch master
Şöyle yaparız.
git diff remotes/origin/featureXYZ_branch remotes/origin/master
diff-tree seçeneği
diff-tree seçeneği yazısına taşıdım

fetch seçeneği
fetch seçeneği yazısına taşıdım

filter-branch seçeneği
Açıklaması şöyle. Daha önceki commit'lerin değiştirilebilmesini sağlar.
You can use --tree-filter and --index-filter with git filter-branch.--index-filter is faster and will update your index file
Örnek
Şöyle yaparız.
# loop on your commits and update the desired file
git filter-branch --index-filter 'mv "new-file" "old_file"' HEAD
Örnek
Şöyle yaparız.
git filter-branch --tree-filter "CodeFormatter.exe"
fsck seçeneği
"file system check" anlamına gelir. Açıklaması şöyle
Git's hashing only happens at the time commits are created, and from there on the hashes are used to identify the commits. This in no way ensures the integrity of the files. Git repos can get corrupted and lose data. In fact, git has a built-in command to detect this kind of loss, git fsck, but as the documentation says, you are responsible for restoring any corrupted data from backups.
init seçeneği
init seçeneği yazısına taşıdım.

ls-files seçeneği
Şöyle yaparız.
$ mkdir foo
$ git init
$ git add .
$ git ls-files   # which files does Git know about?
                 # apparently, none
$ touch foo/bar  # create a file in the directory
$ git add .
$ git ls-files   # does Git know about it now?
foo/bar          # yep!
log seçeneği
log seçeneği yazısına  taşıdım.

merge seçeneği
merge seçeneği yazısına taşıdım.

mv seçeneği
Yerel dizindeki dosya ismini değiştirir.

Örnek
Remote repository indirilir.
git clone https://github.com/benqzq/ulcwe.git
Dizine gidilir.
cd ulcwe
Dizinin ismi değiştirilir.
git mv local xyz
Commit edilir.
git commit -m "Rename local to xyz"
Remote repository'e aktarılır.
git push
pull seçeneği
pull seçeneği yazısına taşıdım.

push seçeneği
push seçeneği yazısına taşıdım

rebase seçeneği
rebase seçeneği yazısına taşıdım.

remote seçeneği
remote seçeneği yazısına taşıdım.

Örnek
Şöyle yaparız.
cd /path/to/your/local/repo
git remote set-url origin https://<newGitHubAccount>@github.com/newGitHubAccount/test.git
Örnek
Şöyle yaparız.
$ git remote -v
rm  seçeneği
Örnek
Açıklaması şöyle.
Delete tracked files (don’t forget the git in front of this, rm -rf . is quite different)
Şöyle yaparız.
git rm -rf .
Örnek - untrack file without deleting it
Şöyle yaparız
$ git rm --cached <file>
reset seçeneği
Şu anki branch'in en son haline gelmek için şöyle yaparız.
git reset --hard HEAD
revert seçeneği
revert seçeneği yazısına taşıdım

tag seçeneği
tag seçeneği yazısına taşıdım

stash seçeneği
stash seçeneği yazısına taşıdım

whatchanged seçeneği
Şöyle yaparız.
# git
alias gw='git whatchanged'
alias gg='git grep -n -C8'
alias ggi='git grep -i -n -C8'
alias gb='git branch'
alias gbd='git branch -D'
alias gba='git branch -a'
alias gc='git checkout'
alias gcp='git cherry-pick'
alias gfo='git fetch origin'
alias s='git status'
alias gmom='git merge origin/master'
alias grom='git rebase origin/master'
alias gpom='git pull origin master'
alias pplog='git log --oneline --graph --decorate'
work-tree seçeneği
Açıklaması şöyle.
If you have a non-bare git repository, there are two parts to it: the git directory and the working tree. The working tree has your checked out source code, with any changes you might have made. The git directory is normally called .git, and is in the top level of your working tree - this contains all the history of your project, configuration settings, pointers to branches, the index (staging area) and so on.
Şöyle yaparız.
git --work-tree=/path/to/your/working/tree
--version seçeneği
--version seçeneği yazısına taşıdım

Hook
Post Commit Hook ile commit için gönderilen tüm dosyalar alındıktan sonra bir betik çalıştırılabilir.

--------------------------------------------------------------------------------------------------------------
Word Belgesi Sürümü Numarası

Her ne kadar svn veya git Word Belgesinin tarihçesini tutsa da, belgenin kapak sayfasına sürüm numarası yazmak gerekiyor. Bazı şirketlerde gördüğüm örnekler:

Belge henüz yayınlanmadıysa ve üzerinde çalışılıyorsa sürüm numarasına -(P1) -preliminary anlamına geliyor - yazılır. Belge resmi olarak yayınlandıktan sonra sürüm numarasındaki -(P1) kaldırılır ve sadece "-" yazılır.
Yani :
Version : -(P1) iken
Version : - haline gelir.

Hiç yorum yok:

Yorum Gönder