Git 安装使用

# Git 安装使用

系统:CentOS Linux release 7.6 (Core)
Git版本:2.25.4

# Git 常用命令

Git 常用命令

# 初始化当前目录
git init

# 新建一个目录,将其初始化为Git代码库
$ git init [project-name]

# 显示当前的Git配置
git config --list

# 编辑Git配置文件
git config -e [--global]

# 设置提交代码时的用户信息 --global 配置全局
git config [--global] user.name "[name]"
git config [--global] user.email "[email address]"

# 下载远程仓库的所有变动
git fetch [remote]

# 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
git reset --hard [commit id]

# 合并指定分支到当前分支
git merge [branch]

# 退出合并状态
git merge --abort

# 删除分支
git branch -d [branch-name]

# 删除远程分支
git push origin --delete [branch-name]
git branch -dr [remote/branch]

# 添加当前目录的所有文件到暂存区
git add .

# 提交暂存区到仓库区
git commit -m [message]

# 上传本地指定分支到远程仓库
git push [remote] [branch]

# 回退到上个版本
git reset --hard HEAD^

# 回退到前3次提交之前,以此类推,回退到n次提交之前
git reset --hard HEAD~3

# 退到/进到 指定commit的sha码
git reset --hard commit_id

# 强推到远程
git push origin HEAD --force

# 拉去远程库所有分支信息
git fetch --all

# git 统计项目某个时间点后文件变更次数
git --no-pager log --format=format:'%h' --no-merges --since 2021-01-29 | \
awk '{system(" git --no-pager diff  --stat-name-width=300 --name-only "$1" "$1"~") }'| \
awk '{fs[$0]+=1} END{for(f in fs) printf("%d\t%s\r\n",fs[f],f) }' | sort -k 2

# 强制更新本地tags
git fetch --tags -f

# Linux 下安装 Git

# Yum 快速安装

# 1、在Linux上使用yum安装Git
# 使用yum安装简单快捷,但是git版本较低

yum -y install git

# 2、查看Git
git --version

# 输出当前版本 git version 1.8.3.1
# 如果想要安装当前git最新版本,可以使用第二种方法

# 手动下载 Git 最新安装包

Git 下载地址 (opens new window)

# 下载可以直接在github上下载 tar.gz 安装包 也可以使用 weget 命令下载

# 1 Github手动下载安装包 下载完成后放到linux服务上

# 2 weget下载命令 根据自己选择的版本
wget https://github.com/git/git/archive/v2.25.4.tar.gz

# 安装包下载完成后 解压
tar -zxvf v2.25.4.tar.gz

# 解压完成后进入目录
cd git-2.25.4

# 安装git相关依赖
yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

# 编译Git
make prefix=/usr/local/git all

# 安装git至/usr/local/git路径
make prefix=/usr/local/git install

# 配置环境变量
vi /etc/profile
# 在底部加上如下
export PATH=$PATH:/usr/local/git/bin
# 或者执行命令添加环境变量
echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/profile

# 刷新环境变量
source /etc/profile

# 设置软链接
ln -s /usr/local/bin/git /usr/bin/git

# 安装完成 查看git版本
git --version
# git version 2.25.4
执行脚本自动安装git

在执行脚本之前需先检查是否已安装git,若已安装则需先卸载之前安装,再执行此脚本

echo '下载'
wget https://github.com/git/git/archive/v2.25.4.tar.gz

echo '解压'
tar -zxvf v2.25.4.tar.gz

echo '进入目录'
cd git-2.25.4

echo '安装依赖'
yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

echo '创建安装目录'
mkdir /usr/local/git

echo '执行编译'
make prefix=/usr/local/git all

echo '设置安装路径'
make prefix=/usr/local/git install

echo '配置环境变量'
echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/profile

echo '删除旧链接'
rm -rf /usr/bin/git

echo '刷新环境变量'
source /etc/profile

echo '设置软链接'
ln -s /usr/local/bin/git /usr/bin/git

echo '查看版本'
git --version

# Windows 下安装 Git

# 安装下载

Git 官网安装包下载 (opens new window)

# 配置 ssh

# 生成git密钥
ssh-keygen -t rsa -C "你在 GitLab 上的邮箱地址"

# 进入秘钥存放目录
cd ~/.ssh/
cat id_rsa.pub # 查看公钥 并复制

# 复制公钥到 gitlab 的 个人资料设置 -> SSH密钥
# 将公钥添加到 gitlab 中,即可在shell中使用ssh链接拉取gitlab代码

# 配置多个 ssh-key

  1. 按照上述生成密钥的步骤,生成密钥一

    # 生成密钥
    ssh-keygen -t rsa -C "xxx@163.com"
    
  2. 在生成过程中,设置密钥文件名:

    # 在此步骤配置密钥文件名:
    Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa):gitee_rsa
    # gitee_rsa(此处可以设置为随意文件名)
    
    后两步可不配置
    
  3. 配置 config

    进入 ~/.ssh/ 目录,如无 config 文件,则新增(vim config);有,则修改(vi config)

    # gitee
    Host gitee.com 							         # 域名
    Port 22                              # 端口号,默认为22
    HostName gitee.com                   # 主机名(建议与 Host 一致)
    PreferredAuthentications publickey	 # 公钥
    IdentityFile ~/.ssh/gitee_rsa	       # gitee_rsa 为自定义的密钥文件名(即第二步设置的文件名)
    User xiaoc													 # 登录名(即对应)
    
    # github
    Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/github_rsa
    User xiaoc
    
    # gitlab
    ... # 同上
    
    
  4. 在对应 Git 仓库设置中添加对应 ssh key 即可

# git 删除提交历史

git checkout --orphan latest_branch

git add -A

git commit -am "commit message"

git branch -D master

git branch -m master

git push -f origin master

# 常见问题

1、 Git 解决 would clobber existing tag 问题

* branch            master     -> FETCH_HEAD
! [rejected]        latest     -> latest  (would clobber existing tag)

# 强制更新本地tags
git fetch --tags -f

# 参考文章

常用 Git 命令清单 (opens new window)