本地仓库
git init 初始化git本地仓库
git status 查看工作区的状态
git log 查看提交历史
git reflog 查看命令历史
git log --graph 查看分支合并图
git add 将文件的改动添加到暂存区
git commit 将暂存区的所有内容提交到本地的当前分支
git checkout -- <file> 撤销还未 add 的修改,恢复已经删除却未add的文件
git reset HEAD <file> 撤销 add 后,却未 commit 的修改,再次 git checkout -- <file>回到未修改之前的状态
git reset --hard HEAD^ 回退到上一个commit版本
git reset --hard HEAD^~2 回退到前两个版本
git reset --hard 1904a 回退到特定版本号,提交时git push -f
git revert 版本号 新生成一个与指定版本相同的commit(反做,可能会有冲突,解决冲突,正常提交)
git rm <file> 从暂存区删除文件
远程仓库
git remote add origin git@github.com:michaelliao/learngit.git 关联远程仓库
git clone git@github.com:michaelliao/gitskills.git 从远程仓库clone一个本地库
git remote -v 查看详细的远程分支内容
git push -u origin master 第一次推送内容到远程master分支
git pull 从远程分支拉代码
git fetch origin dev:dev 拉取远程dev分支内容到本地dev,本地无则新建dev分支(不会自动merge,不会切换分支)
git push 像远程分支推送内容
分支
git checkout -b <name> 创建并切换分支
git checkout -b dev origin/dev 创建并切换分支,并与远程分支建立关联
git checkout <name> 切换分支
git branch 查看当前分支
git merge <name> 合并分支
git branch -d <name> 删除分支
git branch -D <name> 强制删除分支,比如没有被合并过的分支
git merge --no-ff -m "merge with no-ff" <name> 合并分支的时候保留分支信息,并生成一个新commit。 合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
git stash 储藏工作现场
git stash list 查看历史stash
git stash pop 恢复工作现场,并删除stash
标签
git tag <tagname> 创建标签
git tag 查看所有标签
git tag <tagname> f52c633 在指定的commit上打标签
git tag -a <tagname> -m "balabala" 1094adb -a:标签名,-m:标签说明
git show <tagname> 查看带说明的标签
git tag -d <tagname> 删除标签
git push origin <tagname> 推送标签去远程仓库
git push origin --tags 推送所有标签去远程仓库
git push origin --tags 一次性推送所有tags
git push origin:refs/tags/<tagname> 远程删除一个标签