Git 常用命令
虚拟机基本配置
git 基本指令
# 在 centos7 环境下查看系统版本
cat /etc/redhat-release
# (1)安装 git
yum install -y git
# windows安装地址:https://git-scm.com/download/win
# (2)查看 git 版本
git --version
# (3)查看配置选项
git config
# (4)配置 git 全局用户信息
git config --global user.name <用户名>
git config --global user.email <用户邮箱>
# (5)查看是否配置成功
# 方式一
ll .gitconfig
cat .gitconfig
# 方式二
git config --list
# (6)git 仓库初始化(可对空文件夹/仓库进行初始化)
git init
# (7)查看仓库状态
git status
# (8)将工作目录的指定文件上传到暂存区域
git add <文件名>
# (9)将工作目录的所有文件上传到暂存区域
git add .
# (10)将暂存区域的指定文件上传到工作目录
git rm --cached <文件名>
# (11)将工作目录的指定文件删除
# 结合命令(9)可实现将指定文件从暂存区域和工作目录同时删除
rm -f <文件名>
# (12)将指定文件从暂存区域和工作目录同时删除
git rm -f <文件名>
# (13)将文件从暂存区域上传至本地仓库
# 此时相当于将暂存区域中的文件同时在工作目录、暂存区域和本地仓库中保存了一个副本
# 出现 “nothing to commit, working directory clean” 表示工作目录、暂存区域和本地仓库三个区域的内容一致
git commit -m "引号中添加本次提交的描述信息"
# (14)将指定文件从暂存区域和工作目录同时进行重命名
git mv <原文件名> <新文件名>
git commit -m "rename <原文件名> to <新文件名>"
# (15)查看文件具体改动信息(比较工作目录和暂存区域中文件的差异)
git diff <文件名>
# (16)查看文件具体改动信息(比较暂存区域和本地仓库中文件的差异)
git diff --cached <文件名>
# (17)查看 “git commit” 历史记录(回滚后的记录不显示,需要使用命令(25))
git log
# (18)查看 “git commit” 历史记录(简洁版)
git log --oneline
# (19)查看 “git commit” 历史记录(简洁版 + 分支信息)
git log --oneline --decorate
# (20)指定查看多少条 “git commit” 历史记录
git log -<要显示的数量>
# e.g. git log -1 --oneline
# (21)查看 “git commit” 历史记录(完整版)
git log -p
# (22)将工作目录已管理的某个版本的指定文件覆盖工作目录未管理的文件(修改过的文件)(回滚操作 -- 撤销修改)
git checkout -- <文件名>
# (23)将本地仓库的文件覆盖暂存区域的文件,再结合命令(22)(回滚操作)
git reset HEAD <文件名>
# (24)回滚至指定的 commit 版本
git reset --hard <commit ID值> # 本地仓库回滚至工作目录的已管理的某个版本
git reset --soft <commit ID值> # 本地仓库回滚至暂存区域的某个版本
git reset --mix <commit ID值> # 本地仓库回滚至工作目录的未管理的某个版本
# (25)查看本地仓库中所有执行过 commit 的历史记录
git reflog
# (26)创建分支
git branch <分支名>
# (27)查看分支
git branch
# (28)切换分支
git checkout <分支名>
# (29)合并分支(要先切换到要合并到的目标分支下)
git merge <要被合并的分支>
# (30)删除分支
git branch -d <分支名>
# (31)对当前 commit 打上标签
git tag -a <版本名,e.g. v1.0>
# (32)对指定 commit 打上标签
git tag -a <标签号,e.g. v1.0> <指定的 commit ID>
# (33)列出所有标签
git tag
# (34)查看具体标签的具体信息
git show <要查看的标签号>
# (35)根据标签号切换 commit 版本
git reset --hard <标签号>
# (36)删除标签
git tag -d <标签号>
git 配置 github(其他 gitee 等远程仓库操作类似)
# (37)添加 github 远程仓库
git remote add origin <ssh地址>
# (38)查看远程仓库
git remote
# (39)生成 ssh 密钥
ssh-keygen -t rsa (加三次回车)
# (40)查看是否生成 ssh 密钥
ll /root/.ssh/
# (41)输出并复制 ssh 公钥至 github 中
cat /root/.ssh/id_rsa.pub
# (42)复制 ssh 公钥至 github 后,将本地仓库与远程仓库进行连接
git push -u origin master
# (43)通过 ssh-clone 将 github 仓库代码下载到本地(需要将该电脑先与目标 github 账户进行 ssh 认证)
cd /opt/
git clone <ssh 下载链接>(内部已实现 git remote add origin <ssh地址> )
# (44)将修改同步至 github 远程仓库
git add <修改文件>
git commit -m "描述修改内容"
git push -u <仓库名> <分支名>
# (45)将 github 远程仓库拉到本地,并将修改后的分支进行合并
git pull <仓库名> <分支名>
# 等价于依次执行以下两条命令
# git fetch
# git merge <仓库名>/<分支名>
git 配置 gitlab
# (46)centos7 安装 gitlab(建议 10.2.2 版本)
yum install -y curl policycoreutils-python openssh-server
cd /usr/local/src/
rz (使用 XShell ssh 软件,使用 rz 命令选择 RPM 安装包)
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')
# ll /etc/gitlab/gitlab.rb (配置文件路径)
gitlab-ctl reconfigure (更新配置)(第一次时间会比较久)
gitlab-ctl restart (配置完成后将所有服务重新启动)
# gitlab-ctl restart <服务名> (将指定服务重新启动)
# gitlab-ctl start 和 gitlab-ctl stop 命令参考 restart 命令
gitlab-ctl status (查看服务启动状态)
# 检查完成后,在浏览器中输入 10.0.0.11
# 默认账户是 root,第一次访问需要修改密码,至少八位
# gitlab tail (查看 gitlab 所有服务的日志)
# ll /var/log/gitlab/ (日志存放路径)
# ll /var/opt/gitlab/ (数据存放目录)
# ll /var/opt/gitlab/git-data/ (仓库存放目录)
# ll /var/opt/gitlab/backups/ (默认备份数据存放路径)
# ll /opt/gitlab/ (安装完 gitlab 后程序代码存放的路径)
# (47)配置 gitlab 公钥
# ll ~/.ssh/ (查看是否已存在公钥,存在的话直接复制即可)
cat .ssh/id_rsa.pub (将输出的公钥复制,配置到 gitlab 上)
# (48)将本地仓库与远程仓库 gitlab 进行连接
cd <本地仓库> (e.g. cd git_test)
git remote add <仓库名> <gitlab ssh 地址>
# git remote (查看远程仓库是否添加成功)
# (49)将本地仓库推到远程仓库 gitlab 上
git push -u <仓库名> <分支名> (git push -u gitlab master)(第一次推送需要输入 yes)
# (50)将远程仓库的文件下载至另一台电脑本地仓库
ssh-keygen -t rsa
ll ~/.ssh/
cat ~/.ssh/id_rsa.pub (将输出的公钥复制,配置到 gitlab 上)
git clone <gitlab ssh 地址> (前提要安装git:yum -y install git)
git remote (执行 git clone 命令后默认会自动添加一个远程仓库 origin)
git config --global user.name <用户名>
git config --global user.email <用户邮箱>
# 测试是否与远程仓库 gitlab 连接成功
git branch dev (创建 dev 新分支)
git checkout dev (切换分支)
touch dev (创建文件)
git add .
git commit -m "commit dev on dev branch"
git push -u <仓库名> <分支名> (推送分支)
# (51)gitlab 备份管理
# 配置文件最后加入
vim /etc/gitlab/gitlab.rb
gitlab_rails['backup_path'] = '/data/backup/gitlab' # 备份保存路径
gitlab_rails['backup_keep_time'] = 604800 # 备份保留的时间(以秒为单位,默认为七天),
# 更新配置文件
gitlab-ctl reconfigure
# 如果自定义备份目录需要赋予 git 权限
cd <本地仓库> (cd git_test)
mkdir /data/backup/gitlab
chown -R git.git /data/backup/gitlab
/usr/bin/gitlab-rake gitlab:backup:create # 手动执行备份
ll /data/backup/gitlab # 查看是否备份成功
# 若要设置为定时备份任务,在 Crontab 中加入
# 为了安全起见,需要写脚本检测是否执行定时备份任务
# 0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
# (52)利用备份数据恢复 gitlab 数据
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
# 升级 gitlab 版本(一般不建议升级)
# gitlab-ctl stop nginx
# rpm -uvh gitlab-ce-<版本号>.x86_64.rpm
# gitlab-ctl reconfigure # 更新配置文件
gitlab-ctl status # 确认服务是否停止
gitlab-rake gitlab:backup:restore BACKUP=<备份数据中只带数字部分的名称>
# gitlab-rake gitlab:backup:restore BACKUP=1693310383_2023_08_29_10.2.2
# 数据恢复中输入两次 yes
gitlab-ctl restart
gitlab-ctl status # 确认服务是否全部重新启动