working directory
——————工作区staging index
——————暂存区
git directory(Repository)
——————版本库
untracked
——————未被追踪Modified
——————表示工作区修改了某个文件但是还有没有添加到暂存区
Start
——————表示把工作区修改的文件添加到了暂存区但是没有提交到版本库
Committed
——————表示数据被安全地存储到本地仓库中
git init
——————初始化git仓库,出现.git文件(将文件夹初始化成git仓库)
git add
——————将文件从工作区添加到暂存区(对文件进行追踪)
```
git add filename 将文件添加到暂存区
git add . 将工作目录下所有修改的文件添加到暂存区
- `git commit`——————将暂存区的文件添加到版本库
git commit -m 'description' 将暂存区的文件提交到版本库
git commit -am 'description' 跳过git add
添加到暂存区的命令,直接将工作区所有以跟踪的文件提交
- `git log`——————查看提交的日志信息
- `git status`——————查看项目文件的状态
- `git config`——————对git进行配置
git config --global user.name xzbk 配置用户名
git config --global user.email 1063175795@qq.com 配置用户邮箱
git config --list 查看git配置信息
## Git撤销操作
- `git commit --amend`——————撤销上一次提交,并将暂存区的文件重新提交
- `git checkout -- filename`——————拉取暂存区的文件并将其替换工作区的文件(如果暂存区没有则去版本库中获)
- `git reset HEAD filename`——————拉取最近一次提交的版本库中的这个文件到暂存区,该操作不影响工作区
- `git reset --option(版本号)`
git reset --head 版本号 将暂存区工作区强行回退到相应版本
git reset --mixed 版本号 将版本库和暂存区回退到相应版本,工作区不受影响
git reset --soft 版本号 将版本库回退到相应版本
## Git文件删除
- `git rm filename`——————删除工作区及暂存区中的该文件,相当于删除文件后执行`git add`
git rm --cached filename 在不小心将不需要追踪的文件添加到暂存区,想删除暂存区的文件但不是删除工作区的文件很有用
git rm -f filename 当工作区或者暂存区文件修改了
glob模式
- `git mv filename`
```相当于:
mv oldname newname
git rm oldname
git add newname
git branch
——————查看分支口git branch branchname
——————创建分支git branch -m oldname newname
——————修改分支名称git checkout [-b] branchname
——————切换分支[创建并切换分支]git branch -d branchname
——————删除分支HEAD
——————分支的指针,指针HEAD指向当前工作分支,在切换分支时执行新的分支
git diff
——————比较差异
```
git diff 比较工作区与暂存区文件的差异git diff --staged 比较暂存区与版本库文件的差异
git diff version1 version2 比较分支内两个版本号的差异
git diff branch1 branch2 比较两个分支的差异
- `git merge branchname`——————将branchname分支合并到当前所在分支
### 储存变更
- `git stash`——————暂存文件的修改(切换分支前需要暂存,否则切换失败)
- `git stash list`——————查看暂存列表
- `git stash apply stash@num`——————将暂存拉回(stash@{number}:暂存的名称)
- `git stash drop stash@num`——————删除对应的暂存
- `git stash pop stash@num`——————拉回暂存状态并删除暂存(相当于`apply`和`drop`的结合)
## Git远程仓库
### github上的仓库
- 创建仓库
- `clone`——————克隆仓库到本地(相当于下载整个项目文件夹)
- `push`——————上项目文件传本地仓库
- `pull`——————拉取所有项目文件到本地(公同管理项目,拉取项目文件)
- `ignoring files`
- 流程示例图:
![](/img/Git/github_branch.png)
- 代码示例:
git clone https://github.com/xzbk/projects.git master 下载整个项目到本地
git pull https://github.com/xzbk/projects.git master 将项目文件拉取到本地仓库中
git push https://github.com/xzbk/projects.git master 将项目文件上传到远程仓库中
git remote add github(名称) https://github.com/xzbk/projects.git(仓库地址) 给仓库地址取一个别名
git remote remove github(名称) https://github.com/xzbk/projects.git(仓库地址) 删除远程仓库地址别名
git remote -v 查看自己添加添加的软件仓库及名称
git push(pull) github master 简化后
### 远程服务器上的仓库
- 用`taskmanager`来演示
- `git init --bare`——————
- `git remote add name path`——————
- `git remote rm name`——————
- `git remote rename oldname newname`——————
- `git fetch`——————
### Git ssh免秘钥登录
- `ssh-keygen`——————获取ssh秘钥(公钥,在`c/administrator/.ssh`文件夹中)
- `ssh-copy-id user@host`——————将本机的公钥复制到远程服务器的authorized_keys文件中
- 如果不是自己的服务器可以将本地公钥发送给服务器管理员,添加爱authorized_keys中
## Git的glob匹配模式
- 星号(*)匹配零个或多个任意字符
- [abc]匹配任何一个列在括号中的字符
- 问号(?)只匹配一个人义字符
- [0-9]、[a-z]匹配范围
## Git跳过追踪
- 在项目目录下新建`.gitignore`文件
- 将要忽略的文件配置到`.gitignore`文件中
- 如果被忽略的文件刘改了,会自动提交到暂存区,需使用`git rm --cached filename`来使文件被忽略
例: .gitignore index.html index.* ```
git help
——————查看帮助文档git help command
——————查看command命令的使用文档