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
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.安装
环境: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