Git详解

01-Git常用命令

https://github.com/huangyanpeng1108/Python.git

git config --local user.name xxx

git config --local user.email xxx@163.com

git init  初始化

git status  查看仓库状态

git add a.py   把新创建的文件从工作目录提交到了暂存区

    git add .   将所有文件提交到暂存区

git commit -m '提交信息',将暂存区的文件提交到版本库的分支。

git log,查看提交记录,即:历史版本记录

git reflog   查看回滚记录

git reset --hard  1e394d414c6440720161318cd8c53fcda00673ab  回滚到指定版本



stash:
stash用于将工作区发生变化的所有文件获取临时存储在“某个地方”,将工作区还原当前版本未操作前的状态;
stash还可以将临时存储在“某个地方”的文件再次拿回到工作区。
第一步:git add .
第二步:git stash   

git stash pop  将开发到一半的功能从“某个地方”再次拿会工作区继续开发

git stash list        查看“某个地方”存储的所有记录

git stash clear     清空“某个地方”

git stash pop       将第一个记录从“某个地方”重新拿到工作区(可能有冲突)

git stash apply     编号, 将指定编号记录从“某个地方”重新拿到工作区(可能有冲突) 

git stash drop      编号,删除指定编号的记录



branch称为分支:
默认仅有一个名为master的分支。一般开发新功能流程为:开发新功能时会在分支dev上进行,开发完毕后再合并到master分支

git branch dev   创建新分支,即:拷贝一份当前所在分支代码到新分支

git checkout dev   切换到dev分支

git checkout master   切换回master分支

git merge dev   将dev分支内容合并到master分支,先切换回master分支再进行

git branch                          查看所有分支

git branch -m 分支名称        创建并切换到指定分支

git branch -d 分支名称         删除分支

git merge 分支名称              将指定分支合并到当前分支



基于GitHub进行代码远程托管:

git remote add origin https://github.com/huangyanpeng1108   为地址起一个别名origin

git push origin master  将本地master分支内容以及版本信息推送到GitHub

git push origin dev  将本地dev分支内容以及版本信息推送到GitHub
View Code
 1 git config --local user.name xxx
 2 
 3 git config --local user.email xxx@163.com
 4 
 5 git init                  初始化
 6 
 7 git status                查看仓库状态
 8 
 9 git add a.py              把新创建的文件从工作目录提交到了暂存区
10 
11     git add .             将所有文件提交到暂存区

11 git rm --cached a.py 将文件从缓存区移回工作目录
12 13 git commit -m '提交信息' 将暂存区的文件提交到版本库的分支。 14 15 git log 查看提交记录,即:历史版本记录 16 17 git reflog 查看回滚记录,查看所有的commit历史记录 18 19 git reset --hard 1e394d414c6440720161318cd8c53fcda00673ab 回滚到指定版本 20
补充:
  rm -f a.py 删除文件a.py
  git rm -f a.py 同时从暂存区和工作目录删除a.py
  git mv a a.txt 将工作区和缓存区的a都同时改名为a.txt,后再进行一次commit
  git diff 文件名 将暂存区与本地工作目录作对比,得出有哪些改动
  git diff --cached 文件名 将暂存区与本地仓库做对比
  git log --oneline
  git log --oneline --decorate
  git log -p 显示出修改内容的变化
  git log -2 显示最近的2条记录
  git checkout -- a 撤回对本地工作目录a的修改,回退到修改前的状态(前提是还没有提交到缓存区,只改变了本地工作目录)
  git reset HEAD a 撤回对缓存区的修改,回退到修改前的状态(前提是修改已经提交到了缓存区,但本地仓库还没有改)
  

21 22 23 stash: 24 stash用于将工作区发生变化的所有文件获取临时存储在“某个地方”,将工作区还原当前版本未操作前的状态; 25 stash还可以将临时存储在“某个地方”的文件再次拿回到工作区。 26 第一步:git add . 27 第二步:git stash 28 29 git stash pop 将开发到一半的功能从“某个地方”再次拿会工作区继续开发 30 31 git stash list 查看“某个地方”存储的所有记录 32 33 git stash clear 清空“某个地方” 34 35 git stash pop 将第一个记录从“某个地方”重新拿到工作区(可能有冲突) 36 37 git stash apply 编号, 将指定编号记录从“某个地方”重新拿到工作区(可能有冲突) 38 39 git stash drop 编号,删除指定编号的记录 40 41 42 43 branch称为分支: 44 默认仅有一个名为master的分支。一般开发新功能流程为:开发新功能时会在分支dev上进行,开发完毕后再合并到master分支 45 46 git branch dev 创建新分支,即:拷贝一份当前所在分支代码到新分支 47 48 git checkout dev 切换到dev分支 49 50 git checkout master 切换回master分支 51 52 git merge dev 将dev分支内容合并到master分支,先切换回master分支再进行 53 54 git branch 查看所有分支 55 56 git branch -m 分支名称 创建并切换到指定分支 57 58 git branch -d 分支名称 删除分支 59 60 git merge 分支名称 将指定分支合并到当前分支 61 62 63 64 基于GitHub进行代码远程托管: 65 66 git remote add origin https://github.com/huangyanpeng1108/Python.git 为地址起一个别名origin 67 68 git push origin master 将本地master分支内容以及版本信息推送到GitHub 69 70 git push origin dev 将本地dev分支内容以及版本信息推送到GitHub
# 补充:

git log --pretty=oneline   查看提交日志

git checkout 'first.py'       当对文件做了修改,但没有提交的话,可以用checkout进行回滚

git relog   查看所有的操作记录

彻底删除文件:
1. rm first.py
2. git add first.py

恢复刚才删除的文件:
1. git reset HEAD first.py
2. git checkout  first.py

冲突:
1. more play.py
2. vim play.py
3. 比较不同 beyond compare 软件

场景:

在公司,新电脑第一次使用,需要将代码从GitHub中获取并继续开发,开发完事下班就下班回家。

  操作步骤:

git clone https://github.com/huangyanpeng1108/Python.git    将项目从GitHub中获取,默认获取到得只有master分支

git branch dev origin/dev     创建dev分支且和远程dev分支同步

git checkout dev              切换到dev分支

vim app01/views.py            继续开发新功能

git add .                     添加文件到版本库的暂存状态

git commit -m '公司开发功能1'   提交新功能到版本库的分支

git push origin dev           提交dev分支内容到远程GitHub托管仓库的dev分支

在家里,由于白天在公司已经开发一部分功能并提交到GitHub,家里电脑的代码还是昨晚的版本,所以需要从GitHub拉去最新代码,然后继续开发。

  操作步骤:

git checkout dev        切换到dev分支

git pull origin dev     从远程GitHub仓库获取dev分支最新内容,并合并到本地

vim app01/views.py      继续开发新功能

git add .               添加文件到版本库的暂存状态

git commit -m '家里开发功能1'   提交新功能到版本库的分支

在公司,由于昨天晚上在家已经开发了一部分功能,在公司需要先把昨晚开发的功能从GitHub中拉取,并继续开发。

  操作步骤:

 1 git checkout dev       切换到dev分支
 2 
 3 git fetch origin dev   从GitHub仓库获取dev分支最新内容到版本库的分支
 4 
 5 git merge origin/dev   将版本库的分支内容合并到工作区
 6 
 7 vim app01/views.py     继续开发新功能
 8 
 9 git add .              添加文件到版本库的暂存状态
10 
11 git commit -m 'xxxxxxxxxxx'   提交新功能到版本库的分支

02-Git的安装及GitHub的使用

#在本地生成一对sskey

ssh-keygen -t rsa

ll /root /.ssh/

# 查看公钥
cat /root/.ssh/id_rsa.pub

03-GitLab的使用

1.安装

官网:https://about.gitlab.com

环境:CentOS 7系统,虚拟机VMware,2G内存;

生产环境:建议配置4G内存,放在独立的服务器上,防止端口冲突。

安装方式一:

安装方式二:

建议安装的版本:10.2.2

建议到清华大学开源软件镜像站去下载软件包

放在本地 /usr/local/src/下:

cd /usr/local/src/

# 上传本地下载好的安装包
rz

安装

# 执行命令

rpm -ivh gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm

更改默认配置文件

vim /etc/gitlab/gitlab.rb

# 更改的地方
external_url    "http://10.0.0.11"

执行配置文件

# 只要更改了配置文件,就要执行,对配置文件进行重新配置

gitlab-ctl  reconfigure

查看服务状态

# 查看服务状态

gitlab-ctl status

# 重新启动

gitlab-ctl restart

 2.服务构成

3.GitLab的常用命令

# 对服务进行重新配置

gitlab-ctl reconfigure

# 重启

gitlab-ctl restart

# 启动,可以加上对应的服务,不加则表示对所有服务进行重启

gitlab-ctl start

# 停止,同上

gitlab-ctl stop

# 查看服务状态

gitlab-ctl status

# 查看所有服务的日志

gitlab-ctl tail

# 各项服务的日志目录

ll /var/log/gitlab/

# 查看gitlab的数据

cd /var/opt/gitlab/gitlab.rb

# gitlab的默认备份数据都在 backups里

# gitlab程序本身安装在了 /opt/gitlab 下

4.GitLab的系统设置

首先,建议,要在管理区域、系统设置里,关闭注册用户功能。

定制登录界面:

在设置里,选项Appearance(外观),进行更改。(导航,标题,LOGO,描述)

5.GitLab的仓库管理

  创建Group,设置 Group path,Group name与路径相同。设置Visibility Level(权限):默认选择 Private(私有的,Internal(内部的),Public(公共的)

6.GitLab的备份管理

gitlab进行备份将会创建一个包含所有库和附件的归档文件。对备份的恢复只能恢复到与备份时的gitlab相同的版本。将gitlab迁移到另一台服务器上的最佳方法就是通过备份和还原。

备份文件将保存在配置文件中定义的backup_path中,文件名为TIMESTAMP_gitlab_backup.tar,TIMESTAMP为备份时的时间戳。TIMESTAMP的格式为:EPOCH_YYYY_MM_DD_Gitlab-version

如果自定义备份目录需要赋予git权限.

在配置文件/etc/gitlab/gitlab.rb 里加入

# 备份文件保留路径

gitlab_rails['backup_path'] = '/data/backup/gitlab'

# 备份保留的时间(以秒为单位,这个是七天默认值)

gitlab_rails['backup_keep_time'] = 604800      

执行

# 完成后执行
gitlab-ctl reconfigure

不报错,以下两步可以不执行:
# 创建目录
mkdir /data/backup/gitlab

# 如果自定义备份目录需要赋予git权限
chown -R git.git /data/backup/gitlab

执行备份,生成一次备份

# 生成备份文件的命令

gitlab-rake gitlab:backup:create

# 检查生成的备份文件
[root@node2 ~]# ll /var/opt/gitlab/backups/

total 272

-rw------- 1 git git 276480 Dec  9 17:24 1512811475_2017_12_09_10.2.2_gitlab_backup.tar

定时备份

在定时任务Crontab里添加:

0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1

注:环境变量CRON=1的作用是如果没有任何错误发生时, 抑制备份脚本的所有进度输出。

7.数据恢复

只能还原到与备份文件相同的gitlab版本。

执行恢复操作时,需要gitlab处于运行状态,备份文件位于gitlab_rails['backup_path']

[root@node2 ~]# ll /var/opt/gitlab/backups/
total 272
-rw------- 1 git git 276480 Dec  9 17:24 1512811475_2017_12_09_10.2.2_gitlab_backup.tar

# 停止连接到数据库的进程(也就是停止数据写入服务),但是保持GitLab是运行的。

[root@node2 ~]# gitlab-ctl stop unicorn
ok: down: unicorn: 0s, normally up

[root@node2 ~]# gitlab-ctl stop sidekiq
ok: down: sidekiq: 0s, normally up

确认:
[root@node2 ~]# gitlab-ctl status

接下我们进行恢复,指定时间戳你要从那个备份恢复:

# 执行恢复命令

[root@node2 ~]# gitlab-rake  gitlab:backup:restore BACKUP=1512811475_2017_12_09_10.2.2

注:1512811475_2017_12_09_10.2.2  是 备份文件名的数字部分

一路yes

# 完成后重启GitLab服务

[root@node2 ~]# gitlab-ctl  restart

# 检查GitLab的服务

[root@node2 ~]# gitlab-rake  gitlab:check SANITIZE=true
原文地址:https://www.cnblogs.com/pgxpython/p/9929759.html