![图片描述](http://cdn.demongao.com/upload/article/avatar-1491578632254.jpg)
![git常用命令](http://cdn.demongao.com/upload/article/avatar-1564546830726.png)
# git 分支常用名称
* 功能(feature)分支
* 预发布(release)分支
* 修补bug(fixbug)分支
# git常用操作
---
* 修改文件,都暂时保存到缓存区,在缓存区 切换任何branch(分支)都是不管用的,都会显示。
### 忽略已上传的文件
git update-index --assume-unchanged <文件名> 忽略已经上传到远程仓库的文件(比如: 配置文件, 每个人可能不一样 但需要格式一致)
### git pull
`git pull <远程主机名> <远程分支名>:<本地分支名>`
### git checkout 切换分支
`git checkout -b 新建分支名` 在当前分支下创建自分支 并切换到当前分支
`git checkout 分支名` 切换分支
`git branch -d 分支名` 删除分支(分支上没有提交修改)
`git branch -D 分支名` 强行删除分支(分支上提交了修改)
### git diff 查看变更内容
`git diff` 当前工作区与暂停区的差异
`git diff --cached [<path>...]` 比较暂存区与最新本地版本库(本地库中最近一次commit的内容)
`git diff <分支1> <分支2>`
`git diff` 工作目录和暂存区之间的差异
`git diff HEAD` 显示工作版本和HEAD的差别
`git diff 分支1 分支2` 显示两个分支之间的差异
`git diff HEAD^ HEAD` 比较上次提交commit和上上次提交
`git diff dev(本地远程分支dev) origin/dev(远程分支dev)` 本地分支(dev)与远程分支(dev)比较
### git merge 合并分支
`git merge --no-ff` 不使用fast merge (有记录)
# 怎么将当前分支的提交push到master分支
> 如题,直接在develop分支上改了一个bug(没有严格按照git flow),请问怎么将develop分支上这个更改提交到master分支去?
用到的知识点:`$ git pull <远程库名> <远程分支名>:<本地分支名>`
# 方法:
* 取回远程库中的develop分支,与本地的develop分支进行merge,要写成:
`git pull origin dev:dev`
* 如果是要与本地当前分支merge,则冒号后面的<本地分支名>可以不写。
`git pull origin dev`
其实,git pull 命令等同于先做了git fetch ,再做了git merge。即:
```
git fetch origin dev 拉取远程dev分支 更新本地远程分支dev
git checkout dev
git merge origin/dev
```
# 常见问题解决方法
---
## 1.添加远程版本库出现的问题
```
问题:
fatal: remote origin already exists.
解决方法:
//移除远程git仓库
git remote rm origin
//添加地址
git remote add origin giturl
```
## 2.Git在最新2.9.2,合并两个没有共同祖先的分支出现的问题
```
问题:
报错: `fatal: refusing to merge unrelated histories`
解决方法:
git merge --allow-unrelated-histories origin/master
```
>
#### 注意:
* Git 从 2.9.0 版本开始,预设行为不允许合并没有共同祖先的分支,需要加上 --allow-unrelated-histories 进行 pull 操作才不会出现此类错误信息。
**不建议使用git pull,喜欢自己merge,以便万一自动merge出错的时候可以解决冲突**
### 3. git commit 提交失败,错误信息如下:
```
问题:
git commit 报错 husky > npm run -s precommit (node v6.9.4) fatal: Not a git repository: '.git'
解决方法:
cp .git/hooks/pre-commit /tmp/pre-commit
tr -d ‘\r’ < /tmp/pre-commit > .git/hooks/pre-commit
# 如果上述命令有问题 执行如下命令
cp .git/hooks/prepare-commit-msg /tmp/
tr -d ‘\r’ < /tmp/prepare-commit-msg > .git/hooks/prepare-commit-msg
cp .git/hooks/commit-msg /tmp/
tr -d ‘\r’ < /tmp/commit-msg > .git/hooks/commit-msg
```
### 4. 你自己项目修改还未提交时,执行 git pull 或 git merge, 提示: Error your local changes to the following files would be overwriten by merge.
```
解决方法:
方法1: 如果你想保留刚才本地修改的代码,并把git服务器上的代码pull到本地(本地刚才修改的代码将会被暂时封存起来)
1. git stash
2. git pull origin master
3. git stash pop
方法2: 如果你想完全地覆盖本地的代码,只保留服务器端代码,则直接回退到上一个版本,再进行pull
1. git reset --hard
2. git pull origin master
```
# 初次使用git 提交项目到远程仓库
---
1. git init 本地仓库初始化
2. git remote add origin 远程仓库地址
3. git config --global user.email "scgao94@gmail.com" 设置邮箱
4. git config --global user.name "DemonGao" 设置昵称
5. 创建ssh key 并且授权 [具体操作点击此链接](https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001374385852170d9c7adf13c30429b9660d0eb689dd43a000)
Git常用操作及问题解决