由一下图描述分支的版本机制 → 当前分支在哪,head指针就指向当前分支名
图1: 可看过刚创建dev分支时,分支指针 直接指向原来的 master主版本链 (即拥有此时所有master保存的版本) 图2: 创建bugfix分支,并且做了一次提交即c5 (由图可以得知 master没有c5版本,而 bugifx有 ) 图3: master分支合并bugfix分支 图4: master合并bugfix分支后 → 删除bugfix分支 图5:在dev分支中有多次新的版本(即 c4、c6) * 图6: master合并dev分支 - c7版本是系统自己创建的,目的是连接连个分支 - 只C6这条链的节点不能连接到master分支最新的节点,那么Git在合并时就会自动创建一个节点来连接两个分支
正常的分支合并后会自动的commit,但是 有冲突则会将合并的内容在工作区中显示,还未commit
语法结构
// 当前在master分支 git merge 分支名 // 把"分支名"的分支最新版本 合并到 master分支上
遇到这种情况工作区的内容已经更改 – 需要自己手动的删除文件内容、保存、commit文件 —— 文件的同行数据内容不一样
pull = fetch + merge
push pull clone push 甲程序员 远程仓库 乙程序员
GitHub当前所在仓库的 https、SSH的网络地址
语法结构
$ git push 远程仓库地址别名 远程仓库的分支名 // 将本地的文件推送到远程仓库上 $ git pull 远程仓库的Https网络地址 远程仓库的分支名 // 拉取远程仓库的文件到本地 $ git pull 远程仓库的SSH网络地址 远程仓库的分支名 // github的服务器上需要保存本机的git的ssh公有密钥 // 拉取git远程服务器上的文件与本地进行合并 $ git remote add 远程仓库地址别名 远程仓库网络地址 // 设置远程仓库URL别名 $ git remote -v // 查看远程仓库的别名列表
示例
$ git push https://github.com/lovecodeyou/test_repository.git master $ git push git@github.com:lovecodeyou/test_repository.git master $ git remote add github-test https://github.com/lovecodeyou/test_repository.git $ git pull github-test master
出现原因: SSH协议 它需要将我们 本地生成的SSH密钥 放到我们的github 服务器上面
解决方案:将本地公共密钥放置在 GitHub 服务器上 步骤1. 生成本地密钥 $ ssh-keygen // 本地SSH密钥生成
密钥生成成功显示 – 可看到密钥的位置
步骤2. 复制本地公钥的内容 - id_rsa.pub
步骤3. 复制的公钥内容 保存在 GItHub服务器上
步骤1:登录远程私有服务器
$ ssh root@远程服务地址 // 登录 服务器将第三行的的签名密钥印记放置在 known_hosts 文件里面
步骤2:推送文件到远程私有仓库
// 每次push、pull都需要输入密码 $ git push ssh://root@IP地址/bare仓库的文件夹 $ git pull ssh://root@IP地址/bare仓库的文件夹
步骤3:将ssh密码保存至远程私有服务器 – 从而不用每次push、pull输入密码
$ ssh-copy-id root@IP地址 // 自动将密码保存至私有远程服务器上