一,linux 下 git 安装
1.1 yum 安装(不推荐)
# 安装 git
yum install git
# 查看 git 版本
git --version
缺点: 虽然安装方便,但是安装上的版本太低。
1.2 源码编译安装
- 查看git当前最新版本:https://github.com/git/git/releases
- 下载:wget https://github.com/git/git/archive/v2.24.0.tar.gz
- 压缩包解压:tar -zxvf v2.24.0.tar.gz
- 安装编译源码所需以来:yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
- 安装依赖时,yum 自动安装了 git,需要先卸载:yum remove git
- 进入解压缩后的文件夹,进行编译:make prefix=/usr/local/git all
- 安装 git 到 /usr/local/git路径:make prefix=/usr/local/git install
- 添加环境变量:vim /etc/profile,在底部加上git相关配置 export PATH=/usr/local/git/bin:$PATH
- 立即生效:source /etc/profile
- 验证:git --version
二,git 生成公钥
# 1 生成公钥,后边是你的邮箱,然后连按三次回车
ssh-keygen -t rsa -C "xxxxxx@xxxx.com"
# 2 查看公钥
cat ~/.ssh/id_rsa.pub
# ssh-rsa AAAAB#....
# 如果是windows,直接找到id_rsa.pub文件,打开复制即可
我的目录:C:\Users\lenovo\.ssh
# 3 复制公钥,添加到 git 上即可
解决: 每次拉取代码时都需要输入用户名密码问题
git config --global credential.helper store
# 再执行 git pull,需输入一次密码。之后再pull就可以直接拉取代码了
三,git 常用命令
2.1 本地初始化仓库,并链接到远程
- 【git init】:初始化【.git】文件
- 【git status】:查看项目中那些文件发生了变化,校验git init 是否成功
- 【git add .】:添加所有的变更文件,在使用git status检查,是否为“new file”
- 【git commit -m ‘firstCommit’】:提交到本地仓库
- 【git remote add origin git地址】:连接到远程(未提交)
- 【git branch】:查看本地分支
- 【git pull】:拉取代码
- 【git push -u origin master】:推送到远程,如报错“Updates were rejected because the tip of your current brance is master”,表示远程版本比本地新,需要强制推送
- 【git push -u -f origin master】:强制推送
- 【git branch -r】:查看远程分支
- 【git chechout -b 分支名 origin/master】:创建分支,并切换到新的分支。在master的基础上生成分支,执行git branch查看分支
- 【git push origin HEAD -u】:将分支推送到远程
2.2 github上新建项目,拉取到本地
- github上新建项目,并复制项目git地址
- 【git clone 项目地址】:将项目克隆到本地
- 修改完项目后,执行,【git add .】、【git commit -m ‘’】、【git push】等进行代码提交
2.3 常用的解决冲突的办法
- git stash:备份当前工作区的内容
- git pull:再次拉取线上代码
- git stash pop:将本地工作内容与拉取代码合并。完成后,可能会出现冲突的情况,然后对每个冲突文件进行修改。
- 然后执行正常的提交(git add、git commit、git push等)
2.4 git 版本回退
- git log --pretty=oneline:查看从最近到最远的提交日志
- git reset --hard 1094a…:回退到指定版本
- git reset --soft HEAD^:撤销commit
- 提示:HEAD is now at 1094a hx:表示回退成功
- git push -f origin master:将本地版本强制提交到远程