前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >git 基础架构搭建

git 基础架构搭建

作者头像
老七Linux
发布2018-05-31 10:31:33
4240
发布2018-05-31 10:31:33
举报
一、初识

SVN与GIT的区别:(svn是基于集中式的,git 是基于分布式的)

集中式和分布式的区别:

集中式版本控制系统:版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。集中式版本控制系统最大的毛病就是必须联网才能工作。

mark
mark

分布式版本控制系统:分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

mark
mark

为了方便“交换”大家的修改,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但没有它大家也一样干活,只是交换修改不方便而已。

分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。

二、单机上使用git
代码语言:javascript
复制
yum install -y git

mkdir /data/gitroot

cd /data/gitroot

git init   //初始化仓库

echo -e “123\naaa\n456\nbbb” > 1.txt       //创建一个新文件

git add 1.txt       //把1.txt添加到仓库

git commit -m “add new file 1.txt”      //add完了必须要commit才算真正把文件提交到git仓库里
 再次更改1.txt

git status         //查看当前仓库中的状态,比如是否有改动的文件

git diff 1.txt     //可以对比1.txt本次修改了什么内容,相比较仓库里面的版本
2.1 版本回退

多更改几次1.txt,然后add,commit

代码语言:javascript
复制
git log     //查看所有提交记录

[[email protected]01 sbin]# git log
commit 088ab9f30e6fc5a3c377678e54c20a50fd3f5ad3
Author: zhdy <714997134@qq.com>
Date:   Tue Oct 24 14:40:28 2017 +0800

    add 1.txt

commit e8e8140493a387a145f6f406ef68b459fd35db93
Author: zhdy <714997134@qq.com>
Date:   Tue Oct 24 14:30:58 2017 +0800

    add 1.txt agin

commit 9cbe55f519f3d2fb36c3518b4d369109c2be2787
Author: zhdy <714997134@qq.com>
Date:   Tue Oct 24 14:28:08 2017 +0800

    add 1.txt

如上的邮箱和用户名是在 /root/.gitconfig    里面去定义的~

git log --pretty=oneline        //一行显示

[[email protected]01 sbin]# git log --pretty=oneline
088ab9f30e6fc5a3c377678e54c20a50fd3f5ad3 add 1.txt
e8e8140493a387a145f6f406ef68b459fd35db93 add 1.txt agin
9cbe55f519f3d2fb36c3518b4d369109c2be2787 add 1.txt
从下往上是最早到最新的各个版本!

git reset --hard f7c8e9     //回退版本,其中后面跟的字符串是简写
 撤销修改

rm -f 1.txt     //不小心删除了1.txt

git checkout -- 1.txt   //恢复1.txt   如果1.txt文件修改,add后但没有commit,再想回退到上一次提交的状态,可以使

git reset HEAD 1.txt    再执行  git checkout -- 1.txt

git reflog  //查看所有历史版本
2.2 删除文件
代码语言:javascript
复制
git rm 1.txt 

git commit -m "rm 1.txt"

再次恢复下:

git log --pretty=oneline

git reset --hard b71c259f0

ls      //就可以看到删除的文件了
三、远程仓库搭建配置
  • 首先到 https://github.com 注册一个账号,创建自己的git,点repositories 再点new
  • 名字自定义,比如叫studygit 选择public 点 create repository
mark
mark
mark
mark
  • 添加key:右上角点自己头像,选择settings,左侧选择SSH and GPG keys
mark
mark
  • 左侧点New SSH key,把linux机器上的~/.ssh/id_rsa.pub内容粘贴到这里

linux上面操作: ssh-keygen //生成一个密钥

mark
mark
  • 把本地仓库推送到远程仓库 git remote add origin [email protected]:aminglinux/studygit.git //这一步是在远程创建一个新的仓库studygit,名字尽量和本地的一致

linux端 做些操作:(根据提示,去操作)

mark
mark
代码语言:javascript
复制
[root@zhdy-01 gitroot]# cd /home

[root@zhdy-01 home]# mkdir zhdya

[root@zhdy-01 home]# ls
mysql  php-fpm  zhdy  zhdya

[root@zhdy-01 home]# cd zhdya/

[root@zhdy-01 zhdya]# ls

[root@zhdy-01 zhdya]# echo "# zhdya" >> README.md

[root@zhdy-01 zhdya]# git init
初始化空的 Git 版本库于 /home/zhdya/.git/

[root@zhdy-01 zhdya]# git add README.md

[root@zhdy-01 zhdya]# git commit -m "add README.md"
[master(根提交) 68cb217] add README.md
 1 file changed, 1 insertion(+)
 create mode 100644 README.md

[root@zhdy-01 zhdya]# git remote add origin [email protected]:zhangduanya/zhdya.git

[root@zhdy-01 zhdya]# git push -u origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 219 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@github.com:zhangduanya/zhdya.git
 * [new branch]      master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。
  • git push -u origin master //然后把本地的studygit仓库推送到远程的studygit 下一次再推送,就可以直接 git push

来个小练手:

代码语言:javascript
复制
[root@zhdy-01 zhdya]# vim zhdya.txt

[root@zhdy-01 zhdya]# git add zhdya.txt

[root@zhdy-01 zhdya]# git commit -m "add zhdya.txt"
[master 275c8e9] add zhdya.txt
 1 file changed, 1 insertion(+)
 create mode 100644 zhdya.txt
 
[root@zhdy-01 zhdya]# git push
Counting objects: 4, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 327 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@github.com:zhangduanya/zhdya.git
   68cb217..275c8e9  master -> master
mark
mark
四、克隆远程仓库

在早些时间,创建了一个其它仓库,今天我就来把它克隆到本地。

找到自己在git上的仓库。

mark
mark
代码语言:javascript
复制
[[email protected]-01 zzz]# git clone [email protected]:zhangduanya/zhdy.git
正克隆到 'zhdy'...
remote: Counting objects: 17, done.
remote: Total 17 (delta 0), reused 0 (delta 0), pack-reused 17
接收对象中: 100% (17/17), done.
处理 delta 中: 100% (2/2), done.

当然,如果你没有上传公钥到服务器其实也是可以克隆的,因为我这边设置的仓库是public开放的!

代码语言:javascript
复制
[root@zhdy-01 zzz]# ls
zhdy
[root@zhdy-01 zzz]# cd zhdy/
[root@zhdy-01 zhdy]# ls
h170605.md  h170606.md  README.md

当然我们也可以在这个仓库去创建些文件并上传到远端。

代码语言:javascript
复制
[root@zhdy-01 zhdy]# vim today.txt

[root@zhdy-01 zhdy]# git add today.txt

[root@zhdy-01 zhdy]# git commit -m "add today.txt"
[master 5dad81e] add today.txt
 1 file changed, 1 insertion(+)
 create mode 100644 today.txt
 
[root@zhdy-01 zhdy]# git push
Counting objects: 4, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 350 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To git@github.com:zhangduanya/zhdy.git
   15d0e5f..5dad81e  master -> master
mark
mark

如果有份资料在服务端其它同事更新了,我们的客户端怎么去更新呢?

代码语言:javascript
复制
git pull

即可!!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016/10/24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、初识
  • 二、单机上使用git
    • 2.1 版本回退
      • 2.2 删除文件
      • 三、远程仓库搭建配置
      • 四、克隆远程仓库
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档