文章目录
语法
- 分支名:指向该分支名的最新commit版本
- Head指针:指向当前所在分支的最新commit版本 – head指针跟着当前分支指针
1. 分支
由一下图描述分支的版本机制 → 当前分支在哪,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在合并时就会自动创建一个节点来连接两个分支
1. 分支的查看、切换、创建、删除
$ git branch // 查看所有分支 -- 绿色字体显示用户所在的当前分支
$ git branch 分支名 // 创建新的分支 -- 创建分支时 : 当前的版本内容状态与master最新版本库文件的内容状态一致
$ git checkout -b 分支名 // 创建、并切换到该新分支
$ git branch -m 旧分支名 新分支名 // 修改分支名
$ git checkout 分支名 // 切换到 ''分支名''的分支 -- 一切换分支,文件的内容改为该分支下的最新版本( head指针的内容 ) 或者 将工作区被修改的部分藏起来( stash )
$ git branch -d 分支名 // 删除分支 -- 用户不能删除所在的分支
2. 隐藏工作区修改内容
$ git stash list // 当前分支 显示隐藏的文件列表
$ git stash // 隐藏当前工作区的改变、以及暂存区的文件,并且工作区恢复到工作区修改前的内容状态
$ git stash apply stash@{n} // 恢复隐藏的工作区文件、暂存区文件、并且暂存区文件降级到工作区,需要重新的提交到暂存区
$ git stash pop stash@{n} // 恢复隐藏的工作区文件、暂存区文件、并且暂存区文件降级到工作区,需要重新的提交到暂存区 -- 同时在 stash list 列表删除 stash@{n} 项
$ git stash drop stash@{n} // 在 stash list 列表删除 stash@{n} 项
$ git statsh clear // 清除 stash list 列表
3. 合并分支
正常的分支合并后会自动的commit,但是 有冲突则会将合并的内容在工作区中显示,还未commit
语法结构
// 当前在master分支
git merge 分支名 // 把"分支名"的分支最新版本 合并到 master分支上
遇到这种情况工作区的内容已经更改 – 需要自己手动的删除文件内容、保存、commit文件 —— 文件的同行数据内容不一样
2. 远程公有仓库
1. 语法使用
pull = fetch + merge
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
2. 异常error
- pull从远程仓库拉取到本地遇到的问题
出现原因: SSH协议 它需要将我们 本地生成的SSH密钥 放到我们的github 服务器上面
- 解决方案:将本地公共密钥放置在 GitHub 服务器上
步骤1. 生成本地密钥
$ ssh-keygen // 本地SSH密钥生成
密钥生成成功显示 – 可看到密钥的位置
步骤2. 复制本地公钥的内容 - id_rsa.pub
步骤3. 复制的公钥内容 保存在 GItHub服务器上
3. 远程私有仓库 - 自己买的服务器
步骤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地址 // 自动将密码保存至私有远程服务器上