1.Devops 是什么
开发 development
运维 operations
2.Devops 能干嘛
提高产品质量
1 自动化测试
2 持续集成
3 代码质量管理工具
4 程序员鼓励师
3.Devops 如何实现
设计架构规划 - 代码的存储 - 构建 - 测试, 预生产, 部署, 监控
2.Git 版本控制系统
1. 版本控制系统简介
vcs `version control system`
版本控制系统是一种记录一个或若干个文件内容变化, 以便将来查阅特定版本内容情况的系统
记录文件的所有历史变化
随时可恢复到任何一个历史状态
多人协作开发
2. 为什么需要版本控制系统
3. 常见版本管理工具
SVN
集中式的版本控制系统, 只有一个中央数据仓库, 如果中央数据仓库挂了或者不可访问, 所有的使用者无法使用 SVN, 无
法进行提交或备份文件.
Git
3 .Git 安装
1. 系统环境准备
- root@Git-Git~]# cat /etc/RedHat-release #查看系统版本
- CentOS Linux release 7.1.1503 (Core)
- [root@Git-Git ~]# uname -r #查看内核版本
- 3.10.0-229.el7.x86_64
- [root@Git-Git ~]# getenforce #确认 Selinux 关闭状态
- Disabled
- [root@Git-Git ~]# systemctl stop firewalld #关闭防火墙
2. Git 安装
[root@Git-Git ~]# yum install Git
3.Git 部署配置
[root@Git ~]# Git config
--global 使用全局配置文件
--system 使用系统级配置文件
--local 使用版本库级配置文件
配置 Git 使用用户
[root@Git-Git ~]# Git config --global user.name "zeq"
配置 Git 使用邮箱
[root@Git-Git ~]# Git config --global user.email "chn@eqnice.com"
语法高亮
[root@Git-Git ~]# Git config --global color.ui true
查看配置
- [root@Git-Git ~]# Git config --list
- user.name=zeq
- user.email=chn@eqnice.com
- color.ui=true
- [root@Git ~]# cat .gitconfig
- [user]
- name = zeq
- email = chn@eqnice.com
- [color]
- ui = true
4.Git 初始化
初始化工作目录, 对已存在的目录或者对已存在的目录都可进行初始化
- mkdir git_data
- cd git_data/
初始化
Git init
查看工作区状态
Git status
隐藏文件介绍:
- branches # 分支目录
- config # 定义项目特有的配置选项
- description # 仅供 Git Web 程序使用
- HEAD # 指示当前的分支
- hooks # 包含 Git 钩子文件
- info # 包含一个全局排除文件(exclude 文件)
- objects # 存放所有数据内容, 有 info 和 pack 两个子文件夹
- refs # 存放指向数据 (分支) 的提交对象的指针
- index # 保存暂存区信息, 在执行 Git init 的时候, 这个文件还没有
4 .Git 常规使用
1. 创建数据 - 提交数据
2. Git 四种状态
3. Git 基础命令
- [root@Git git_data]# Git status
- # 位于分支 master
- # 初始提交
- 无文件要提交(创建 / 拷贝文件并使用 "git add" 建立跟踪)
- [root@Git git_data]# touch a b c
- [root@Git git_data]# Git status
- # 位于分支 master
- #
- # 初始提交
- #
- # 未跟踪的文件:
- # (使用 "git add <file>..." 以包含要提交的内容)
- #
- # a
- # b
- # c
提交为空, 但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
- [root@Git git_data]# Git add a
- [root@Git git_data]# Git status
- # 位于分支 master
- #
- # 初始提交
- #
- # 要提交的变更:
- # (使用 "git rm --cached <file>..." 撤出暂存区)
- #
- # 新文件: a
- #
- # 未跟踪的文件:
- # (使用 "git add <file>..." 以包含要提交的内容)
- #
- # b
- # c
- [root@Git git_data]# ll .Git/
总用量 20
drwxr-xr-x 2 root root 6 8 月 23 05:44 branches
-rw-r--r-- 1 root root 92 8 月 23 05:44 config
-rw-r--r-- 1 root root 73 8 月 23 05:44 description
-rw-r--r-- 1 root root 23 8 月 23 05:44 HEAD
drwxr-xr-x 2 root root 4096 8 月 23 05:44 hooks
-rw-r--r-- 1 root root 96 8 月 23 07:06 index # Git add a 把文件提交到了暂存区
drwxr-xr-x 2 root root 20 8 月 23 05:44 info
drwxr-xr-x 5 root root 37 8 月 23 07:06 objects
drwxr-xr-x 4 root root 29 8 月 23 05:44 refs
- [root@Git git_data]# Git add . # 使用 Git add . 或者 * 添加目录中所有改动过的文件
- [root@Git git_data]# Git status
- # 位于分支 master
- #
- # 初始提交
- #
- # 要提交的变更:
- # (使用 "git rm --cached <file>..." 撤出暂存区)
- #
- # 新文件: a
- # 新文件: b
- # 新文件: c
- [root@Git git_data]# Git rm --cached c
- rm 'c'
- [root@Git git_data]# ll
总用量 0
-rw-r--r-- 1 root root 0 8 月 23 07:05 a
-rw-r--r-- 1 root root 0 8 月 23 07:05 b
-rw-r--r-- 1 root root 0 8 月 23 07:05 c
- [root@Git git_data]# Git status
- # 位于分支 master
- #
- # 初始提交
- #
- # 要提交的变更:
- # (使用 "git rm --cached <file>..." 撤出暂存区)
- #
- # 新文件: a
- # 新文件: b
- #
- # 未跟踪的文件:
- # (使用 "git add <file>..." 以包含要提交的内容)
- #
- # c
删除文件
1. 先从暂存区撤回到工作区, 然后直接删除文件
- Git rm --cached c
- rm -f c
2. 直接从暂存区域同工作区域一同删除文件命令
- Git rm -f b
- [root@Git git_data]# Git commit -m "commit a" # 提交到本地仓库
- [master(根提交) b4017a8] commit a
- 1 file changed, 0 insertions(+), 0 deletions(-)
- create mode 100644 a
- [root@Git git_data]# Git status
- # 位于分支 master
无文件要提交, 干净的工作区
修改文件名称两种方法
- [root@Git git_data]# mv a a.txt
- [root@Git git_data]# Git status
- # 位于分支 master
- # 尚未暂存以备提交的变更:
- # (使用 "git add/rm <file>..." 更新要提交的内容)
- # (使用 "git checkout -- <file>..." 丢弃工作区的改动)
- #
- # 删除: a
- #
- # 未跟踪的文件:
- # (使用 "git add <file>..." 以包含要提交的内容)
- #
- # a.txt
修改尚未加入提交(使用 "git add" 和 / 或 "git commit -a")
- [root@Git git_data]# Git rm --cached a # 从暂存区删除 a 文件
- rm 'a'
- [root@Git git_data]# Git status
- # 位于分支 master
- # 要提交的变更:
- # (使用 "git reset HEAD <file>..." 撤出暂存区)
- #
- # 删除: a
- #
- # 未跟踪的文件:
- # (使用 "git add <file>..." 以包含要提交的内容)
- #
- # a.txt
- [root@Git git_data]# Git add a.txt
- [root@Git git_data]# Git status
- # 位于分支 master
- # 要提交的变更:
- # (使用 "git reset HEAD <file>..." 撤出暂存区)
- #
- # 重命名: a -> a.txt # 识别到 a 和 a.txt 相同为重命名
- [root@Git git_data]# Git commit -m "commit a.txt"
2. 直接用 Git 命令重命名
- [root@Git git_data]# Git mv a.txt a 把工作区域和暂存区域的文件同时修改文件名称
- [root@Git git_data]# Git status
- # 位于分支 master
- # 要提交的变更:
- # (使用 "git reset HEAD <file>..." 撤出暂存区)
- #
- # 重命名: a.txt -> a
- Git commit -m "rename a.txt a"
Git status 只能查看区域状态的不同, 不能查看文件内容的变化.
Git diff 查看内容的不同
- [root@Git git_data]# echo aaa> a
- [root@Git git_data]# Git diff a # 比对本地工作目录和暂存区文件的不同
- diff --Git a/a b/a
- index e69de29..72943a1 100644#
- --- a/a
- +++ b/a
- @@ -0,0 +1 @@
- +aaa
- [root@Git git_data]# Git add a # 提交 a 文件到暂存区域, 在用 Git diff 是相同的
- [root@Git git_data]# Git diff --cached a # 比对的是暂存区和本地仓库文件的不同处
- diff --Git a/a b/a
- index e69de29..72943a1 100644
- --- a/a
- +++ b/a
- @@ -0,0 +1 @@
- +aaa
- [root@Git git_data]# Git commit -m "modified a" # 提交后在比对则暂存区和本地仓库内容相同
- [master 4c57a60] modified a
- 1 file changed, 1 insertion(+)
- [root@Git git_data]# Git diff --cached a
- [root@Git git_data]#
- Git commit # 相当于虚拟机的镜像, 任何操作都被做了一次快照, 可恢复到任意一个位置
- [root@Git git_data]# Git log 查看历史的 Git commit 快照操作
- commit 4c57a605997f511149bfec53d9018b503e77f961 # 哈希唯一标识的字符串
- Author: lizhenya <lizhenya@qq.com> # 作者个人信息
- Date: Thu Aug 23 07:54:23 2018 +0800 # 时间
- modified a # -m 个人写的提交描述信息
- commit 56925321114eb9adf09b42a733a6f9f3edd9ad65
- Author: lizhenya <lizhenya@qq.com>
- Date: Thu Aug 23 07:39:41 2018 +0800
- rename a.txt a
- commit 7adfca06559ef7739dffdc11ecb7fb8800a9931a
- Author: lizhenya <lizhenya@qq.com>
- Date: Thu Aug 23 07:36:47 2018 +0800
- commit a.txt
- commit b4017a876cfed78425fe58e7ecbcd49199ed5a11
- Author: lizhenya <lizhenya@qq.com>
- Date: Thu Aug 23 07:22:29 2018 +0800
- [root@Git git_data]# Git log --oneline # 一行简单的显示 commit 信息
- 4c57a60 modified a
- 5692532 rename a.txt a
- 7adfca0 commit a.txt
- b4017a8 commit a
- [root@Git git_data]# Git log --oneline --decorate # 显示当前的指针指向哪里
- 4c57a60 (HEAD, master) modified a
- 5692532 rename a.txt a
- 7adfca0 commit a.txt
- b4017a8 commit a
- [root@Git git_data]# Git log -p # 显示具体内容的变化
- [root@Git git_data]# Git log -1 # 只显示 1 条内容
恢复历史数据
1. 只更改了当前目录
- [root@Git git_data]# echo "333">> a
- [root@Git git_data]# Git status
- # 位于分支 master
- # 尚未暂存以备提交的变更:
- # (使用 "git add <file>..." 更新要提交的内容)
- # (使用 "git checkout -- <file>..." 丢弃工作区的改动) # 看提示使用此命令覆盖工作区的改动
- #
- # 修改: a
- #
修改尚未加入提交(使用 "git add" 和 / 或 "git commit -a")
- [root@Git git_data]# Git checkout -- a # 从暂存区覆盖本地工作目录
- [root@Git git_data]# Git status
- # 位于分支 master
无文件要提交, 干净的工作区
- [root@Git git_data]# cat a
- aaa
2. 修改了本地目录且同时提交到了暂存区
- [root@Git git_data]# echo ccc>> a # 添加新内容
- [root@Git git_data]# Git add . # 提交到暂存区
- [root@Git git_data]# Git diff --cached #比对暂存区和本地仓库的内容
- diff --Git a/a b/a
- index 72943a1..959479a 100644
- --- a/a
- +++ b/a
- @@ -1 +1,2 @@
- aaa
- +ccc
- [root@Git git_data]# Git status
- # 位于分支 master
- # 要提交的变更:
- # (使用 "git reset HEAD <file>..." 撤出暂存区)
- #
- # 修改: a
- [root@Git git_data]# Git reset HEAD a # 本地仓库覆盖暂存区域
重置后撤出暂存区的变更:
- M a
- [root@Git git_data]# Git diff a
- diff --Git a/a b/a
- index 72943a1..959479a 100644
- --- a/a
- +++ b/a
- @@ -1 +1,2 @@
- aaa
- +ccc
- [root@Git git_data]# Git diff --cached a
- [root@Git git_data]#
3. 修改了工作目录后提交到了暂存区和本地仓库后进行数据恢复
- echo bbb>>a # 提交新的 bbb 文件到 a
- Git commit -m "add bbb"
- echo ccc>> a
- Git commit -am "add ccc" # 这时候发现改错代码了, 想还原某一次提交的文件快照
- [root@Git git_data]# Git log --oneline
- 59ba2a9 add ccc
- dbead4c add bbb
- 4c57a60 modified a
- 5692532 rename a.txt a
- 7adfca0 commit a.txt
- b4017a8 commit a
`Git 服务程序中有一个叫做 HEAD 的版本指针, 当用户申请还原数据时, 其实就是将 HEAD 指针指向到某个特定的提交
版本, 但是因为 Git 是分布式 版本控制系统, 为了避免历史记录冲突, 故使用了 SHA-1 计算出十六进制的哈希字串
来区分每个提交版本, 另外默认的 HEAD 版本指针会指向到最近的一次提交版本记录 `
[root@Git git_data]# Git reset --hard 4c57a60
HEAD 现在位于 4c57a60 modified a
` 刚刚的操作实际上就是改变了一下 HEAD 版本指针的位置, 就是你将 HEAD 指针放在那里, 那么你的当前工作版本就
会定位在那里, 要想把内容再还原到最新提交的版本, 先看查看下提交版本号 `
- [root@Git git_data]# cat a # 打开发现回退错了, 应该回退到 bbb 版本
- aaa
- [root@Git git_data]# Git log --oneline # 这时候查看 log 没有 commit bbb 的历史了
- 4c57a60 modified a
- 5692532 rename a.txt a
- 7adfca0 commit a.txt
- b4017a8 commit a
` 怎么搞得? 竟然没有了 add bbb 这个提交版本记录?
原因很简单, 因为我们当前的工作版本是历史的一个提交点, 这个历史提交点还没有发生过 add bbb 更新记录, 所
以当然就看不到了, 要是想 "还原到未来" 的历史更新点, 可以用 Git reflog 命令来查看所有的历史记录:`
- [root@Git git_data]# Git reflog # 使用 Git reflog 可查看总历史内容
- 4c57a60 HEAD@{
- 0
- }: reset: moving to 4c57a60
- 59ba2a9 HEAD@{
- 1
- }: commit: add ccc
- dbead4c HEAD@{
- 2
- }: commit: add bbb
- 4c57a60 HEAD@{
- 3
- }: commit: modified a
- 5692532 HEAD@{
- 4
- }: commit: rename a.txt a
- 7adfca0 HEAD@{
- 5
- }: commit: commit a.txt
- b4017a8 HEAD@{
- 6
- }: commit (initial): commit a
- [root@Git git_data]# Git reset --hard dbead4c # 然后使用 reset 回到 bbb 的版本内容下
HEAD 现在位于 dbead4c add bbb
- [root@Git git_data]# cat a
- aaa
- bbb
5. Git 分支
分支即是平行空间, 假设你在为某个手机系统研发拍照功能, 代码已经完成了 80%, 但如果将这不完整的代码直接
提交到 Git 仓库中, 又有可能影响到其他人的工作, 此时我们便可以在该软件的项目之上创建一个名叫 " 拍照功
能 " 的分支, 这种分支只会属于你自己, 而其他人看不到, 等代码编写完成后再与原来的项目主分支合并下即可, 这
样即能保证代码不丢失, 又不影响其他人的工作.
一般在实际的项目开发中, 我们要尽量保证 master 分支是非常稳定的, 仅用于发布新版本, 平时不要随便直接修
改里面的数据文件, 而工作的时候则可以新建不同的工作分支, 等到工作完成后在合并到 master 分支上面, 所以团
队的合作分支看起来会像上面图那样.
- [root@Git git_data]# Git log --oneline --decorate
- dbead4c (HEAD, master) add bbb # 默认分支指向你最后一次的提交 HEAD 头, 指针
- 4c57a60 modified a
- 5692532 rename a.txt a
- 7adfca0 commit a.txt
- b4017a8 commit a
HEAD 指针指向哪个分支, 说明你当前在哪个分支下工作 `
- [root@Git git_data]# Git branch testing # 新建 testing 分支
- [root@Git git_data]# Git branch
- * master # * 号在哪里就说明当前在哪个分支上入下图所示
- testing
- [root@Git git_data]# Git log --oneline --decorate # 通过命令查看分支指向
- dbead4c (HEAD, testing, master) add bbb
- 4c57a60 modified a
- 5692532 rename a.txt a
- 7adfca0 commit a.txt
- b4017a8 commit a
- [root@Git git_data]# Git checkout testing # 切换到 testing 分支, 对应的 HEAD 指针也指向了 testing
切换到分支'testing'
- [root@Git git_data]# Git branch
- master
- * testing
- [root@Git git_data]# touch test
- [root@Git git_data]# Git add .
- [root@Git git_data]# Git commit -m "commit test"
[root@Git git_data]# Git checkout master # 切换到 master 分支后指针指向到了 master
切换到分支'master'
- [root@Git git_data]# Git branch
- * master
- testing
- [root@Git git_data]# ll # 正常情况下是没有 test 文件的, 保证 master 分支是线上环境的
总用量 4
-rw-r--r-- 1 root root 8 8 月 23 08:42 a
- [root@Git git_data]# touch master
- [root@Git git_data]# Git add .
- [root@Git git_data]# Git commit -m "commit master"
合并分支
- [root@Git git_data]# Git merge testing # 提示输入描述信息 相当于 Git 的 - m 参数
- [root@Git git_data]# Git log --oneline --decorate
- 3258705 (HEAD, master) Merge branch 'testing'
- f5ae1d8 commit master
- ad4f25a (testing) commit test
- dbead4c add bbb
- 4c57a60 modified a
- 5692532 rename a.txt a
- 7adfca0 commit a.txt
- b4017a8 commit a
冲突合并
- [root@Git git_data]# echo "master">> a
- [root@Git git_data]# Git commit -am "modified a master"
- [root@Git git_data]# Git checkout testing
切换到分支'testing'
- [root@Git git_data]# Git branch
- master
- * testing
- [root@Git git_data]# cat a
- aaa
- bbb
- [root@Git git_data]# echo "testing">>a
- [root@Git git_data]# Git commit -am "modified a on testing branch"
- [root@Git git_data]# Git checkout master
- [root@Git git_data]# Git merge testing
自动合并 a
冲突(内容): 合并冲突于 a
自动合并失败, 修正冲突然后提交修正的结果.
- [root@Git git_data]# cat a # 冲突的文件自动标识到文件里, 手动更改冲突要保留的代码
- [root@Git git_data]# Git commit -am "merge testing to master" # 进行提交即可
- [root@Git git_data]# Git log --oneline --decorate
- bba413d (HEAD, master) merge testing to master
- 34d7a55 (testing) modified a on testing branch
- ec1a424 modified a master
- 3258705 Merge branch 'testing'
- f5ae1d8 commit master
- ad4f25a commit test
删除分支 - d 参数
[root@Git git_data]# Git branch -d testing
已删除分支 testing(曾为 34d7a55).
- [root@Git git_data]# Git branch
- * master
6.Git 标签使用
标签也是指向了一次 commit 提交, 是一个里程碑式的标签, 回滚打标签直接加标签号, 不需要加唯一字符串不好记
- [root@Git git_data]# Git tag -a v1.0 -m "aaa bbb master tesing version v1.0" # -a 指定标签名字 -m 指定说明文字
- [root@Git git_data]# Git tag
- v1.0
- [root@Git git_data]# Git tag -a v2.0 dbead4c -m "add bbb version v2.0" # 指定某一次的提交为标签
- [root@Git git_data]# Git show v1.0 # 查看 v1.0 的信息 Git show 加标签查看
- [root@Git git_data]# Git reset --hard v2.0 # 直接还原数据到 v2.0
HEAD 现在位于 dbead4c add bbb
[root@Git git_data]# ll
总用量 4
-rw-r--r-- 1 root root 8 8 月 23 11:26 a
-rw-r--r-- 1 root root 0 8 月 23 11:25 b
[root@Git git_data]# Git tag -d v2.0 # 删除标签 -d 参数
5. GitHub 使用
1. 什么是 GitHub
GitHub 顾名思义是一个 Git 版本库的托管服务, 是目前全球最大的软件仓库, 拥有上百万的开发者用户, 也是软件
开发和寻找资源的最佳途径, GitHub 不仅可以托管各种 Git 版本仓库, 还拥有了更美观的 Web 界面, 您的代码文件可
以被任何人克隆, 使得开发者为开源项贡献代码变得更加容易, 当然也可以付费购买私有库, 这样高性价比的私有
库真的是帮助到了很多团队和企业
2.GitHub 操作
, 注册用户
, 配置 SSH-key
, 创建项目
, 克隆项目到本地
, 推送新代码到 GitHub
1. 注册用户
访问 GitHub 网站
https://github.com/
点击注册
注册完成后添加新的项目
添加新项目之前要验证邮箱
2. 配置 SSH-key
添加一个密钥
Git 服务器创建秘钥
- [root@Git ~]# SSH-keygen
- Generating public/private rsa key pair.
- Enter file in which to save the key (/root/.SSH/id_rsa):
- Created directory '/root/.ssh'.
- Enter passphrase (empty for no passphrase):
- Enter same passphrase again:
- Your identification has been saved in /root/.SSH/id_rsa.
- Your public key has been saved in /root/.SSH/id_rsa.pub.
- The key fingerprint is:
- SHA256:n/V2kCiwwm2UfBsnQLm17eXUCBiBByyPbefmz5oQvfU root@GitLab
- The key's randomart image is:
- +---[RSA 2048]----+
- | o++o+ |
- | ..+o+ . |
- | ==++o.. o |
- | ..o==o=..+..|
- | o.So+.++o |
- | o oo*.o.. |
- | .o+ E .|
| ..o . . |
- | ooo |
- +----[SHA256]-----+
- [root@Git ~]# cat .SSH/id_rsa.pub
- SSH-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCmv4aEEEpbUyzv1r6SN0JqOfeyQ7sZZbXxWFv4xflIJeK/rl8cF7UYCzjLEvwJlrkIjKSs5uW1x0zWEcZFiv5tGCiO7DeMR6pKUAn7NzNjKiCcElCXiqHVew84iTbxX4MWKlbFoJYO9/wQ1NlrQfqcSgZwJTLKBMVoMXvTWPPGXf6AwdSp68guFwwGDIV8BiHZiy61bKiWYSVKSDP47Y7VUV/bdwGaxG7tAfalWVpe6xXXRtsj58sENyIWbRI7/9XWqs+eV+CgI74YjOanMvHnHFlfg0tb+MewRb4tFGVmroFBRsvfI3Sl2fez2zHG0qh3f34/0KF1kitlWkgcBJqN root@Git
3. 创建项目
4. 克隆项目到本地
http 方式克隆
[root@Git ~]# Git clone https://github.com/eqzhang/zeq.git
正克隆到'zeq'...
warning: 您似乎克隆了一个空版本库.
[root@Git ~]# ll
总用量 4
-rw-------. 1 root root 1271 9 月 3 17:37 anaconda-ks.cfg
drwxr-xr-x 3 root root 18 11 月 20 19:47 zeq
SSH 方式克隆
[root@Git ~]# Git clone Git@GitHub.com:eqzhang/zeq.Git
正克隆到'zeq'...
warning: 您似乎克隆了一个空版本库.
[root@Git ~]# ll
总用量 4
-rw-------. 1 root root 1271 9 月 3 17:37 anaconda-ks.cfg
drwxr-xr-x 3 root root 18 11 月 20 19:51 zeq
如果用其中一种方式克隆成功以后, 在用另一种方式克隆的话会报错(版本库已经存在), 这时候可以删除存在的仓库在执行克隆
5. 推送新代码到 GitHub
创建一个 index.HTML 的文件推送到 GitHub
- [root@Git ~]# cd zeq/
- [root@Git zeq]# echo 123> index.HTML
- [root@Git zeq]# ll
总用量 4
-rw-r--r-- 1 root root 4 11 月 20 19:54 index.HTML
- [root@Git zeq]# Git add .
- [root@Git zeq]# Git push -u origin master #Git push 推送本地仓库代码到远程仓库
- Counting objects: 3, done.
- Writing objects: 100% (3/3), 211 bytes | 0 bytes/s, done.
- Total 3 (delta 0), reused 0 (delta 0)
- remote:
- remote: Create a pull request for 'master' on GitHub by visiting:
- remote: https://github.com/eqzhang/zeq/pull/new/master
- remote:
- To Git@GitHub.com:eqzhang/zeq.Git
- * [new branch] master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master.
进入 GitHub 网页查看
[root@Git zeq]# Git pull origin # 拉取远程仓库最新代码, 然后进行上传
上面操作是本地没有仓库, 克隆的远程仓库
如果我本地有本地仓库, 我想把本地仓库的代码上传到我的远程仓库则需要进行关联远程仓库
[root@Git zeq]# Git remote add origin Git@GitHub.com:eqzhang/zeq.Git [root@Git zeq]# Git remote origin [root@Git zeq]# Git push -u origin master
如果已存在 origin 则用 rm 删除
[root@Git zeq]# Git remote add origin Git@GitHub.com:eqzhang/zeq.Git
fatal: 远程 origin 已经存在.
[root@Git zeq]# Git remote rm origin [root@Git zeq]# Git remote [root@Git zeq]#
来源: https://www.cnblogs.com/zeq912/p/9995656.html