git部署与github远程仓库

Git简介:

  • 开源的最先进的分布式版本控制系统,没有之一
  • 用以高效、高速的处理从很小到非常大的项目版本管理。

什么是版本控制系统:

  • 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统

什么是分布式版本控制系统:

  • 分布式版本控制系统(Distributed Version Control System,简称 DVCS), 在这类系统中,像 Git、Mercurial、Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。 这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。

Git的功能特性:

  1. 从服务器上克隆数据库(包括代码和版本信息)到单机上
  2. 在自己的机器上创建分支,修改代码
  3. 在单机上自己创建的分支上提交代码
  4. 在单机上合并分支
  5. 新建一个分支,把服务器上最新版的代码fetch下来,然后跟自己的主分支合并
  6. 生成补丁(patch),把自己的补丁发送给主开发者
  7. 看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过
  8. 一般开发者之间解决冲突的方法,开发者之间可以使用pull命令解决冲突,解决完冲突之后再向主开发者提交补丁

一、git部署

1.安装git,建立存放git代码的目录以及初始化

[root@server1 ~]# yum install -y  git
[root@server1 ~]# mkdir demo
[root@server1 ~]# cd demo/
[root@server1 demo]# git init
[root@server1 demo]# git status
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)

在这里插入图片描述
2. 创建一个文件,会提示你添加(add)

[root@server1 demo]# touch file1
[root@server1 demo]# echo westos > file1
[root@server1 demo]# git status 
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#	file1
nothing added to commit but untracked files present (use "git add" to track)
[root@server1 demo]# git status -s
?? file1         ##新添加的未跟踪的文件前面有??标志

在这里插入图片描述

  1. 把文件添加进去,实际上就是把文件修改添加到赞存区
[root@server1 demo]# git add file1
[root@server1 demo]# git status 
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#	new file:   file1
#
[root@server1 demo]# git status -s
A  file1         ##A表示已经添加到暂存区了

在这里插入图片描述
4. 提交更改,实际上就是把暂存区的所有内容提交到当前分支

[root@server1 demo]# git commit -m "add file1"

*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got 'root@server1.(none)')

##需要添加邮箱和用户名才能提交成功
[root@server1 demo]# git config --global user.email "759538490@qq.com"
[root@server1 demo]# git config --global user.name "hui"
[root@server1 demo]# git commit -m "add file1"
[master (root-commit) 9bb7f82] add file1
 1 file changed, 1 insertion(+)
 create mode 100644 file1
[root@server1 demo]# git status -s      ##提交成功后就没有文件显示,为空
[root@server1 demo]# 
  1. git status的状态显示分类
  • 新添加的未跟踪文件前面有 ?? 标记,
  • 新添加到暂存区中的文件前面有 A 标记,
  • 修改过的文件前面有 M 标记。
  • 出现在右边的 M 表示该文件被修改了但是还没放入暂存区,
  • 出现在靠左边的 M 表示该文件被修改了并放入了暂存区。
  • MM表示工作区被修改并提交到暂存区后又在工作区中被修改了,所以在暂存区和工作区都有该文件被修改了的记录
[root@server1 demo]# echo westos >> file1
[root@server1 demo]# git status 
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#	modified:   file1
#
no changes added to commit (use "git add" and/or "git commit -a")
[root@server1 demo]# git status -s
 M file1
[root@server1 demo]# git add file1
[root@server1 demo]# git status -s
M  file1
[root@server1 demo]# echo westos >> file1
[root@server1 demo]# git status -s
MM file1
[root@server1 demo]# git add file1
[root@server1 demo]# git status -s
M  file1
[root@server1 demo]# git commit -m "change file1"
[master d18d637] change file1
 1 file changed, 2 insertions(+)
[root@server1 demo]# git status -s
[root@server1 demo]# 

在这里插入图片描述

  1. 忽略文件
  • 一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。 通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。 在这种情况下,我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。
[root@server1 demo]# cd
[root@server1 ~]# l.
.         .bash_history  .bashrc  .gitconfig      .pki  .tcshrc
..        .bash_logout   .config  .local          .rnd  .viminfo
.ansible  .bash_profile  .cshrc   .mysql_history  .ssh
[root@server1 ~]# cp .bashrc demo/
[root@server1 ~]# cd demo/
[root@server1 demo]# git status -s
?? .bashrc

[root@server1 demo]# vim .gitignore
[root@server1 demo]# cat .gitignore 
.*
[root@server1 demo]# git status -s
[root@server1 demo]# l.
.  ..  .bashrc  .git  .gitignore
  1. 版本回退
  • 像这样,你不断对文件进行修改,然后不断提交修改到版本库里,Git也是一样,每当你觉得文件修改到一定程度的时候,就可以“保存一个快照”,这个快照在Git中被称为commit。一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit恢复,然后继续工作,而不是把几个月的工作成果全部丢失。

(1)git checkout – file

  • 以丢弃工作区的修改,就是让这个文件回到最近一次git commit或git add时的状态
[root@server1 demo]# echo westos >> file1
[root@server1 demo]# cat file1 
westos
westos
westos
westos
[root@server1 demo]# git checkout -- file1
[root@server1 demo]# cat file1 
westos
westos
westos
[root@server1 demo]# git status
# On branch master
nothing to commit, working directory clean

(2) git log命令显示从最近到最远的提交日志

[root@server1 demo]# git log   
commit d18d6373fdafec7ea956686e42feaa627bbafc17
Author: hui <759538490@qq.com>
Date:   Sun Mar 31 11:01:56 2019 +0800

    change file1

commit 9bb7f828d5d1795d51bc1d856d67217968474020
Author: hui <759538490@qq.com>
Date:   Sun Mar 31 10:38:20 2019 +0800

    add file1


[root@server1 demo]# echo westos > file1
[root@server1 demo]# cat file1 
westos
[root@server1 demo]# git add file1
[root@server1 demo]# git commit -m "v3"
[master ae89efc] v3
 1 file changed, 2 deletions(-)
[root@server1 demo]# git log
commit ae89efc06c5dac22f123c1091d293c557560f397
Author: hui <759538490@qq.com>
Date:   Sun Mar 31 11:09:48 2019 +0800

    v3

commit d18d6373fdafec7ea956686e42feaa627bbafc17
Author: hui <759538490@qq.com>
Date:   Sun Mar 31 11:01:56 2019 +0800

    change file1

commit 9bb7f828d5d1795d51bc1d856d67217968474020
Author: hui <759538490@qq.com>
Date:   Sun Mar 31 10:38:20 2019 +0800

    add file1

(3) git log --pretty=oneline 查看简略日志信息

[root@server1 demo]# git log --pretty=oneline
ae89efc06c5dac22f123c1091d293c557560f397 v3
d18d6373fdafec7ea956686e42feaa627bbafc17 change file1
9bb7f828d5d1795d51bc1d856d67217968474020 add file1

(4)git reflog 查看历史记录

[root@server1 demo]# git reflog
ae89efc HEAD@{0}: commit: v3
d18d637 HEAD@{1}: commit: change file1
9bb7f82 HEAD@{2}: commit (initial): add file1

(5)git reset --hard HEAD^

  • 上一个提交状态就是HEAD^,上上一个提交状态就是HEAD^^
[root@server1 demo]# git status -s
[root@server1 demo]# cat file1 
westos
[root@server1 demo]# git reset --hard HEAD^
HEAD is now at d18d637 change file1
[root@server1 demo]# cat file1 
westos
westos
westos
[root@server1 demo]# git log --pretty=oneline
d18d6373fdafec7ea956686e42feaa627bbafc17 change file1
9bb7f828d5d1795d51bc1d856d67217968474020 add file1

(5)git reset --hard ae89efc

  • 回退到指定提交状态
[root@server1 demo]# git reflog
d18d637 HEAD@{0}: reset: moving to HEAD^
ae89efc HEAD@{1}: commit: v3
d18d637 HEAD@{2}: commit: change file1
9bb7f82 HEAD@{3}: commit (initial): add file1

[root@server1 demo]# git reset --hard ae89efc
HEAD is now at ae89efc v3
[root@server1 demo]# cat file1 
westos

在这里插入图片描述

  1. 删除后恢复
  • 删除后没有提交,直接:git checkout – file即可
[root@server1 demo]# rm -f file1 
[root@server1 demo]# git checkout -- file1
[root@server1 demo]# ls
file1

在这里插入图片描述

  • 删除且提交后: git reset --hard 指定状态
[root@server1 demo]# rm -f file1
[root@server1 demo]# git rm file1
rm 'file1'
[root@server1 demo]# git commit -m "del file11"
[root@server1 demo]# git reflog
decbdf4 HEAD@{0}: commit: del file11
ae89efc HEAD@{1}: reset: moving to ae89efc      
d18d637 HEAD@{2}: reset: moving to HEAD^
ae89efc HEAD@{3}: commit: v3
d18d637 HEAD@{4}: commit: change file1
9bb7f82 HEAD@{5}: commit (initial): add file1
[root@server1 demo]# git reset --hard ae89efc      ##回到v3的状态
HEAD is now at ae89efc v3
[root@server1 demo]# cat file1 
westos

在这里插入图片描述

二、搭建github远程仓库

  • 为了能在任意 Git 项目上协作,你需要知道如何管理自己的远程仓库。 远程仓库是指托管在因特网或其他网络中的你的项目的版本库。
  1. 首先在www.github.com官网上注册一个账号,创建自己的仓库,只能是公有的,因为在github上创建私人是需要收费的

  2. 创建一个项目demo
    在这里插入图片描述
    在这里插入图片描述

  3. 以ssh方式上传代码或者获取代码,所以我们要将获取shell和远端之间的密钥

[root@server1 ~]# cd .ssh/
[root@server1 .ssh]# ls
authorized_keys  id_rsa  id_rsa.pub  known_hosts
[root@server1 .ssh]# cat id_rsa.pub     # 获取密钥后,将密钥填写在github中 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDa62NDWOTLCSs46alcoKwd7RRHm/vlQJAeWaDE2qJIpg0UqvIjhnjdAyUW8Bg6HuooT2jlRVdR8rucR/gzOQfcnhn9pEr/sCtVPwCvODmAynd71m0hD+HVONCjf3W0Ikbjg3qVFqSs65hzOUb7Yyz9r9/+7cYqYbYYCM3l7khyCtPHc8Jz2hIBTuz3ZG9/Uf68nb2vDQHf+bGEmHe8/+tTmqoWNyKViFj9d070vxaoBoOrCy/kIRAwchKWeKjjEA7XSoYbNdLL7j5HWFJxD0kKDjbQ4jJ32wxDoG4tGYgGDrX8bmC7Khbo0cnsHZRRuMhczcUSEE9ELyUwmXS4XZvH root@server1

在这里插入图片描述

  • 点击右上角用户—>setting—>ssh加密方式—->将在shell中获得的ssh密钥复制下来
    在这里插入图片描述
    在这里插入图片描述
  1. 推送本地库到远程仓库
[root@server1 ~]# cd demo/
[root@server1 demo]# git remote add origin git@github.com:hyg0827/demo.git

[root@server1 demo]# git remote -v         ##可以查看远程仓库
origin	git@github.com:hyg0827/demo.git (fetch)
origin	git@github.com:hyg0827/demo.git (push)

[root@server1 demo]# git push -u origin master   ##将本地库的所有内容推送到远程库上.
The authenticity of host 'github.com (13.229.188.59)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? yes 
  • 网页上就能出现了
    在这里插入图片描述
  • 对数据做更改(新建一个文件hui),再次上传
[root@server1 ~]# cd demo/
[root@server1 demo]# echo hello > hui
[root@server1 demo]# ls
file1  hui
[root@server1 demo]# git add hui
[root@server1 demo]# git commit -m "add hui"
[root@server1 demo]# git push -u origin master

在这里插入图片描述

  1. 克隆远程仓库到本地
  • 首先新建一个库git
    在这里插入图片描述
[root@server1 ~]# git clone git@github.com:hyg0827/git.git
[root@server1 ~]# ls
demo  git
[root@server1 ~]# cd git/
[root@server1 git]# ls
README.md
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值