Git操作
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
拉取代码
$ git clone http:xxxxxxxxxxxxx
把这个目录变成Git可以管理的仓库
$ git init
$ git add <file>
$ git add -a
$ git add -u
$ git add .
$ git commit -m <message>
修改文件
$ cat <filename>
查看结果
$ git status
查看最近修改内容不同
$ git diff <file>
查看版本
$ git log
$ git log --pretty=oneline --abbrev-commit
退回版本
$ git reset --hard HEAD^
$ git reset --hard HEAD^^
$ git reset --hard 1094a
查看命令历史
$ git reflog
查看工作区和版本库区别
$ git diff HEAD -- <filename>
撤销修改
$ git checkout -- <filename>
$ git reset HEAD <file>
删除文件
$ rm <filename>
$ git rm <filename>
$ git commit -m "del"
$ git checkout -- <filename>
创建SSH key
$ ssh-keygen -t rsa -C "邮箱"
远程库
$ git remote add origin git@github.com:chyyyu.git
$ git push -u origin master
$ git push --set-upstream origin 分支
$ git push origin master
$ git fetch origin dev
$ git branch --set-upstream-to=origin/dev dev
$ git pull
$ git remote -v
$ git remote rm origin
本地创建克隆库
$ git clone git@github.com:chyyu.git
分支操作
$ git checkout -b dev
$ git switch -c dev
$ git branch dev
$ git checkout dev
$ git checkout -b dev origin/dev
$ git branch --set-upstream branch-name origin/branch-name
$ git branch --set-upstream-to=origin/dev dev
$ git pull
$ git branch
$ git checkout master
$ git switch master
$ git merge dev
$ git branch -d dev
$ git branch -D <name>
$ git log --graph --pretty=oneline --abbrev-commit
$ git merge --no-ff -m "merge with no-ff" dev
标签
$ git tag v1.0
$ git tag
$ git log --pretty=oneline --abbrev-commit
$ git tag v0.9 f52c633
$ git show <tagname>
$ git tag -a v0.1 -m "version 0.1 released" 1094adb
$ git tag -d v0.1
$ git push origin v1.0
$ git push origin --tags
$ git tag -d v0.9
$ git push origin :refs/tags/v0.9
不要用git pull,用git fetch和git merge代替它。
git pull的问题是它把过程的细节都隐藏了起来,以至于你不用去了解git中各种类型分支的区别和使用方法。
当然,多数时候这是没问题的,但一旦代码有问题,你很难找到出错的地方。看起来git pull的用法会使你
吃惊,简单看一下git的使用文档应该就能说服你。
将下载(fetch)和合并(merge)放到一个命令里的另外一个弊端是,你的本地工作目录在未经确认的情况下
就会被远程分支更新。当然,除非你关闭所有的安全选项,否则git pull在你本地工作目录还不至于造成
不可挽回的损失,但很多时候我们宁愿做的慢一些,也不愿意返工重来。
pull 抓取更新仓库并合并本地仓库
fetch 抓取最新仓库不合并本地仓库