问题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/<branch> dev
使得本地dev与远程相应的分支关联。此时在本地dev
分支中执行git status
则显示up-to-date with origin/dev
。
此时执行git remote show origin
显示
$ git remote show origin
* remote origin
Fetch URL: git@git.coding.net:xxxx.git
Push URL: git@git.coding.net: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 <url>
切换到相应的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,不然就会使得这个映射失效。