一、安装
1、安装依赖
yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker package
2、下载git
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz
3、解压git
tar -zxf git-2.9.5.tar.gz
4、进入git目录
cd git-2.9.5
5、预编译git
./configure --prefix=/usr/local/git
6、编译及安装
make && make install
7、配置全局路径
vi /etc/profile
export PATH="/usr/local/git/bin:$PATH"
source /etc/profile
8、测试
[root@localhost /]# git --version
git version 2.9.5
二、使用git
1、获取git文件
git clone https://gitee.com/anhui-yuanlong-network/gpapi.git
2、拉取
git pull <远程主机名> <远程分支名>:<本地分支名>
git pull
强制拉取
git fetch --all #直接执行 会更新远程的分支数据到本地(如果远程有一个新的分支,本地是没有的,那么会在本地仓库中创建一个新的对应分支)
git reset --hard origin/master
git pull
3、合并推线上
git merge <分支名称>
git push
4、推送
git add . 或者 git add <file> #将本地文件都添加到缓存区里
git commit -m "提交的注释" #提交到本地仓库中
git push #将本地代码推送到远程仓库中
5、回退缓存区
git restore --staged <file> 或者 git restore --staged . #将缓存区的文件回退到工作空间里
6、查看分支
git status #查看当前分支本地的状态
git branch #查看本地分支
git branch -a #所有分支,看到的分支都是快照(自己引入的概念),比如同事在远程上又创建了新的分支,通过这个命令是看不到同事创建的远程分支的。
git branch -r #远程分支 也是看到的是快照。如果不想看到快照,那就得 先git fetch 在git branch -a OR git branch -r
7、创建分支
git branch <新分支的名字> #创建本地新分支
git checkout <分支名> #检出分支
git checkout -b <分支名> #创建并检出本地新分支
git checkout -b <分支名> <远程主机> /<远程分支> #从指定的远程中创建并检出本地新分支
git push origin <本地分支名> :<远程分支名> --set-upstream #创建指定的本地分支到远程服务器上 <远程分支名> 就是你定义的远程服务器上存储的新的分支名。
git push origin <远程分支名> --set-upstream #创建当前的本地分支到远程分支上。 <远程分支名> 就是你定义的远程服务器上存储的新的分支名。
8、删除分支
git branch -d <本地的分支名> #删除本地分支
git branch -d <本地的分支名> #删除本地分支
git branch -r -d <远程主机>/<分支名> #删除跟踪分支(意思就是你从本地的分支跟远程分支断开了。但是你如果用git pull 或者 git fetch 会把跟踪分支加回来。 具体的表现就是:执行删除命令后,git branch -r 是看不到远程分支的,因为跟踪的分支被你删除了)
git push origin :<分支的名字> #删除远程分支
git push origin -d <分支的名字> #删除远程分支
9、查看日志
git log #如果记录特别多 就 上下键 进行上下翻页。Q就是退出查看
git log --oneline #简洁版
git log --reverse --oneline #逆向展示
git log --author=<用户名> #查看指定用户提交的记录
10、回滚
1、在工作区的代码(checkout ~ 修改工作区文件)
git checkout -- a.txt # 丢弃某个文件,或者
git checkout -- . # 丢弃全部
2、代码 git add 到缓存区,并未 git commit 提交(reset ~ 修改暂存区文件)
git reset HEAD .
git reset HEAD a.txt
3、代码 git commit 到本地分支,但没有 git push 到远程 (git reset --hard ~ commit 之后)
git log # 得到你需要回退一次提交的commit id
git reset --hard <commit_id> # 回到其中你想要的某个版本
git reset --hard HEAD^ # 回到最新的一次提交
git reset HEAD^ # 此时代码保留,回到 git add 之前
4、代码 git push 把修改提交到远程仓库 (git reset || git revert)
git log # 得到你需要回退一次提交的commit id
git reset --hard <commit_id>
git push origin HEAD --force # 强制提交一次,之前错误的提交就从远程仓库删除
11、Linux与windows互转码错误
提交时报错warning: LF will be replaced by CRLF in
配置选项修改 把core.autocrlf 设置成false
git config --global core.autocrlf true #这个是转换,也是默认值
git config --global core.autocrlf input #貌似是上库转换,从库中迁出代码不转换
git config --global core.autocrlf false #这个一般是window上的,不转换