Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Set Format (note, tip, etc) #47

Closed
wants to merge 228 commits into from
Closed
Changes from 1 commit
Commits
Show all changes
228 commits
Select commit Hold shift + click to select a range
9deb675
Update nutshell.asc
murat-yasar Jan 23, 2024
37c3b86
Update nutshell.asc
murat-yasar Jan 24, 2024
148f31d
Update nutshell.asc
murat-yasar Jan 25, 2024
1cffc8f
Update basic-branching-and-merging.asc
murat-yasar Jan 25, 2024
b9921cb
Update getting-a-repository.asc
murat-yasar Jan 25, 2024
31a3668
Update recording-changes.asc
murat-yasar Jan 25, 2024
365f3b8
Update viewing-history.asc
murat-yasar Jan 25, 2024
be5dac9
Update undoing.asc
murat-yasar Jan 25, 2024
13cdfa7
Update remotes.asc
murat-yasar Jan 25, 2024
07c933b
Update tagging.asc
murat-yasar Jan 25, 2024
e5763bb
Update aliases.asc
murat-yasar Jan 25, 2024
4179576
Create summary.asc
murat-yasar Jan 25, 2024
e42fd9c
Update branch-management.asc
murat-yasar Jan 27, 2024
21d090f
Update remote-branches.asc
murat-yasar Jan 27, 2024
3204076
Update remote-branches.asc
murat-yasar Jan 29, 2024
f23898a
Update workflows.asc
murat-yasar Feb 1, 2024
b2d573b
Update workflows.asc
murat-yasar Feb 2, 2024
b5c3191
Update rebasing.asc
murat-yasar Feb 2, 2024
8a04e58
Update rebasing.asc
murat-yasar Feb 2, 2024
7b42304
Create summary.asc
murat-yasar Feb 2, 2024
c56cc99
Update basic-branching-and-merging.asc
murat-yasar Feb 2, 2024
c0fa358
Update remote-branches.asc
murat-yasar Feb 2, 2024
dda52fb
Create 04-server
murat-yasar Feb 2, 2024
7508561
Delete book/04-git-server/sections/04-server
murat-yasar Feb 2, 2024
adbcffc
Update protocols.asc
murat-yasar Feb 2, 2024
dab6a05
Update protocols.asc
murat-yasar Feb 4, 2024
f1da534
Update git-on-a-server.asc
murat-yasar Feb 4, 2024
2860f36
Update git-on-a-server.asc
murat-yasar Feb 4, 2024
48449f0
Update protocols.asc
murat-yasar Feb 4, 2024
b90a260
Update generating-ssh-key.asc
murat-yasar Feb 4, 2024
7a51cf3
Update aliases.asc
murat-yasar Feb 4, 2024
a59e503
Update getting-a-repository.asc
murat-yasar Feb 4, 2024
a424912
Update recording-changes.asc
murat-yasar Feb 4, 2024
98e9e23
Update remotes.asc
murat-yasar Feb 5, 2024
0b8fa2b
Update tagging.asc
murat-yasar Feb 5, 2024
f268a2d
Update undoing.asc
murat-yasar Feb 5, 2024
4cbd030
Update viewing-history.asc
murat-yasar Feb 5, 2024
cd44312
Update setting-up-server.asc
murat-yasar Feb 5, 2024
6fd4d4c
Update setting-up-server.asc
murat-yasar Feb 5, 2024
0503ccc
Update git-daemon.asc
murat-yasar Feb 5, 2024
5b9a938
Update smart-http.asc
murat-yasar Feb 5, 2024
28a4f74
Update smart-http.asc
murat-yasar Feb 5, 2024
01dbfd8
Update gitweb.asc
murat-yasar Feb 5, 2024
da6a3be
Update gitweb.asc
murat-yasar Feb 5, 2024
2503891
Update gitlab.asc
murat-yasar Feb 6, 2024
f79d752
Update hosted.asc
murat-yasar Feb 6, 2024
d0fd682
Create summary.asc
murat-yasar Feb 6, 2024
53c9bb6
Update distributed-workflows.asc
murat-yasar Feb 7, 2024
976f65b
Update contributing.asc
murat-yasar Feb 8, 2024
a4c4f23
Update generating-ssh-key.asc
murat-yasar Feb 8, 2024
922b026
Update gitlab.asc
murat-yasar Feb 8, 2024
60ce25b
Merge pull request #8 from murat-yasar/04.07
murat-yasar Feb 8, 2024
ddbde3e
Update generating-ssh-key.asc
murat-yasar Feb 8, 2024
baccdbe
Merge pull request #7 from murat-yasar/04.06
murat-yasar Feb 8, 2024
a7dd258
Merge pull request #5 from murat-yasar/04.04
murat-yasar Feb 8, 2024
7ed6186
Merge pull request #3 from murat-yasar/04.02
murat-yasar Feb 8, 2024
624e316
Update contributing.asc
murat-yasar Feb 9, 2024
555a6e4
Update contributing.asc
murat-yasar Feb 9, 2024
e05c2be
Update contributing.asc
murat-yasar Feb 9, 2024
5520698
Update contributing.asc
murat-yasar Feb 10, 2024
915c0c8
Update contributing.asc
murat-yasar Feb 10, 2024
7619e4f
Update contributing.asc
murat-yasar Feb 10, 2024
3edb00b
Update recording-changes.asc
murat-yasar Feb 10, 2024
1c04795
Update recording-changes.asc
murat-yasar Feb 10, 2024
c0ee743
Update recording-changes.asc
murat-yasar Feb 10, 2024
ca1d435
Update viewing-history.asc
murat-yasar Feb 10, 2024
fcc7b33
Update branch-management.asc
murat-yasar Feb 10, 2024
dbb3bae
Update nutshell.asc
murat-yasar Feb 10, 2024
11a7c65
Update nutshell.asc
murat-yasar Feb 10, 2024
d9b6033
Update rebasing.asc
murat-yasar Feb 10, 2024
3df99fd
Update remote-branches.asc
murat-yasar Feb 10, 2024
5020dc7
Update generating-ssh-key.asc
murat-yasar Feb 10, 2024
7be0770
Update git-daemon.asc
murat-yasar Feb 10, 2024
4d7626c
Update gitweb.asc
murat-yasar Feb 10, 2024
9e5b26b
Update setting-up-server.asc
murat-yasar Feb 10, 2024
80966a1
Update smart-http.asc
murat-yasar Feb 10, 2024
8f1c152
Update maintaining.asc
murat-yasar Feb 12, 2024
e366f0d
Update maintaining.asc
murat-yasar Feb 12, 2024
69f1d80
Update maintaining.asc
murat-yasar Feb 12, 2024
1ba46cc
Update maintaining.asc
murat-yasar Feb 12, 2024
c6fc671
Update maintaining.asc
murat-yasar Feb 13, 2024
3a42d11
Update maintaining.asc
murat-yasar Feb 13, 2024
a324b3d
Update maintaining.asc
murat-yasar Feb 14, 2024
c6b378e
Update 1-setting-up-account.asc
murat-yasar Feb 14, 2024
d259c4c
Update 1-setting-up-account.asc
murat-yasar Feb 14, 2024
a946c6e
Update 2-contributing.asc
murat-yasar Feb 14, 2024
de379af
Update 2-contributing.asc
murat-yasar Feb 15, 2024
257d67c
Update 2-contributing.asc
murat-yasar Feb 15, 2024
7cff790
Update 2-contributing.asc
murat-yasar Feb 19, 2024
22836d1
Update 3-contributing.asc
murat-yasar Feb 19, 2024
4fd8fb6
Update-contributing.asc
murat-yasar Feb 21, 2024
2f8d552
translate line:76
murat-yasar Feb 22, 2024
93a9f9e
translate up to line:120
murat-yasar Feb 22, 2024
86257ea
translate up to line:223
murat-yasar Feb 23, 2024
6dff27d
correct typos
murat-yasar Feb 23, 2024
a7a6a2e
Update translation
murat-yasar Feb 23, 2024
f91d150
translate up to line: 271
murat-yasar Feb 26, 2024
2ebe970
Translate up to line: 370
murat-yasar Feb 26, 2024
ece364c
Translate complete maintaining.asc
murat-yasar Feb 26, 2024
1c4ed66
correct typo
murat-yasar Feb 26, 2024
8ca67ca
Translate complete managing-organization.asc
murat-yasar Feb 26, 2024
a4f7cad
translate up to line: 37 - scripting.asc
murat-yasar Feb 27, 2024
0686747
Translate up to line: 170 - scripting.asc
murat-yasar Feb 28, 2024
7782f8f
Translate complete - scripting.asc
murat-yasar Feb 28, 2024
bfa08ae
Merge pull request #10 from murat-yasar/02-basics
murat-yasar Mar 4, 2024
0780a12
Merge pull request #11 from murat-yasar/03-branching
murat-yasar Mar 4, 2024
5c8b9ee
Merge pull request #12 from murat-yasar/04-server
murat-yasar Mar 4, 2024
a5bb1fc
Merge pull request #13 from murat-yasar/05-distributed
murat-yasar Mar 4, 2024
a3fdce5
Merge pull request #14 from murat-yasar/06-git
murat-yasar Mar 4, 2024
e696f11
Update about-version-control.asc
murat-yasar Mar 4, 2024
de7666c
Update command-line.asc
murat-yasar Mar 4, 2024
1abfe9e
Update about-version-control.asc
murat-yasar Mar 4, 2024
e918046
Update first-time-setup.asc
murat-yasar Mar 4, 2024
f1e95a2
Update about-version-control.asc
murat-yasar Mar 4, 2024
2b567bf
Update help.asc
murat-yasar Mar 4, 2024
1c0fc6c
Update history.asc
murat-yasar Mar 4, 2024
3d7812d
Update installing.asc
murat-yasar Mar 4, 2024
ca61577
Update what-is-git.asc
murat-yasar Mar 4, 2024
cf904f7
Update history.asc
murat-yasar Mar 4, 2024
5a7f7af
Update aliases.asc
murat-yasar Mar 4, 2024
9342261
Update getting-a-repository.asc
murat-yasar Mar 4, 2024
2b15ba9
Update recording-changes.asc
murat-yasar Mar 4, 2024
05cf29d
Update remotes.asc
murat-yasar Mar 4, 2024
62c742f
Delete book/02-git-basics/sections/summary.asc
murat-yasar Mar 4, 2024
47dfbc9
Update tagging.asc
murat-yasar Mar 5, 2024
92581d8
Update undoing.asc
murat-yasar Mar 5, 2024
cf8a66b
Update viewing-history.asc
murat-yasar Mar 5, 2024
45f469e
Update basic-branching-and-merging.asc
murat-yasar Mar 5, 2024
7dc4c9f
Update nutshell.asc
murat-yasar Mar 5, 2024
7c2840a
Update rebasing.asc
murat-yasar Mar 5, 2024
51b44dd
Update remote-branches.asc
murat-yasar Mar 6, 2024
9a78313
Update summary.asc
murat-yasar Mar 6, 2024
269b20a
Delete book/03-git-branching/sections/summary.asc
murat-yasar Mar 6, 2024
31905ab
Update workflows.asc
murat-yasar Mar 6, 2024
8dd1924
Update git-on-a-server.asc
murat-yasar Mar 6, 2024
9b2d811
Update gitlab.asc
murat-yasar Mar 6, 2024
a5faea2
Update hosted.asc
murat-yasar Mar 6, 2024
1cd1195
Update protocols.asc
murat-yasar Mar 6, 2024
670ca58
Delete book/04-git-server/sections/summary.asc
murat-yasar Mar 6, 2024
505506d
Update contributing.asc
murat-yasar Mar 6, 2024
4645ab4
Update distributed-workflows.asc
murat-yasar Mar 6, 2024
0b87f76
Update maintaining.asc
murat-yasar Mar 6, 2024
c354920
Update 3-maintaining.asc
murat-yasar Mar 7, 2024
b4d55f4
Translate revision-selection.asc up to line: 88
murat-yasar Mar 7, 2024
e3e5271
Translate revision-selection up to line: 182
murat-yasar Mar 11, 2024
a86edd5
Translate revision-selection.asc complete
murat-yasar Mar 11, 2024
a818ab1
Translate interactive-staging complete
murat-yasar Mar 11, 2024
316be1b
Merge pull request #15 from murat-yasar/07-Tools
murat-yasar Mar 11, 2024
e2259a9
Translate stashing-cleaning up to line: 20
murat-yasar Mar 11, 2024
3cf5883
fix typo
murat-yasar Mar 12, 2024
6bf7166
Merge pull request #16 from murat-yasar/01-start
murat-yasar Mar 12, 2024
4148349
Translate interactive-staging.asc
murat-yasar Mar 13, 2024
29ae99d
Translate stashing-cleaning.asc up to line:228
murat-yasar Mar 13, 2024
ae01da0
Translate complete: stashing-cleaning.asc
murat-yasar Mar 14, 2024
e31af99
Translate signing.asc
murat-yasar Mar 15, 2024
570ff5b
Translate complete: searching.asc
murat-yasar Mar 15, 2024
46e1fe4
Fix typos: revision-selection.asc
murat-yasar Mar 15, 2024
b2b8681
Fix typos: revision-selection.asc
murat-yasar Mar 15, 2024
5ee79bb
Fix typo #stashing-cleaning.asc
murat-yasar Mar 15, 2024
01baa03
Translate rewriting-history.asc up to line:71
murat-yasar Mar 15, 2024
4969387
Translate rewriting-history.asc up to line: 305
murat-yasar Mar 18, 2024
b77f82e
Translate complete: rewriting-history.asc
murat-yasar Mar 19, 2024
af63ee6
Translate reset.asc up to line: 105
murat-yasar Mar 20, 2024
0074b57
Translate reset.asc line:200
murat-yasar Mar 20, 2024
e3d0f03
Translate complete - reset.asc
murat-yasar Mar 21, 2024
4965ee7
Update reset.asc
murat-yasar Mar 21, 2024
9322401
Update signing.asc
murat-yasar Mar 21, 2024
ff549c9
Translate advanced-merging.asc up to line: 158
murat-yasar Mar 22, 2024
1080195
Translate advanced-merging.asc up to line: 465
murat-yasar Mar 22, 2024
e4bb85b
Update advanced-merging.asc
murat-yasar Mar 22, 2024
c927cc3
Translate complete: advanced-merging.asc
murat-yasar Mar 22, 2024
53be533
Merge pull request #17 from murat-yasar/07-Tools
murat-yasar Mar 22, 2024
06772d0
Translate complete: rerere.asc
murat-yasar Mar 25, 2024
79aa93b
Update debugging.asc
murat-yasar Mar 27, 2024
7a4f46c
Update debugging.asc
murat-yasar Mar 27, 2024
4c47309
Complete Translate debugging.asc
murat-yasar Mar 28, 2024
3fe1e6e
Merge pull request #18 from murat-yasar/07-Tools
murat-yasar Mar 28, 2024
273d64f
Translate submodules.asc line:20
murat-yasar Apr 2, 2024
75b5785
Translate submodules.asc line: 136
murat-yasar Apr 2, 2024
49547b7
Translate submodules.asc line:206
murat-yasar Apr 2, 2024
a4368be
Translate submodules.asc line:373
murat-yasar Apr 2, 2024
3441a6b
Translate submodules.asc line:482
murat-yasar Apr 3, 2024
ad573fb
Translate submodules.asc line:554
murat-yasar Apr 3, 2024
d2a27be
Translate submodules.asc line:682
murat-yasar Apr 3, 2024
b5ded1c
Complete submodules.asc
murat-yasar Apr 3, 2024
01c908c
Translate bundling.asc line:111
murat-yasar Apr 3, 2024
fd711c6
Complete Translate: bundling.asc
murat-yasar Apr 3, 2024
2bf22a3
Update first-time-setup.asc
murat-yasar Apr 7, 2024
09482c8
Update installing.asc
murat-yasar Apr 7, 2024
08c53a7
Update recording-changes.asc
murat-yasar Apr 7, 2024
61ea612
Update remotes.asc
murat-yasar Apr 7, 2024
0cd4194
Update tagging.asc
murat-yasar Apr 7, 2024
f072c3d
Update undoing.asc
murat-yasar Apr 7, 2024
114334d
Update viewing-history.asc
murat-yasar Apr 7, 2024
8058229
Update basic-branching-and-merging.asc
murat-yasar Apr 7, 2024
0762701
Update branch-management.asc
murat-yasar Apr 7, 2024
c57619f
Update nutshell.asc
murat-yasar Apr 7, 2024
c4b7da8
Update remote-branches.asc
murat-yasar Apr 7, 2024
476c0e7
Reset some markers: note, tip, important, warning, etc
Apr 7, 2024
53b9132
Merge remote-tracking branch 'origin/07-Tools'
Apr 7, 2024
a0a8d12
Reset file format
Apr 7, 2024
21f9d62
Solve merge conflict
Apr 7, 2024
b7f78b9
Translate replace.asc line:80
Apr 7, 2024
f3e2704
Translate complete: replace.asc
Apr 8, 2024
c1a3d96
Translate complete subtree-merges.asc
Apr 8, 2024
27a1e57
Translate complete: credentials.asc
murat-yasar Apr 8, 2024
a75da8b
Merge branch 'master' into master
murat-yasar Apr 8, 2024
af61a4f
Update recording-changes.asc
murat-yasar Apr 8, 2024
0732b18
Update undoing.asc
murat-yasar Apr 8, 2024
4b84964
Update viewing-history.asc
murat-yasar Apr 8, 2024
236ae6d
Update basic-branching-and-merging.asc
murat-yasar Apr 8, 2024
53ed654
Update nutshell.asc
murat-yasar Apr 8, 2024
49e52fd
Update setting-up-server.asc
murat-yasar Apr 8, 2024
0f91b13
Update setting-up-server.asc
murat-yasar Apr 8, 2024
9cc3186
Update contributing.asc
murat-yasar Apr 8, 2024
2ffebf7
Update 1-setting-up-account.asc
murat-yasar Apr 8, 2024
6006c5e
Update 2-contributing.asc
murat-yasar Apr 8, 2024
95ed45d
Update 3-maintaining.asc
murat-yasar Apr 8, 2024
e30a4c7
Update submodules.asc
murat-yasar Apr 8, 2024
0a0a8d8
Change format
Apr 8, 2024
0dbf080
Fix typo
Apr 8, 2024
0da9770
Update branch-management.asc
murat-yasar Apr 8, 2024
af96d02
Merge branch 'master' of https://github.com/murat-yasar/progit2-tr
Apr 8, 2024
6b5a097
Translate summary sections for chapters 2,3,5,6,7
Apr 11, 2024
60a29d5
Translate ch04 summary
Apr 11, 2024
a3b5fc0
Translate config.asc line:240
murat-yasar Apr 12, 2024
1a966af
Translate complete config.asc
murat-yasar Apr 12, 2024
aa76817
Merge pull request #19 from murat-yasar/08-customizing-git
murat-yasar Apr 12, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
180 changes: 93 additions & 87 deletions book/07-git-tools/sections/credentials.asc
Original file line number Diff line number Diff line change
@@ -1,49 +1,50 @@
[[_credential_caching]]
=== Credential Storage
=== Kimlik Bilgisi Depolama

(((credentials)))
(((git commands, credential)))
If you use the SSH transport for connecting to remotes, it's possible for you to have a key without a passphrase, which allows you to securely transfer data without typing in your username and password.
However, this isn't possible with the HTTP protocols – every connection needs a username and password.
This gets even harder for systems with two-factor authentication, where the token you use for a password is randomly generated and unpronounceable.

Fortunately, Git has a credentials system that can help with this.
Git has a few options provided in the box:

* The default is not to cache at all.
Every connection will prompt you for your username and password.
* The ``cache'' mode keeps credentials in memory for a certain period of time.
None of the passwords are ever stored on disk, and they are purged from the cache after 15 minutes.
* The ``store'' mode saves the credentials to a plain-text file on disk, and they never expire.
This means that until you change your password for the Git host, you won't ever have to type in your credentials again.
The downside of this approach is that your passwords are stored in cleartext in a plain file in your home directory.
* If you're using a Mac, Git comes with an ``osxkeychain'' mode, which caches credentials in the secure keychain that's attached to your system account.
This method stores the credentials on disk, and they never expire, but they're encrypted with the same system that stores HTTPS certificates and Safari auto-fills.
* If you're using Windows, you can install a helper called ``Git Credential Manager for Windows.''
This is similar to the ``osxkeychain'' helper described above, but uses the Windows Credential Store to control sensitive information.
It can be found at https://github.com/Microsoft/Git-Credential-Manager-for-Windows[].

You can choose one of these methods by setting a Git configuration value:
Eğer uzak sunuculara bağlanmak için SSH taşıyıcısını kullanıyorsanız, şifresiz bir anahtarınız olabilir ve bu da kullanıcı adı ve şifrenizi yazmadan veri aktarmanıza olanak sağlar.
Ancak, HTTP protokolleri için bu mümkün değildir; her bağlantıda bir kullanıcı adı ve şifre gereklidir.
Bu durum, iki faktörlü kimlik doğrulama sistemlerinde daha da zorlaşır, çünkü şifreniz için kullandığınız belirteç rastgele oluşturulmuştur ve okunması zor olabilir.

Neyse ki, Git'in bu konuda yardımcı olabilecek bir kimlik bilgisi sistemi vardır.
Git'in heybesinde sakladığı bazı seçenekler şunlardır:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kendimi yasli hissettim :)

Copy link
Contributor Author

@murat-yasar murat-yasar Apr 8, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:) İstiyorsanız Git'in alet çantası diyelim. Eski Anadolu tabirlerini kullanmak ve ölmeye yüz tutmuş bazı kelimelere can suyu vermek hoşuma gidiyor.


* Varsayılan olarak hiçbir şey önbelleğe alınmaz.
Her bağlantı, kullanıcı adınızı ve şifrenizi girmenizi isteyecektir.
* ``cache`` (Önbellek) modu, belirli bir süre boyunca kimlik bilgilerini bellekte tutar.
Hiçbir şifre hiçbir zaman diskte saklanmaz ve bunlar 15 dakika sonra önbellekten silinir.
* ``store`` (Depolama) modu, kimlik bilgilerini düz metin dosyası halinde diskte kaydeder ve bunlar hiçbir zaman zamanaşımına uğramaz.
Bu, git hesabınız için şifrenizi değiştirene kadar kimlik bilgilerinizi bir daha asla girmeniz gerekmeyeceği anlamına gelir.
Bu yaklaşımın dezavantajı, şifrelerinizin açık metin olarak home dizininizde düz bir dosyada saklanmasıdır.
* Bir Mac kullanıyorsanız, Git ``osxkeychain`` moduyla gelir; bu da kimlik bilgilerini sisteminize bağlı güvenli anahtar zincirinde önbelleğe alır.
Bu yöntem, kimlik bilgilerini diske kaydeder ve bunların süresi hiçbir zaman dolmaz, ancak bunlar HTTPS sertifikalarını ve Safari otomatik doldurmalarını saklayan aynı sistemle şifrelenir.
* Bir Windows kullanıyorsanız, ``Git Credential Manager for Windows`` adlı bir yardımcı programı yükleyebilirsiniz.
Bu, yukarıda açıklanan ``osxkeychain`` yardımcı programına benzer, ancak hassas bilgileri kontrol etmek için Windows Kimlik Bilgisi Deposunu kullanır.
Onu şu adresten bulabilirsiniz: https://github.com/Microsoft/Git-Credential-Manager-for-Windows[].

Bu yöntemlerden birini, bir Git yapılandırma değeri belirleyerek seçebilirsiniz:

[source,console]
----
$ git config --global credential.helper cache
----

Some of these helpers have options.
The ``store'' helper can take a `--file <path>` argument, which customizes where the plain-text file is saved (the default is `~/.git-credentials`).
The ``cache'' helper accepts the `--timeout <seconds>` option, which changes the amount of time its daemon is kept running (the default is ``900'', or 15 minutes).
Here's an example of how you'd configure the ``store'' helper with a custom file name:
Bazı yardımcı programların çeşitli seçenekleri vardır.
``store`` yardımcısı, `--file <dosya_yolu>` argümanını alabilir, bu da düz metin dosyasının nerede kaydedileceğini özelleştirir (varsayılan `~/.git-credentials` dizinidir).
``cache`` yardımcısı, daemon işlemin ne kadar süreyle tutulacağını değiştiren `--timeout <saniye>` seçeneğini kabul eder (varsayılan ``900 saniye``, veya 15 dakikadır).
İşte ``store`` yardımcısını özel bir dosya adıyla nasıl yapılandıracağınıza dair bir örnek:

[source,console]
----
$ git config --global credential.helper 'store --file ~/.my-credentials'
----

Git even allows you to configure several helpers.
When looking for credentials for a particular host, Git will query them in order, and stop after the first answer is provided.
When saving credentials, Git will send the username and password to *all* of the helpers in the list, and they can choose what to do with them.
Here's what a `.gitconfig` would look like if you had a credentials file on a thumb drive, but wanted to use the in-memory cache to save some typing if the drive isn't plugged in:
Git, birkaç yardımcıyı yapılandırmanıza bile izin verir.
Belirli bir sunucu için kimlik bilgilerini ararken, Git bunları sırayla sorgular ve bir kez cevap verildikten sonra durur.
Kimlik bilgilerini kaydederken, Git kullanıcı adını ve şifreyi liste içindeki *tüm* yardımcılara gönderir ve onlar bunlarla ne yapacaklarına karar verebilirler.

Eğer taşınabilir sürücünüzde bir kimlik bilgileri dosyanız varsa, ancak sürücü takılı değilken bazı yazma işlemlerini kaydetmek için bellek içindeki önbelleği kullanmak istiyorsanız, `.gitconfig` şu şekilde görünecektir:

[source,ini]
----
Expand All @@ -52,14 +53,14 @@ Here's what a `.gitconfig` would look like if you had a credentials file on a th
helper = cache --timeout 30000
----

==== Under the Hood
==== Şapkanın Altı

How does this all work?
Git's root command for the credential-helper system is `git credential`, which takes a command as an argument, and then more input through stdin.
Peki tüm bunlar nasıl çalışıyor?
Git'in kimlik bilgisi yardımcı sistemine yönelik kök komutu `git credential` 'dır. Bir komutu argüman olarak ve daha sonra daha fazla veri girişini `stdin` üzerinden alır.

This might be easier to understand with an example.
Let's say that a credential helper has been configured, and the helper has stored credentials for `mygithost`.
Here's a session that uses the ``fill'' command, which is invoked when Git is trying to find credentials for a host:
Bir örnek ile bunu anlamak daha kolay olacaktır.
Diyelim ki yapılandırılmış bir kimlik bilgisi yardımcısı, `mygithost` için kimlik bilgilerini saklamış olsun.
İşte, Git'in bir sunucu için kimlik bilgilerini bulmaya çalışırken çağrılan ``fill`` komutunu kullanan bir oturum:

[source,console]
----
Expand All @@ -83,39 +84,39 @@ username=bob
password=s3cre7
----

<1> This is the command line that initiates the interaction.
<2> Git-credential is then waiting for input on stdin.
We provide it with the things we know: the protocol and hostname.
<3> A blank line indicates that the input is complete, and the credential system should answer with what it knows.
<4> Git-credential then takes over, and writes to stdout with the bits of information it found.
<5> If credentials are not found, Git asks the user for the username and password, and provides them back to the invoking stdout (here they're attached to the same console).
<1> Bu etkileşimi başlatan komut satırıdır.
<2> Ardından, Git-credential stdin üzerinden giriş bekler.
Bildiklerimizi giriyoruz: protokol ve sunucu adı.
<3> Boş bir satır, girişin tamamlandığını ve kimlik bilgisi sisteminin ne bildiğini yanıtlaması gerektiğini gösterir.
<4> Daha sonra, Git-credential işi devralır ve bulduğu bilgileri stdout ile yazar.
<5> Kimlik bilgileri bulunamazsa; Git kullanıcıya kullanıcı adını ve şifreyi sorup, bunları başlatan stdout'a sağlar (burada aynı konsola bağlanmışlardır).

The credential system is actually invoking a program that's separate from Git itself; which one and how depends on the `credential.helper` configuration value.
There are several forms it can take:
Kimlik bilgisi sistemi aslında Git'ten ayrı bir programı çağırır. Hangi programın çağrıldığı ve nasıl olduğu, `credential.helper` yapılandırma değerine bağlıdır.
Bu, birkaç farklı biçimde olabilir:

[options="header"]
|======
| Configuration Value | Behavior
| `foo` | Runs `git-credential-foo`
| `foo -a --opt=bcd` | Runs `git-credential-foo -a --opt=bcd`
| `/absolute/path/foo -xyz` | Runs `/absolute/path/foo -xyz`
| `!f() { echo "password=s3cre7"; }; f` | Code after `!` evaluated in shell
| Yapılandırma Değeri | Davranış
| `foo` | `git-credential-foo` çalışır
| `foo -a --opt=bcd` | `git-credential-foo -a --opt=bcd` çalışır
| `/absolute/path/foo -xyz` | `/absolute/path/foo -xyz` çalışır
| `!f() { echo "password=s3cre7"; }; f` | `!` sonrasındaki kod kabukta (shell) değerlendirilir
|======

So the helpers described above are actually named `git-credential-cache`, `git-credential-store`, and so on, and we can configure them to take command-line arguments.
The general form for this is ``git-credential-foo [args] <action>.''
The stdin/stdout protocol is the same as git-credential, but they use a slightly different set of actions:
Yukarıda tanımlanan yardımcılar aslında `git-credential-cache`, `git-credential-store`, vb. şeklinde adlandırılmıştır ve onları komut satırı argümanları alacak şekilde yapılandırabiliriz.
Bunun genel formu ``git-credential-foo [args] <eylem>.`` şeklindedir.
Stdin/stdout protokolü git-credential ile aynıdır, ancak biraz farklı bir eylem kümesi kullanırlar:

* `get` is a request for a username/password pair.
* `store` is a request to save a set of credentials in this helper's memory.
* `erase` purge the credentials for the given properties from this helper's memory.
- `get`: Kullanıcı adı/şifre isteği.
- `store`: Bu yardımcının belleğine, bir kimlik bilgisi kümesini kaydetme isteği.
- `erase`: Belirtilen özelliklere sahip kimlik bilgilerini, bu yardımcının belleğinden silme işlemi.

For the `store` and `erase` actions, no response is required (Git ignores it anyway).
For the `get` action, however, Git is very interested in what the helper has to say.
If the helper doesn't know anything useful, it can simply exit with no output, but if it does know, it should augment the provided information with the information it has stored.
The output is treated like a series of assignment statements; anything provided will replace what Git already knows.
`store` ve `erase` eylemleri için yanıt gerekli değildir (zaten Git tarafından görmezden gelinir).
Ancak Git, `get` eylemi için yardımcının ne söylediğini çok önemser.
Yardımcı işe yarar bir şey bilmiyorsa, herhangi bir çıktı olmadan doğrudan çıkış yapabilir; ancak biliyorsa, sağlanan bilgiyi depoladığı bilgilerle genişletmesi gerekir.
Çıktı, bir dizi atama ifadesi gibi işlenir; sağlanan her bir şey, Git'in zaten bildiği şeyi değiştirecektir.

Here's the same example from above, but skipping git-credential and going straight for git-credential-store:
İşte yukarıdaki örneğin, git-credential'ı atlayarak doğrudan git-credential-store'a geçen bir şekli:

[source,console]
----
Expand All @@ -132,49 +133,54 @@ username=bob <3>
password=s3cre7
----

<1> Here we tell `git-credential-store` to save some credentials: the username ``bob'' and the password ``s3cre7'' are to be used when `https://mygithost` is accessed.
<2> Now we'll retrieve those credentials.
We provide the parts of the connection we already know (`https://mygithost`), and an empty line.
<3> `git-credential-store` replies with the username and password we stored above.
<1> Burada `git-credential-store` 'a bazı kimlik bilgilerini kaydetmesini söylüyoruz: `https://mygithost` erişildiğinde kullanıcı adı olarak ``bob`` ve şifre olarak ``s3cre7`` kullanılacaktır.
<2> Şimdi bu kimlik bilgilerini alacağız.
Zaten bildiğimiz bağlantının parçalarını sağlıyoruz (`https://mygithost`) ve bir boş satır ekliyoruz.
<3> `git-credential-store`, yukarıda sakladığımız kullanıcı adı ve şifre ile yanıt verir.

Here's what the `~/git.store` file looks like:
İşte `~/git.store` dosyasının içeriği:

[source,ini]
----
https://bob:s3cre7@mygithost
----

It's just a series of lines, each of which contains a credential-decorated URL.
The `osxkeychain` and `wincred` helpers use the native format of their backing stores, while `cache` uses its own in-memory format (which no other process can read).
Bu sadece kimlik bilgisiyle bezenmiş URL'lerini içeren bir dizi satırdır.
`osxkeychain` ve `wincred` yardımcıları, destek depolarının doğal formatını kullanırken, `cache` kendi bellek içi formatını kullanır (ki bu diğer hiçbir süreç tarafından okunamaz).

==== A Custom Credential Cache

Given that `git-credential-store` and friends are separate programs from Git, it's not much of a leap to realize that _any_ program can be a Git credential helper.
The helpers provided by Git cover many common use cases, but not all.
For example, let's say your team has some credentials that are shared with the entire team, perhaps for deployment.
These are stored in a shared directory, but you don't want to copy them to your own credential store, because they change often.
None of the existing helpers cover this case; let's see what it would take to write our own.
There are several key features this program needs to have:
`git-credential-store` ve benzerleri, Git'ten bağımsız ayrı programlardır, bu nedenle _herhangi bir_ programın bir Git kimlik bilgisi yardımcısı olabileceğini anlamak pek de zor değildir.
Git'in sağladığı yardımcılar birçok yaygın kullanım durumunu kapsar, ancak hepsini değil.
Örneğin, diyelim ki ekibinizin, belki de dağıtım için, tüm ekiple paylaşılan bazı kimlik bilgileri var.
Bu kimlik bilgileri, paylaşılan bir dizinde saklanır, ancak sık sık değiştiği için bunları kendi kimlik bilgisi deposuna kopyalamak istemezsiniz.
Mevcut yardımcıların hiçbiri bu durumu kapsamaz. Şimdi kendimiz bir tane yazmak istersek ne gerektiğini görelim.
Bu programın sahip olması gereken birkaç temel özellik bulunmaktadır:

. The only action we need to pay attention to is `get`; `store` and `erase` are write operations, so we'll just exit cleanly when they're received.
. The file format of the shared-credential file is the same as that used by `git-credential-store`.
. The location of that file is fairly standard, but we should allow the user to pass a custom path just in case.
. Dikkat etmemiz gereken tek işlem `get` işlemidir: `store` ve `erase` yazma işlemleri olduğu için, bunları aldığımızda sadece temiz bir şekilde çıkış yaparız.
. Paylaşılan kimlik bilgisi dosyasının dosya biçimi, `git-credential-store` tarafından kullanılan dosya biçimi ile aynıdır.
. Dosyanın yeri oldukça standarttır, ancak her ihtimale karşı kullanıcının özel bir dizin geçmesine izin vermeliyiz.

Once again, we'll write this extension in Ruby, but any language will work so long as Git can execute the finished product.
Here's the full source code of our new credential helper:
Bu uzantıyı yine Ruby'de yazacağız, ancak Git, bitmiş kodu çalıştırabileceği sürece herhangi bir dil de işe yarayacaktır.
İşte yeni kimlik bilgisi yardımcımızın tam kaynak kodu:

[source,ruby]
--------
include::../git-credential-read-only[]
--------

<1> Here we parse the command-line options, allowing the user to specify the input file.
The default is `~/.git-credentials`.
<2> This program only responds if the action is `get` and the backing-store file exists.
<3> This loop reads from stdin until the first blank line is reached.
The inputs are stored in the `known` hash for later reference.
<4> This loop reads the contents of the storage file, looking for matches.
If the protocol and host from `known` match this line, the program prints the results to stdout and exits.
<1> Burada komut satırı seçeneklerini ayrıştırıyoruz ve kullanıcının giriş dosyasını belirtmesine izin veriyoruz.
Varsayılan `~/.git-credentials`'dır.
<2> Bu program, sadece eylem `get` ise ve destek dosyası mevcutsa yanıt verir.
<3> Bu döngü, ilk boş satıra ulaşılıncaya kadar stdin'den okur.
Girişler daha sonra başvurmak üzere `known` hash'inde saklanır.
<4> Bu döngü, depolama dosyasının içeriğini okur ve eşleşmeleri arar.
`known`'dan gelen protokol ve sunucu bu satırla eşleşiyorsa, program sonuçları stdout'a yazdırır ve çıkar.

Yardımcımızı `git-credential-read-only` olarak kaydedeceğiz, bunu `PATH` içinde bir yere koyacağız ve çalıştırılabilir olarak işaretleyeceğiz.
İşte etkileşimli bir oturumun nasıl göründüğü:



We'll save our helper as `git-credential-read-only`, put it somewhere in our `PATH` and mark it executable.
Here's what an interactive session looks like:
Expand All @@ -191,11 +197,11 @@ username=bob
password=s3cre7
----

Since its name starts with ``git-'', we can use the simple syntax for the configuration value:
Adı "git-" ile başladığından, yapılandırma değeri için basit sözdizimini kullanabiliriz:

[source,console]
----
$ git config --global credential.helper 'read-only --file /mnt/shared/creds'
----

As you can see, extending this system is pretty straightforward, and can solve some common problems for you and your team.
Gördüğünüz gibi, bu sistemi genişletmek oldukça basit ve sizin ve ekibinizin bazı yaygın sorunlarını çözebilir.