merge冲突解决,

一.设置仓库的本地账户

—global会使所有仓库都使用这个账户,谨慎使用

  1. $ git config --global user.name "Your Name"
  2. $ git config --global user.email "email@example.com"

二.创建版本库(本地仓库repository)

  1. $ git init

三.添加文件到版本库(暂存区working tree)

  1. $ git add file1.txt //添加一个
  2. $ git add file2.txt file3.txt //添加多个
  3. $ git add . //添加目录下所有
  4. $ git add -f . //强制添加,越过ignore

四.提交文件到版本库(本地仓库repository)

  1. $ git commit -m "add 3 files"

五.日志

  1. $ git log //查看提交日志,回退后会丢失
  2. $ git log -1 // 显示最后一条日志
  3. $ git log --pretty=oneline //单行显示
  4. $ git log --pretty=oneline --abbrev-commit //commit码缩写
  5. $ git reflog //查看命令历史,包含所有操作

六. 时光回退

当前版本为HEAD,穿梭后,未来的git log会丢失,一去不复返

  • —hard 回退到上个版本,丢弃所有
  • —mixed 回退到上个版本,回退commit到工作区
  • —soft 回退到上个版本,回退commit到暂存区,工作区不变

$ git reset —mixed HEAD

  1. $ git reset --hard HEAD^ //回退到上个版本,
  2. $ git reset --hard HEAD^^ //回退到上个版本
  3. $ git reset --hard HEAD~100 //回退到上100个版本
  4. $ git reset --hard 1094a //移动到指定版本号

七. 撤销修改

撤销工作区文件的修改,用暂存区或版本库覆盖工作区(已经修改)

  1. $ git checkout -- readme.txt

撤销暂存区的修改,移回工作区覆盖(已经add)

  1. $ git reset HEAD readme.txt

如果已经commit到版本库中,可以使用时光回退撤销修改(已经commit未push)
回退后commit的部分会回到暂存区中

  1. $ git reset --soft HEAD^

修改已提交的commit

  1. commit信息改成 fix #22968497
  2. git commit --amend
  3. 改好后
  4. git push -f -u

八.删除文件

当删除本地文件后,可以使用以下命令,效果和git add 一样

  1. $ git rm

九.远程仓库

拉取仓库代码:git pull
推送仓库代码:git push
查看关联远程仓库:git remote -v
关联远程空白仓库: git remote add origin git@github.com:JSONCat/gitskills.git
克隆远程仓库到本地: git clone git@github.com:michaelliao/gitskills.git

十.分支管理

1. 创建和合并分支

查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>或者git switch <name>
创建+切换分支:git checkout -b <name>或者git switch -c <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
强制删除分支:git branch -D <name>
查看分支从哪里检出:git reflog --date=local | grep <branchname>

2. 远程分支

刷新远程分支列表:git remote update origin --prune
拉取远程分支到本地:git checkout -b dev origin/dev(dev为远程仓库的分支名)
本地关联远程分支:git push --set-upstream origin dev
推送本地分支到远程:git push origin dev
查看远程分支:git branch -r
查看本地分支与远程分支的对应关系:git branch -vv

3. 禁用快速合并

使用—no-ff参数可以关闭快速合并Fast forward,在合并时主分支会产生一个commit,所以需要使用-m添加备注

  1. $ git merge --no-ff -m "merge with no-ff" dev

4. 缓存暂存区的内容

  1. $ git stash //缓存当前的暂存区
  2. $ git stash list //显示缓存列表
  3. $ git stash apply //取出缓存
  4. $ git stash pop //取出缓存并从缓存列表删除
  5. $ git stash apply stash@[0] //取出指定缓存
  6. $ git stash drop stash@[0] //删除指定缓存

十一.标签

  • 命令git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
  • 命令git tag -a <tagname> -m "blablabla..."可以指定标签信息;
  • 命令git tag可以查看所有标签。
  • 命令git show <tagname>可以查看标签信息
  • 命令git push origin <tagname>可以推送一个本地标签;
  • 命令git push origin --tags可以推送全部未推送过的本地标签;
  • 命令git tag -d <tagname>可以删除一个本地标签;
  • 命令git push origin :refs/tags/<tagname>可以删除一个远程标签。