Tag: Git

[Git]讓不同的Repository使用不同的private key

有時候我們需要在不同的Repository使用不同的private key,尤其是工作和私人的Repository

目標

我們希望切換到不同的Local Repository下git pull或git push這些和remote repository的指令它就自動使用指定的private key

第一步:到~/.ssh/config新增config

如果有兩個不同的Repository使用不同的key,就需要新增兩個設定

這裡用your-repo-ayour-repo-b來表示

再把Host複製起來,下一步會用到

Host your-repo-a
HostName github.com
User git
IdentityFile /home/tony/.ssh/your_repo_a_id_rsa

Host your-repo-b
HostName github.com
User git
IdentityFile /home/tony/.ssh/your_repo_b_id_rsa

第二步:到Local Repository的.git/config

依照上面的設定host,修改remote hostname


[remote "origin"]
    url = git@your-repo-a:tonyciou/a-project.git

這樣就搞定了!

Advertisements

讓Git untrack已經進repository的檔案

初學Git的人都知道,可以使用.gitignore來忽略檔案

但如果這個檔案已經進到repository了呢?

一旦檔案已經commit到repository,只把該檔案加到.gitignore的話是沒有用的

還要將那個檔案變成untracked的狀態,這時候可以使用

git rm --cached i-am-a-file-name

將檔案untrack後,並commit這次的異動

再把檔案加到.gitignore

就大功告成了

關於git config的層級

安裝完git後為了方便性,需要初始化一些設定

這個動作可以透過git config來完成

git config有分為三種不同的層級,以下是由高到低的優先權

 

1.檔案庫層(–local參數可省略)的設定會在.git資料夾中的config檔

$ git config --local user.name "Tony Ciou"

 

2.使用者層(global)的設定會在家目錄的.gitconfig檔案內

$ git config --global user.name "Tony Ciou"

 

3.系統層(system)的設定會在/etc/gitconfig檔案內

$ git config --system user.name "Tony Ciou"

 

一般來說安裝git後至少會初始化以下的設定

$ git config --global user.name "YOUR NAME"
$ git config --global user.email "YOUR EMAIL ADDRESS"
$ git config --global core.editor "YOUR CODE EDITOR"

讓Git識別檔案的大小寫

前陣子和朋友一起開發一個小專案的時候遇到的問題

我明明建立了一個新的檔案,但我朋友pull之後卻看不到

因為同一個資料夾有兩個檔案很相似:

test.php

Test.php

當下就直覺跟檔案名稱的大小寫有關

查了一下文件之後發現要解決這個問題其實還滿簡單的,只要修改一下git config

git config core.ignorecase false

由於Windows和MacOS的檔案名稱是不分大小寫的(case-insensitive),也就是說以上的兩個檔案會被識別為同一個

我自己的筆電是裝Linux所以從來沒有遇過這個問題,因為Linux的檔案名稱是分大小寫(case-sensitive)

同理,如果把core.ignorecase改成true那麼在Linux上也可以達到檔案不分大小寫(case-insensitive)