Git多分支管理及多ssh-key配置

问题1:Git多分支管理及远程配置

当从服务器中clone下来一个项目后,默认会有本地分支master以及服务器的所有远程分支。其中本地分支master与远程origin/master自动关联。而远程origin/dev这类分支则不存在关联。

通常个人仅做dev上的更改,首先本地创建分支git branch dev,并切换至新的本地分支git checkout dev。然后按一般的操作进行本地的开发之后。通过git push origin dev上传到远程dev分支上。

当其他成员在远程dev分支上进行修改,直接在本地dev分支中git pull时会提示当前分支没有关联远程分支。因此通过git branch --set-upstream-to=origin/ dev使得本地dev与远程相应的分支关联。此时在本地dev分支中执行git status则显示up-to-date with origin/dev

此时执行git remote show origin显示

$ git remote show origin
* remote origin
  Fetch URL: [email protected]:xxxx.git
  Push  URL: [email protected]:xxxx.git
  HEAD branch: master
  Remote branches:
    dev    tracked
    master tracked
  Local branches configured for 'git pull':
    dev    merges with remote dev
    master merges with remote master
  Local refs configured for 'git push':
    dev    pushes to dev    (up to date)
    master pushes to master (up to date)

问题2:多个ssh-key配置,从https切换到ssh

由于项目是用https方式clone下来,如果要切换到ssh则需要执行git remote set-url origin 切换到相应的ssh地址。

由于对不同账号有多个key存在,通过ssh-add进行添加。详细参考此处。这种方法的不好之处就在于每次都要重新运行ssh-agent

第二种方法就是在~/.ssh/config中配置相关地址映射,不然默认只会用id_rsa来做认证。

Host github.com
    HostName github.com
    User yourusername
    IdentityFile ~/.ssh/id_rsa

Host git.coding.net
    HostName git.coding.net
    PreferredAuthentications publickey
    User yourusername
    IdentityFile ~/.ssh/coding_rsa

特别注意,当Host之后的域名修改之后,则会强制使用新的Host,比如git.coding.net改成coding,则要确保相应的git里的域名也都是对应的是coding,不然就会使得这个映射失效。

你可能感兴趣的:(Git多分支管理及多ssh-key配置)