ð» GitHubã¢ã«ãŠã³ãã2ã€äœã£ãŠWindowsãšWSLã§å¿«é©ã«äœ¿ãåããèšå® ð§
ã¯ããã«
éçºçšã«GitHubã¢ã«ãŠã³ãã2ã€ïŒäŸïŒãã©ã€ããŒãçšãšä»äºçšïŒæã¡ããããšã£ãŠãããŸããããðââïž
ãã ã1å°ã®PCïŒWindows + WSL䜵çšïŒã§è€æ°ã¢ã«ãŠã³ãã䜿ãåããã«ã¯ãã¡ãã£ãšãã工倫ãå¿ èŠã§ãããã®èšäºã§ã¯ãWindowsç°å¢ããWSLç°å¢ãäž¡æ¹ã§ãè€æ°ã®GitHubã¢ã«ãŠã³ããå®å šãã€èªåã§äœ¿ãåããèšå®æ¹æ³ããŸãšããŸããâïž
å®éã«ãã£ãæé ãããŒã¹ã«ãã¢ã«ãŠã³ãåãã¡ãŒã«ã¯ãã¹ãŠãã¹ãã³ã°ããŠããŸãã
ð¯ ãã®èšäºã®ãŽãŒã«
- ã¢ã«ãŠã³ãA ãš ã¢ã«ãŠã³ãB ããã£ãã䜿ãåããããããã«ãªã
- Windows / WSL ã®äž¡æ¹ã§åãã«ãŒã«ã§åäœããã
- ããã®ãã©ã«ãé äžã¯ã¢ã«ãŠã³ãAãããã£ã¡ã®ãã©ã«ãé äžã¯ã¢ã«ãŠã³ãBããšèªåã§åãæ¿ããããã«ãã
-
git push
æã«ã¢ã«ãŠã³ããæ··ç·ããªãããã«ãã
Step 1. ð SSHéµã®æºåãšãšã€ãªã¢ã¹èšå®
ãŸããã¢ã«ãŠã³ãããšã«å¥ã ã®SSHéµãäœæããŸãã
äŸïŒ
- ã¢ã«ãŠã³ãA â
~/.ssh/id_rsa_accountA
- ã¢ã«ãŠã³ãB â
~/.ssh/id_rsa_accountB
次㫠~/.ssh/config
ã«ãã©ã¡ãã®éµã䜿ãããæå®ãããšã€ãªã¢ã¹ïŒãã åã®ãããªãã®ïŒãå®çŸ©ããŸãã
# ð€ ã¢ã«ãŠã³ãAçš
Host github-a
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_accountA
IdentitiesOnly yes
# ð¢ ã¢ã«ãŠã³ãBçš
Host github-b
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_accountB
IdentitiesOnly yes
ããã§æºåOKã§ãïŒã¡ãããšæ¥ç¶ã§ããã確èªããŠã¿ãŸããããâ
# ã¢ã«ãŠã³ãAãšããŠæ¥ç¶ãã¹ã
ssh -T git@github-a
# â Hi A! You've successfully authenticated... ãšè¡šç€ºãããã°æåïŒ
# ã¢ã«ãŠã³ãBãšããŠæ¥ç¶ãã¹ã
ssh -T git@github-b
# â Hi B! You've successfully authenticated... ãšè¡šç€ºãããã°æåïŒ
Step 2. ð Gitã®ã³ãããå矩ãåãåãã (WSLç·š)
次ã«ãã³ãããæã«èšé²ãããååãšã¡ãŒã«ã¢ãã¬ã¹ãã¢ã«ãŠã³ãããšã«åãæ¿ããŸãã
ð€ ã°ããŒãã«èšå®ïŒããã©ã«ãïŒã¢ã«ãŠã³ãAïŒ
ãŸãã¯ãã©ã®ãããžã§ã¯ãã§ããªãå Žæã§äœ¿ããããåºæ¬ã®ã¢ã«ãŠã³ããèšå®ããŸãã~/.gitconfig
ãã¡ã€ã«ãç·šéããŸãã
[user]
name = ACCOUNT_A
email = accountA@example.com
includeIf
ã§æ¡ä»¶åå²ïŒã¢ã«ãŠã³ãBçšïŒ
ð ããããã¢ã§ãïŒç¹å®ã®ãã£ã¬ã¯ããªä»¥äžã®å Žåã ããèšå®ãäžæžãããããã«ããŸãã~/.gitconfig
ã«ä»¥äžã®èšå®ã远èšããŸãã
[includeIf "gitdir:/home/username/accountB/"]
path = ~/.gitconfig-accountB
ãããŠãäžæžãçšã®èšå®ãã¡ã€ã« ~/.gitconfig-accountB
ãæ°ããäœããŸãã
[user]
name = ACCOUNT_B
email = 123456+ACCOUNTB@users.noreply.github.com
ð ããã§ /home/username/accountB/
é
äžã«ãããããžã§ã¯ãã¯ãèªåã§ã¢ã«ãŠã³ãBã®å矩ã«åãæ¿ãããŸãïŒ ãšãŠã䟿å©ïŒ
Step 3. ð¥ïž WindowsåŽã§ãåãèšå®ããã
WSLã ãã§ãªããWindowsåŽã®Gitã§ãåãèšå®ãããŠãããŸããããããã§æ··ä¹±ããªããªããŸãã
Windowsã§ã¯ .gitconfig
㯠C:\Users\<WindowsãŠãŒã¶ãŒå>\.gitconfig
ã«ãããŸããWSLãšåãããã«èšå®ããŠãããŸãããã
ð€ ã°ããŒãã«èšå®ïŒããã©ã«ãïŒã¢ã«ãŠã³ãAïŒ
[user]
name = ACCOUNT_A
email = accountA@example.com
includeIf
ã§æ¡ä»¶åå²ã远å
ð [includeIf "gitdir:C:/Users/<WindowsãŠãŒã¶ãŒå>/accountB/"]
path = ./.gitconfig-accountB
â» path
ã¯.gitconfig
ããã®çžå¯Ÿãã¹ã§ãOKã§ãã
ãããŠãäžæžãçšã® .gitconfig-accountB
ã .gitconfig
ãšåãå Žæã«äœããŸãã
[user]
name = ACCOUNT_B
email = 123456+ACCOUNTB@users.noreply.github.com
ð ããã§Windowsã§ã C:\Users\xxx\accountB\
é
äžã« git clone
ã git init
ããã°ãèªåã§ã¢ã«ãŠã³ãBã«åãæ¿ãããŸãïŒ
Step 4. ð ãããžã§ã¯ãã®äœ¿ãåãã«ãŒã«
ããã§ããã©ã«ãã®å Žæã«ãã£ãŠã¢ã«ãŠã³ããæèããã«äœ¿ãåããããããã«ãªããŸããïŒ
ð€ ã¢ã«ãŠã³ãAã䜿ããããšã
- ãã©ã«ã (WSL):
/home/username/Documents/
ãªã© - ãã©ã«ã (Windows):
C:\Users\xxx\Documents\
ãªã© - ãªã¢ãŒãURL:
git@github-a:ACCOUNT_A/repo.git
ð¢ ã¢ã«ãŠã³ãBã䜿ããããšã
- ãã©ã«ã (WSL):
/home/username/accountB/
- ãã©ã«ã (Windows):
C:\Users\xxx\accountB\
- ãªã¢ãŒãURL:
git@github-b:ACCOUNT_B/repo.git
git clone
ããæã«ãgithub.com
ã®éšåã ~/.ssh/config
ã§èšå®ãããã¹ãåïŒgithub-a
or github-b
ïŒã«æžãæããã®ããã€ã³ãã§ãïŒ
Step 5. ð€ è¿·ã£ããšãã®ã3ç¹ãã§ãã¯ãªã¹ãã
ãããïŒä»ã©ã£ã¡ã®ã¢ã«ãŠã³ãã§äœæ¥ããŠããã ã£ãïŒããšäžå®ã«ãªã£ããšãã¯ããã®3ã€ã確èªããã°å®å¿ã§ããð
1. ã³ãããå矩ã®ç¢ºèª ð€
git config user.email
â æå³ããã¢ã«ãŠã³ãã®ã¡ãŒã«ã¢ãã¬ã¹ã衚瀺ãããããã§ãã¯ïŒ
2. ãªã¢ãŒãURLã®ç¢ºèª ð
git remote -v
â origin git@github-a:...
ãŸã㯠origin git@github-b:...
ã®ããã«ãèšå®ãããã¹ãåã«ãªã£ãŠããããã§ãã¯ïŒ
3. SSHèªèšŒã®ç¢ºèª ð
# ã¢ã«ãŠã³ãAã®çé確èª
ssh -T git@github-a
# ã¢ã«ãŠã³ãBã®çé確èª
ssh -T git@github-b
â ããããã®ã¢ã«ãŠã³ãåã§ successfully authenticated
ãšè¡šç€ºãããããã§ãã¯ïŒ
ð ãŸãšã
ããã§ã1å°ã®PCã§è€æ°ã®GitHubã¢ã«ãŠã³ããå®å šã»å¿«é©ã«äœ¿ãåããããããã«ãªããŸããïŒ
- ð SSHéµãã¢ã«ãŠã³ãããšã«åãã
- âïž
~/.ssh/config
ã§ãã¹ãã®ãšã€ãªã¢ã¹ãèšå®ãã - ð
includeIf
ã䜿ã£ãŠãç¹å®ãã©ã«ãé äžã®ãããžã§ã¯ãã¯å¥ã¢ã«ãŠã³ãã«èªååæ¿ - ð» Windows ãš WSL äž¡æ¹ã§åãèšå®ãå ¥ããŠæ··ç·ãé²ã
- ð€ äžå®ãªãšãã¯ã3ç¹ãã§ãã¯ãã§ç¢ºèªïŒ
å¿«é©ãªGitã©ã€ãããéãããã ããïŒ âš
Discussion