git笔记

分布式版本控制系统:优点离线使用、分支管理

1 基本用法

1 安装与配置

yum install git

git config --global user.name "wuzuquan"

git config --global user.email "403621433@qq.com"

git config --global color.ui true

git config http.sslVerify "false" 解除文件上传限制

2、创建仓库

mkdir -p git/test

cd git/test

git init:初始化,目录下多了个.git目录

注意事项:版本控制只能跟着文本文件的改动;如果没有历史遗留问题,统一使用UTF-8编码;不要使用windows记事本

3、基本使用

git add -A 添加所有修改,包括新增

git commit -m "message" 提交到本地仓库

git status 显示当前仓库status

git diff readme.md 显示修改内容

4、版本回退

git log --pretty=oneline 显示所有版本日志

HEAD表示当前版本 HEAD ^ HEAD ^^ HEAD ~100

git reset --hard commitid 版本回退

git reflog 显示所有命令记录

head指向当前分支

5、工作区 版本库

TIM图片20180811100113.png

stage 暂存区,master为自动创建的第一个分支

add命令是把修改添加到暂存区,可以多次add

commit命令是把暂存区的所有内容提交到当前分支

6、撤销修改

git checkout -- readme.md #撤销工作区的修改,撤销回到版本库一样,一键还原

如果已经添加到暂存区,又做了修改,现在撤销修改就回到添加到暂存区后的状态

注意事项:一定要加 -- ,不然就到另一个分支了

git reset 可以把暂存区的内容撤销,重新回到工作区

git reset HEAD readme.md

二者配合起来用

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。

2 远程仓库

1、推到远程库

git remote rm origin

git remote add origin git@server-name:path/repo-name.git

git push -u origin master

此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

2、从远程库 克隆

$ git clone git@github.com:michaelliao/gitskills.git
Cloning into 'gitskills'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 3
Receiving objects: 100% (3/3), done.

3 分支管理

git checkout -b dev # 创建并切换到dev分支

git branch #查看当前分支

git add -A

git commit -m "dev branch test"

git checkout master # 切换到master分支

git merge dev #将dev分支内容合并到当前分支master

git branch -d dev # 删除dev分支

1、如何解决分支冲突

合并后提示冲突,git status命令查看哪些文件冲突

vim 修改冲突的文件

git add -A

git commit

git log --graph --pretty=oneline --abbrev-commit #查看分支合并情况

2、分支管理策略

master分支是非常稳定的,仅用于发布新版本,平时不能再上面干活

在dev分支干活,每个人可以有自己的分支

1.png

合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并

4 标签管理

git tag v1.0 默认打在当前分支最新的commit上

git tag 查看所有tag

git tag -d v1.0 删除标签

git show v1.0 查看tag 信息

git tag -a v0.8 -m "version0.8 released" 6f9ea49

git push origin v0.8 推送tag到远程仓库

git push origin :refs/tags/v0.8 删除远程仓库tag

git push origin --tags 推送所有

5 个性化配置

在根目录下建立.gitignore文件,提交到git,过滤掉不需要提交的文件类型

6 搭建git服务器

yum install autoconf

yum install zlib

yum install zlib-devel

yum remove git 删除旧版本git

wget https://github.com/git/git/archive/v2.18.0.tar.gz

tar -vxf git-2.18.0.tar.gz

make configure

./configure --prefix=/usr/local/git --with-iconv=/usr/local/libiconv

sudo make install install-doc install-html

sudo vim /etc/profile

在最后一行添加

export PATH=/usr/local/git/bin:$PATH

保存后使其立即生效

source /etc/profile
git --version

adduser testgit # 创建git账户

passwd testgit

vim /etc/ssh/sshd_config

1.RSAAuthentication yes

2.PubkeyAuthentication yes

3.AuthorizedKeysFile .ssh/authorized_keys

禁止testgit账户shell登录:

vim /etc/passwd
git:x:1001:1001:,,,:/home/git:/bin/bash

改为:git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

su testgit
mkdir .ssh
touch .ssh/authorized_keys
git init --bare test.git# 创建一个裸仓库

在客户端创建SSH密钥并上传

ssh-keygen -t rsa -C "403621433@qq.com"

该命令会产生两个文件: id_rsa对应私钥,id_rsa.pub对应公钥

将id_rsa.pub中的内容拷贝到服务器的authorized_keys文件

git init

git remote rm origin
git remote add origin testgit3@172.18.245.163:/home/testgit3/test.git

git push -u origin master

git remote -v #查看远程仓库信息

git push origin dev # 推送dev分支

git pull origin dev #拉分支

git branch --set-upstream-to=origin/dev dev #将远程分支与本地分支连接起来

git rebase

7、centos7搭建gitlab服务器

1. 安装依赖软件

yum -y install policycoreutils openssh-server openssh-clients postfix

2.设置postfix开机自启,并启动,postfix支持gitlab发信功能

systemctl enable postfix && systemctl start postfix

3、下载gitlab安装包

wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm

yum install policycoreutils-python

rpm -i gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm

4、修改gitlab配置文件制定服务器ip和自定义端口

vim /etc/gitlab/gitlab.rb

3.png

ps:注意这里设置的端口不能被占用,默认是8080端口,如果8080已经使用,请自定义其它端口,并在防火墙设置开放相对应得端口

5、启动gitlab

gitlab-ctl reconfigure

gitlab-ctl restart

netstat -lnp|grep 80 查看端口占用情况

ps 1328 查看进程详情

6、访问gitlab页面

初始账户: root 密码: 5iveL!fe

第一次进来修改密码

7、发信设置

vim /etc/gitlab/gitlab.rb

4.png

修改后执行gitlab-ctl reconfigure

测试邮件是否生效

gitlab-rails console

Notify.test_email('wuzuquan2@xiamenair.com', '邮件标题', '邮件正文').deliver_now

在卸载gitlab然后再次安装执行sudo gitlab-ctl reconfigure的时候往往会出现:ruby_block[supervise_redis_sleep] action run,会一直卡无法往下进行!

解决方案:

1、按住CTRL+C强制结束;

2、运行:sudo systemctl restart gitlab-runsvdir;

3、再次执行:sudo gitlab-ctl reconfigure

8、设置sshkeys

settings->ssh keys ,添加ssh 公钥

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容

  • 对于一个新的包括submodule的项目调用以下命令即可 或者 配置 首先是配置帐号信息 ssh -T git@g...
    brownfeng阅读 467评论 0 0
  • Git 是目前最流行的分布式版本控制系统之一。 版本控制指的是,记录每次版本变更的内容和时间等细节,保留各版本之间...
    神齐阅读 1,400评论 0 7
  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,631评论 9 163
  • GIT git init 初始化git仓库,会在目录下生成一个.git的隐藏文件,里面保存着本地库的版本管理信息 ...
    佛系跳伞运动员阅读 498评论 0 0
  • GIT分布式版本控制系统最佳实践 这篇文章来自于老男孩教育高级架构师班12期的徐亮偉同学。 首先感谢老男孩架构师班...
    meng_philip123阅读 3,394评论 4 36