Git
关于Linux的简介、诞生,大家可以去网上查一查,这里不多做赘述了
基本概念
- 工作区:仓库的目录,工作区是独立于各个分支的
- 暂存区:数据暂时存放的区域,暂存区是独立于各个分支的
- 版本库:存放所有已经提交到本地仓库的代码版本
- 版本结构:树结构,树中每个节点代表一个代码版本
Linux上安装Git
yum安装
在Linux上是有yum安装Git,非常简单,只需要一行命令
yum -y install git
输入 git --version
查看Git是否安装完成以及查看其版本号
至此,使用yum安装git就完成了
自定义安装
使用yum安装虽然比较方便,但是其安装的Git版本比较旧,而且安装的目录是固定的,所以我们一般采用自定义安装
进入
git
在GitHub
上发布版本页面Git历史版本,这个页面我们可以找到所有git
已发布的版本.这里我选择的版本比较早。下载
tar.gz
的Git
到本地电脑,然后上传到Linux
服务器中某个目录下,我上传到的是/opt
目录下然后我们可以在
/opt
目录下创建一个git
文件夹,将我们的git
压缩包放到git
文件夹中,并且解压tar -zxvf git-2.30.2.tar.gz
进入到解压的文件夹中,此时我们拿到我们解压后的源码,需要开始编译源码,不过需要先去安装编译所需要的依赖
# 进入到解压后的git文件夹中 cd git-2.30.2 # 安装编译所需依赖 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMake # 安装途中会出现提示,全部按y即可
提示,安装编译源码所需依赖的时候,
yum
自动帮你安装了git
,这时候你需要先卸载这个旧版的git
。yum -y remove git
编译
git
源码,这里你当时解压在哪个目录,最好就编译在哪个目录,我是在/opt/git
中,大家不要混淆!!!make prefix=/opt/git all
安装
git
至/opt/git
路径,和6一样,按照自己的目录!!!make prefix=/opt/git install
配置环境变量(没有vim的,记得提前去下载安装,也可以使用vi)
vim /etc/profile
在最后加入以下内容,和6、7一样,一定要按照自己的目录!!!
export PATH=$PATH:/opt/git/bin
输入
:wq
保存修改刷新环境变量
source /etc/profile
查看
Git
是否安装完成git --version
至此,Linux中的Git已安装完成,Windows上的Git非常简单,几乎傻瓜式安装,需要安装的朋友可以自己搜索
全局设置
git config --global user.name xxx
:设置全局用户名,信息记录在~/.gitconfig文件中git config --global user.email xxx@xxx.com
:设置全局邮箱地址,信息记录在~/.gitconfig文件中
常用命令
创建一个文件夹
git init
:将当前目录配置成git仓库,信息记录在隐藏的.git文件夹中git add XX
:将XX文件添加到暂存区中git add .
:将所有待加入暂存区的文件加入暂存区
git commit -m "备注信息"
:将暂存区的内容提交到当前分支git status
:查看仓库状态git log
:查看当前分支的所有版本git push -u (第一次需要-u以后不需要)
:将当前分支推送到远程仓库git push origin branch_name
:将本地的某个分支推送到远程仓库
git clone git@git.acwing.com:xxx/XXX.git
:将远程仓库XXX下载到当前目录下git branch
:查看所有分支和当前所处分支
查看命令
git diff XX
:查看XX文件相对于暂存区修改了哪些内容git status
:查看仓库状态git log
:查看当前分支的所有版本git log --pretty=oneline
:用一行来显示git reflog
:查看HEAD指针的移动历史 (包括被回滚的版本)git branch
:查看所有分支和当前所处分支git pull
:将远程仓库的当前分支与本地仓库的当前分支合并
删除命令
git rm --cached XX
:将文件从仓库索引目录中删除,不希望管理这个文件git restore --staged XX
:将XX从暂存区里移除git checkout — XX或git restore XX
:将XX文件尚未加入暂存区的修改全部撤销
代码回滚
git reset --hard HEAD^ 或git reset --hard HEAD~
:将代码库回滚到上一个版本git reset --hard HEAD^^
:往上回滚两次,以此类推git reset --hard HEAD~100
:往上回滚100个版本git reset --hard 版本号
:回滚到某一特定版本
远程仓库
git remote add origin git@git.acwing.com:xxx/XXX.git
:将本地仓库关联到远程仓库git push -u (第一次需要-u以后不需要)
:将当前分支推送到远程仓库git push origin branch_name
:将本地的某个分支推送到远程仓库git clone git@git.acwing.com:xxx/XXX.git
:将远程仓库XXX下载到当前目录下git push --set-upstream origin branch_name
:设置本地的branch_name
分支对应远程仓库的branch_name
分支git push -d origin branch_name
:删除远程仓库的branch_name
分支git checkout -t origin/branch_name
将远程的branch_name
分支拉取到本地git pull
:将远程仓库的当前分支与本地仓库的当前分支合并git pull origin branch_name
:将远程仓库的branch_name
分支与本地仓库的当前分支合并git branch --set-upstream-to=origin/branch_name1 branch_name2
:将远程的branch_name1
分支与本地的branch_name2
分支对应
分支命令
git branch branch_name
:创建新分支git branch
:查看所有分支和当前所处分支git checkout -b branch_name
:创建并切换到branch_name
这个分支git checkout branch_name
:切换到branch_name
这个分支git merge branch_name
:将分支branch_name
合并到当前分支上git branch -d branch_name
:删除本地仓库的branch_name
分支git push --set-upstream origin branch_name
:设置本地的branch_name
分支对应远程仓库的branch_name
分支git push -d origin branch_name
:删除远程仓库的branch_name
分支git checkout -t origin/branch_name
:将远程的branch_name
分支拉取到本地git pull
:将远程仓库的当前分支与本地仓库的当前分支合并git pull origin branch_name
:将远程仓库的branch_name
分支与本地仓库的当前分支合并git branch --set-upstream-to=origin/branch_name1 branch_name2
:将远程的branch_name1
分支与本地的branch_name2
分支对应
stash暂存
git stash
:将工作区和暂存区中尚未提交的修改存入栈中git stash apply
:将栈顶存储的修改恢复到当前分支,但不删除栈顶元素git stash drop
:删除栈顶存储的修改git stash pop
:将栈顶存储的修改恢复到当前分支,同时删除栈顶元素git stash list
:查看栈中所有元素