使用GIT BASH管理多个远程代码库技术
我的另一篇文章《GITHUB之GIT BASH使用教程》,最近一段时间,百度等搜索引擎也带来了一些流量,看到有很多网友浏览,也有网友来过多次。这篇文章再做一些补充,关于如何使用 GIT 推送代码到多个远程代码库。使用场景:比如我们的项目同时放到了 GITHUB 和 GITOSC 中,这个时候本地只有一份项目代码,当本地开发时做了更新,要保持远程两个远程版本库的一致性,就必须将代码同时推送到两个远程服务器。
这里将不使用 GITHUB 自带的 GIT 客户端,GITHUB for windows 客户端做了定制化,对于推送到其他服务端不太方便。
在 GIT 客户端中,使用 eval `ssh-agent` (注意是数据库字段符号,也就是键盘数字 1 左边的那个按键)命令进入 SSH 模式,打开秘钥管理器,然后使用 ssh-add 命令添加私钥。很多不太熟悉的人往往因为没有执行 ssh-agent 而导致不能使用 ssh 命令连接到服务器。
国内的 GIT 托管服务 GITOSC 不能使用 SSH 协议来进行推送代码功能,只能用来拉取项目更新,官方建议使用 https 协议来进行代码的推送,这样有个不方便,就是每次都需要输入用户名和密码。网上也有教程使 https 协议下能够记住密码的方法,但是感觉太过于麻烦,本人更习惯于 SSH 带来的方便。我第一次将 LMLPHP 代码托管在 GITOSC 的时候,由于习惯了 GITHUB 的 SSH 操作,对于 https 协议推送反而不知道怎么使用。从下面的操作日志中,可以看到 .git/config 文件中的内容,可以通过修改该配置文件添加远程库,或者使用 ”git remote add origin_xxx address“ 的方式来增加远程库。下面的操作例子中,远程库 origin_gitosc 是使用 https 协议来进行推送的,每次推送更新都需要输入用户名和密码;远程库 origin 是使用 SSH 协议来进行代码推送的,需要自行添加秘钥文件,秘钥文件在生成的时候可以设置密码,有了密码后,每次执行 ”ssh-add“ 命令时,需要输入密码才可以被添加,也算是一种安全保护措施。
Welcome to Git (version 1.9.4-preview20140929) Run 'git help git' to display the help index. Run 'git help <command>' to display help for specific commands. May@MAY-PC ~ $ cd Documents/ May@MAY-PC ~/Documents $ cd GitHub/LMLPHP/ May@MAY-PC ~/Documents/GitHub/LMLPHP (develop) $ git status On branch develop Your branch is up-to-date with 'origin/develop'. nothing to commit, working directory clean May@MAY-PC ~/Documents/GitHub/LMLPHP (develop) $ git branch -av * develop e6e8db4 modify default_theme_name constant name master e6e8db4 modify default_theme_name constant name remotes/origin/HEAD -> origin/master remotes/origin/develop e6e8db4 modify default_theme_name constant name remotes/origin/master e6e8db4 modify default_theme_name constant name remotes/origin_gitosc/develop e6e8db4 modify default_theme_name constant name remotes/origin_gitosc/master e6e8db4 modify default_theme_name constant name May@MAY-PC ~/Documents/GitHub/LMLPHP (develop) $ git pull origin develop From github.com:leiminglin/LMLPHP * branch develop -> FETCH_HEAD Already up-to-date. May@MAY-PC ~/Documents/GitHub/LMLPHP (develop) $ ls LICENSE README.md lib lml.min.php lml.php lmlphp_logo_200.png May@MAY-PC ~/Documents/GitHub/LMLPHP (develop) $ cat .git/config [core] repositoryformatversion = 0 filemode = false bare = false logallrefupdates = true symlinks = false ignorecase = true hideDotFiles = dotGitOnly [remote "origin"] url = [email protected]:leiminglin/LMLPHP.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master [branch "develop"] remote = origin merge = refs/heads/develop [remote "origin_gitosc"] url = https://git.oschina.net/leiminglin/LMLPHP.git fetch = +refs/heads/*:refs/remotes/origin_gitosc/* May@MAY-PC ~/Documents/GitHub/LMLPHP (develop) $ eval `ssh-agent` Agent pid 13436 May@MAY-PC ~/Documents/GitHub/LMLPHP (develop) $ ssh-add ./../../../.ssh/github_rsa Identity added: ./../../../.ssh/github_rsa (./../../../.ssh/github_rsa) May@MAY-PC ~/Documents/GitHub/LMLPHP (develop) $