@[Toc](GIT指令操作指南)
==上面是模板,下面是举例==
# 一、基本命令
1.初始化一个git仓库
```javascript
git init
```
2.把文件添加到仓库(暂存区)
```javascript
//添加全部
git add .
//添加指定文件
git add
git add readme.text
```
3.把文件提交到仓库
```javascript
git commit -m "xxxx"
git commit -m "initreadme"
```
4.当前的提交日志
```javascript
git log
```
5.回退版本
HEAD当前版本,上版本是HEAD^ ,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
```javascript
git reset
git reset --hard HEAD^
//回退到指定版本
git reset --hard 版本id的前几个单词
git reset --hard 1094a(这个是指定版本的ID前几位)
```
6.历史提交日志
```javascript
git reflog
```
7.查看工作区当前文件状态
```javascript
git status
```
8.命令显示版本库对象的内容、类型、及大小信息。
```javascript
cat
cat readme.txt
```
9.查看工作区和版本库里面最新版本的区别
```javascript
git diff
git diff HEAD -- readme.txt
```
10.回到最近一次git commit或git add时的状态
```javascript
git restore
git restore -- readme.txt
```
11.暂存区的修改撤销掉
```javascript
git restore --staged <file>
git restore --staged readme.txt
```
12.丢弃工作区的修改
```javascript
git checkout -- <file>
git checkout -- readme.txt
```
13.删除文件
```javascript
1.两步删除
git rm
git commmit
//可以恢复,restore用版本库里的版本替换工作区的版本
//git restore -- test.txt
```
# 二、远程操作
14.链接远程库
```javascript
1.https
git remote add origin 《仓库地址》
git remote add origin https://github.com/username/testgit.git
2.SSH
git remote add origin git@github.com:《账户名》/《仓库名》
git remote add origin git@github.com:Lty-Nyist/GitStudy.git
```
15.远程推送
本地的master分支和远程的分支关联起来
```javascript
//从远程库抓取
git pull
//第一次推送
git push -u origin master
//之后
git push origin master
```
16.查看远程库
```javascript
git remote -v
```
17.删除远程库(解除链接)
```javascript
git remote rm <name>
git remote rm origin
```
18.克隆远程库
```javascript
git clone git@github.com:《账户名》/《仓库名》
git clone git@github.com:Lty-Nyist/GitStudy.git
```
# 三、分支管理
进当前本地分支与远程分支关联
```csharp
git branch --set-upstream-to=origin/dev
```
19.创建分支
```javascript
git branch 分支名
git branch dev
```
20.切换分支
```javascript
//旧版
git checkout 分支名
git checkout dev
//新版
//创建并切换到新的dev分支
git switch -c dev
//直接切换到已有的master分支
git switch master
```
21.查看当前所有分支
```javascript
git branch
```
22.合并分支
合并指定分支到当前分支,将dev的修改合并到当前分支。
```javascript
1.Fast Forward
git merge 分支名
git merge dev
2.--no-ff 禁用FastForward
(保留dev的分支,并在现在分支提交一个版本修改)
git merge --no-ff -m "提交描述" 分支名
git merge --no-ff -m "merge with no-ff" dev
```
23.删除分支
```javascript
git branch -d 分支名
git branch -d dev
```
24.查看合并分支情况
```javascript
git log --graph --pretty=oneline --abbrev-commit
```
25.暂存工作区修改内容
```javascript
git stash
```
26.从暂存区恢复文件,并删除stash信息
```javascript
git stash pop
```
27.复制一个特定的提交到当前分支
```javascript
git cherry-pick 版本号前几位
git cherry-pick d4b9a
```