bash入门(了解)
bash是许多linux系统默认的shell(命令行工具)。
cmd和powershell是window系统默认的shell(命令行工具)。
二者的功能都一样,通过命令行来操作计算机的功能。
为什么要学习bash
必须使用linux风格的shell来运行git命令
工作过程中,项目都是部署在linux系统中,了解一些常用的bash命令也是有必要的。
# cd 改变目录 (change directory)
cd images #进入images文件夹
cd .. #进入上一层目录
cd ~ #进入用户根目录
# tab 自动补全,当我们输命令或者目录很长时,可以使用tab键进行自动补全。
# 按两次tab,会把所有符合要求的内容都列出来。
# pwd 打印当前目录的路径 (print work directory)
pwd
# ls 展示当前目录列表(list)
ls # 展示当前目录
ls -a # 展示全部内容,包括隐藏文件
ls -l # 以列表的形式展示内容
# clear reset清屏
clear # 清除屏幕内容,滚动条,保留了历史
reset # 重置,历史记录没了。
# mkdir 创建一个文件夹 (make directory)
mkdir css # 创建一个css的文件夹
mkdir css img js # 创建了三个文件夹
# rmdir 删除一个空的文件夹(没啥用)
rmdir img # 删除文件夹
# touch 创建文件
touch index.html #创建了一个index.html文件
touch css/index.css # 在css目录下创建idnex.css文件
# rm 删除一个文件获取文件夹
rm index.html # 删除index.html文件
rm js # 删除空的js文件夹
rm -r css # 递归删除一个文件夹
# mv 移动文件(move)
mv index.html js # 将html文件移动到js文件夹中
mv index.html index2.html # 将index.html重命名为index2.html
# cp 复制文件(cp)
cp index.html index2.html # 复制index.html文件,命名为index2.html
cp -r css css02 # 如果复制的是文件夹,需要使用-r参数。
# cat 查看文件全部内容
cat index.html
在第一次使用的时候,需要配置你的用户邮箱和用户名称,这两条配置是很重要的,每次提交git代码都会引用这两条信息,记录了谁提交了代码,会永久的记录在历史记录中。
# git config user.name 你的目标用户名
# git config user.email 你的目标邮箱名
# 使用--global参数,配置全局的用户名和邮箱,只需要配置一次即可。
git config --global user.name hucc
git config --global user.email 111111@qq.com
# 查看配置信息
git config --list
初始化git仓库
git init
查看当前git仓库的状态
git status
将文件添加到git的暂存区
git add 文件名
将文件由暂存区提交到仓库区
git commit -m '提交说明'
查看提交日子
git log
# 要对某个项目使用git进行管理,需要使用git init命令初始化git仓库
# 会在当前目录生成一个隐藏文件夹 .git 不要去修改这个文件夹下的任意东西。
git init
# 查看git文件的状态 ,如果此时新建一个文件,那么这个文件是没有被追踪的,说白了git还没有管理这个新建的文件
git status
# 告诉git开始对index.html文件进行追踪, git会在暂存区中存储这个文件
git add index.html
# 让文件由暂存区提交到仓库区。此时文件才真正的被git管理了。
# 如果提交日志乱码,右键-->options-->Text-->将编码改成utf-8
git commit -m '第一次提交'
# 查看提交日志
git log
git命令详解
git add(重点)
作用:让git追踪一个新的文件,并且将文件由 工作区 添加到 暂存区,暂存文件
-
命令:
git add 文件名/目录名
- 例如:
git add index.html
- 例如:
git add --all
或者git add -A
获取git add .
(简写) 添加所有文件git add a.txt b.txt
同时添加两个文件git add *.js
添加当前目录下的所有js文件git add css/
添加css目录下所有的文件
git checkout 文件名
作用:暂存区的内容恢复到工作区。
git checkout 1.txt
将暂存区中1.txt文件恢复到工作区
git commit(重点)
作用:将文件由 暂存区 添加到 仓库区,生成版本号(历史记录,以后可以回退到某一个版本号)
git commit -m "提交说明"
git status
作用:查看文件的状态
命令:
git status
命令:
git stauts -s
简化日志输出格式
git log
作用:查看提交日志
git log
只能查看当前head以及以前的日志git log --oneline
简洁的日志信息,如果提交的日志非常多了git reflog
查看所有的提交变更日志
git reset
作用:版本回退,将代码恢复到已经提交的某一个版本中。
git reset --hard 版本号
将代码回退到某个指定的版本(版本号只要有前几位即可)-
git reset --hard head~1
将版本回退到上一次提交~1:上一次提交
~2:上上次提交
~0:当前提交
git的三个区
工作区、暂存区、本地仓库区
工作区:我们书写代码的地方,工作的目录就叫工作区。
暂存区:使用add命令,在.git
目录中的一个索引文件,记录修改的文件
本地仓库区:将保存在暂存区域的内容永久转储到 Git 仓库中,生成版本号。生成版本号之后,就可以任何的回退到某一个具体的版本。
git忽视文件
在仓库中,有些文件是不想被git管理的,比如数据的配置密码、写代码的一些思路等。git可以通过配置从而达到忽视掉一些文件,这样这些文件就可以不用提交了。
在仓库的根目录创建一个
.gitignore
的文件,文件名是固定的。将不需要被git管理的文件路径添加到
.gitignore
中
# 忽视idea.txt文件
idea.txt
# 忽视.gitignore文件
.gitignore
# 忽视css下的index.js文件
css/index.js
# 忽视css下的所有的js文件
css/*.js
# 忽视css下的所有文件
css/*.*
# 忽视css文件夹
css
创建分支
git branch 分支名称
创建分支,分支中的代码,在创建时与当前分支的内容完全相同。git在第一次提交时,就有了一个叫
master
的主分支。
查看分支
git branch
可以查看所有的分支,在当前分支的前面会有一个
*
切换分支
git checkout 分支名称
切换分支 HEAD指针指向了另一个分支在当前分支的任何操作,都不会影响到其他的分支,除非进行了分支合并。
切换分支之前,必须保证代码已经提交了
创建并切换分支
git checkout -b 分支名称
创建并切换分支-
切换分支会做两件事情
把head指针指向当前的分支
将工作区的文件变成当前分支最新的内容。
删除分支
git branch -d 分支名称
可以删除分支注意:不能在当前分支删除当前分支,需要切换到其他分支才能删除。
注意:
master
分支是可以删除的,但是不推荐那么做。
合并分支
git merge 分支名称
将其他分支的内容合并到当前分支。在
master
分支中执行git merge dev
将dev
分支中的代码合并到master
分支
git合并冲突
对于同一个文件,如果有多个分支需要合并时,容易出现冲突。
合并分支时,如果出现冲突,只能手动处理,再次提交,一般的作法,把自己的代码放到冲突代码的后面即可。
远程仓库
所有的程序员都可以通过远程仓库来进行版本的共享,达到所有人的代码一致的效果。
远程仓库相关的命令
git push
作用:将本地仓库中代码提交到远程仓库
git push 仓库地址 master
在代码提交到远程仓库,注意master分支必须写,不能省略例子:
git push git@github.com:hucongcong/test.git master
如果第一次使用,需要填写github的用户名和密码在git push之前,先git pull: 保证先把远程仓库代码先拉取到本地
git pull
作用:将远程的代码下载到本地
git pull 代码地址 master
将远程的代码中master分支下载到本地通常在push前,需要先pull一次。
git clone
作用:克隆远程仓库的代码到本地
git clone [远程仓库地址]
git clone git://github.com/schacon/test.git
会在本地新建一个test
文件夹,在test中包含了一个.git
目录,用于保存所有的版本记录,同时test文件中还有最新的代码,你可以直接进行后续的开发和使用。git克隆默认会使用远程仓库的项目名字,也可以自己指定。需要是使用以下命令:
git clone [远程仓库地址] [本地项目名]
git remote
每次push和pull操作都需要带上远程仓库的地址,非常的麻烦,我们可以给仓库地址设置一个别名
-
git remote add 仓库别名 仓库地址
使用仓库别名替代仓库地址。仓库别名相当于一个js变量,仓库地址就是对应的值。-
git remote add hucc git@github.com:hucongcong/test.git
设置了一个hucc的仓库别名,以后push和pull都可以不用仓库地址,而用hucc,origin
-
git remote remove hucc
删除hucc这个仓库别名。git remote
查看所有的仓库别名如果使用了
git clone
命令从远程仓库获取下来的,那么这个本地仓库会自动添加一个 origin的远程地址,指向的就是克隆的远程地址。