基本命令
指令
ls -a 查看当前目录下的所有文件
git init
# 初始化git仓库
# 出现后缀为 .git 子文件
理解:将当前文件夹变成git仓库是存放版本库,在当前目录下初始化创建一个子文件git(仓库),是隐藏文件夹,有git文件夹就说明当前文件目录是git的仓库
git status 查看项目文件状态
# git add index.html(指定文件) 让文件处于被追踪状态,待提交状态。 (工作区 转到 暂存区)
# git add . 选中全部未提交的文件
git commit 项目文件提交
# git commit -m ‘first comm(这里是描述)’ (暂存区 转到 版本库)
# git commit -am ‘first comm 直接跳过 git add 添加
#报错 please tell me who you are 没有告诉计算机我们是谁
#解决方法 告诉计算机我们是谁,(配置信息)指令:添加账户下面()
git config
添加账户
# git config --global user.name Hayden (自定义名称)
# git config --global user.email 2295209729@qq.com (邮箱)
# git config --list 查看git配置情况
# 成功后再执行 git commit -m ‘first comm(这里是描述)’指令
# git log 查看全部提交的信息
#git log --oneline 显示查看最近一次提交的信息
文件修改内容时 :1.当文件内容出现变化时会改变状态(未被追踪)
重新提交方法 1
#git add index.html(指定文件) 进入暂存区(注意:git add . 是选中全部未提交的文件)
#git commit -m ‘first comm(这里是描述) 提交到版本库
Git结构和状态
Git的三层结构
-
#working directoy 工作区
-
#staging index 暂存区
-
#git directory(Repository) 版本库
Git文件的4种状态
-
#untracked 未被追踪
-
#Modified (已修改的)表示工作区修改了某个文件但是还没有添加到暂存区
-
#Staged (暂存的)表示把工作区修改的文件添加到了暂存区,但是没有提交但是没有提交到版本库
-
#Committed (已提交的)表示数据被安全的存储在本地库中
Git 撤销操作
-
#gitcommit --amend 撤销上一次提交 并将暂存区的文件重新提交
-
#git checkout – index.html(文件) 撤销(返回到修改前)工作区文件的修改
-
git checkout – . (注意这里有个 干小点 )选中全部进行全部返回
##拉取暂存区的文件并将其替换工作区的文件 ##注意与git checkout (文件)区别
-
#git reset HEAD – index.html(文件) (暂存区文件的撤销)暂存区文件转到工作区,再git checkout – index.html(文件) 指令撤销
##拉最近一次提交的版本库中的这个文件index.html 放到暂存区,该操作不影响工作区 ##其中 HEAD 是提交地址 默认指向最近一次的提交文件
Git 文件删除
-
#git rm 文件
##删除工作区及暂存区中的修改文件相当于删除后文件后执行 git add
-
#git rm --cached index.html(文件) 在不小心将不需要追踪的文件调到暂存区,要想删除暂存的文件不删除工作的文件很有用
-
#git rm -f index.html(文件) 删除暂存区和工作区的文件
-
#git mv index.html(被修改的文件) index1.html(新的文件名称) 工作区修改文件名
-
git clean 删除没有被追踪的问价或文件夹的命令
# git clean -f 删除所有 为 追踪的文件 # git clean -fd 删除所有 未 追踪的文件
Git 分支
i 创建、修改、删除、切换
理解:分支之间的文件一样相同的,在修改文件时是互不影响的
- #git branch 查看分支(默认分支为master)
- #git branch dev 创建分支,分支名称为dev 例子
- #git checkout dev 指定分支切换,如现在从master分支切换到dev分支
- #git branch -d dev 删除分支(!注意:在指向当前分支时是不能删除的 当前分支的,要先指向非本分支(dev),才能删除,否则会报错)
- #git branch -m dev fix 改分支名,将dev 改为 fix
- #glob模式
-
a: 星(*)匹配零个或多个任意字符 b:[abc]匹配任何一个列在方括号中的字符 c: 问好(?)只匹配一个任意字符 d:[0-9],[a-z] 匹配范围
Ii 分支的合并
- #git diff 比较
a: git diff 比较工作区与暂存区文件的差异git diff 比较工作区与暂存区文件的差异
b: git diff --staged 比较暂存区与版本库的文件差异
c: git diff 版本号 版本号 比较分支内两个版本 的差异
d: git diff 分支 分支 比较两个分支的最新提交版本的差异 -
git merge 分支 合并之前需要先切换到master分支
快速合并 和 合并冲突
存储变更
分支文件修改,要切换到别的分支,一:将修改后的文件提交到版本库,二:使用git stash将修改的工作区和暂存区文件 保存 起来,文件恢复到修改前的状态。
- #git stash 保存当前操作
- #git stash list 查看之前保存的 哪些文件
- #git stash apply stash@{number} 返回之前保存文件的第 number 个,不会删除这保存的文件
- #git stash pop stash@{number} 返回文件,然后会删除这个文件
- #git stash drop stash@{number} 直接删除 第bumber文件,不返回
Git 远程仓库
托管项目
- 在github 创建一个项目
- 会有两种地址 HTTPS 和 SSH
- SSH地址需要自己本地ssh公钥地址挂载到github库中去
A: ssh-keygen 在本地上创建有关SSH的公钥和秘钥,然后到github中设置公钥,暴露公钥
- #git push 地址 master 上传到远程仓库托管项目
- ##git pull 地址 master 将地址上的项目下下来,有两种地址:默认https 是可以直接使用的,SSH得上传账户有的提供公钥才能用
https例子:git pull https://github.com/zhendeshi/name.git master
ssh 例子 :git pull git@github.com:zhendeshi/name.git master
git远程仓库管理
- 方法1:(直接通过地址上传)
#git push 地址 本地修改上传到git远程仓库中
- 方法2:(将地址保存到一个变量,就可以用更简单的命令)
A: git remote add github(名称) https或ssh地址 给地址取名,以方便简写
a: 例子:git push github master 这样就显得更方便
B: git remote -v 查看添加的远程仓库 - #git ssh-keygen 自动产生本地公钥
#git remote add github https://github.com/JarvisArt/Test.git 关联远程仓库
#git remote -v 查看关联的远程仓库的详情信息
#git push ssh://roo@182.61.20.102/var/git/project.git master 将本地内容上传到服务器
GIt help 文档介绍
- #touch .Gitignore 创建.gitignore文件,将文件添加到此文件(.Gitignore)中会不被追踪
- #git help 命令帮助手册
例子: git help add 查看add命令的帮助手册,可以查看add的相关资料