仓库管理
- 创建本地仓库
git init - 本地仓库连接远程仓库
git remote add origin git@github.com:yerik5101/test.git - 本地代码推送到远程仓库
git push -u origin master - 克隆远程仓库
git clone git@github.com:yerik5101/test.git 默认是master分支
git clone -b dev git@github.com:yerik5101/test.git 克隆指定分支,会在本地创建dev分支,并且本地dev分支会和远程dev分支关联 - 查看远程仓库
git remote 增加-v查看详细信息 git remote -v
常用命令
- 工作区、版本库
工作区就是我们的开发目录 版本库:.git文件夹。最重要的三部分:stage暂存区、git自动创建的第一个分支master、指向master的指针HEAD - 常规操作
git add test.txt 添加到暂存区
git commit -m "commit test" 提交到分支
git status 查看仓库状态
git diff test.txt 对比文件
git log 查看log信息
git log --pretty=oneline 格式化输出log信息
git reflog
git rm test.txt 删除文件 - git stash: 工作只进行到一半,没法提交,又需要切换到其他分支去,这种情况可以使用git stash存储工作区
git stash list 查看stash
git stash apply 恢复后stash内容不删除
git stash pop 恢复后stash内容删除
分支管理:
- 创建分支
git branch dev 创建本地分支,与远程分支没有关联 - 查看分支
git branch 列出本地分支,当前分支前面会标一个*号
git branch -a 列出本地分支和远程分支
git branch -vv 显示本地分支和远程分支的对应关系 - 切换分支
- git checkout dev 该dev分支必须在远程仓库中存在,否则会报错,切换完成后会本地dev和远程dev会自动关联
- git checkout -b dev 创建本地dev分支,与远程分支没有关联。相当于2条命令:git branch dev + git checkout dev
- git checkout -b dev origin/dev 创建本地dev分支,并关联指定的远程分支,该命令等同于 git checkout -t origin/dev
- 本地分支关联远程分支
git branch --set-upstream-to=origin/dev dev - 分支删除
git branch -d dev 如果dev分支没有被合并会报错分支未被合并
git branch -D dev 强制删除-d换成-D - 分支合并
git merge dev dev分支合并到master,先git checkout master切换到master分支,然后 git merge dev,git默认使用fast forward模式,这种模式删除分支后会丢失分支信息。禁用fast forward模式增加--no-ff参数,git会在merge时生成一个新的commit,这样在分支历史上可以看到分支信息 git merge --no-ff -m "merge with no-ff" dev - 创建远程分支
git push origin 本地分支名:远程分支名
git push origin dev:dev 需要先建立本地分支dev(本地分支和远程分支不会关联) - 删除远程分支
git push origin :dev 推送一个空分支到远程,可以达到删除的目的。
git push --delete dev 删除远程dev分支,与上条命令效果相同
回退操作
-
git checkout --test.txt 丢弃工作区修改
-
git reset HEAD test.txt 暂存区的修改撤销
-
git reset --hard HEAD(HEAD^,HEAD^^,HEAD~100) HEAD^表示回退到上一个版本,分支提交回退
tag管理
- 创建tag
git tag 1.0 创建1.0tag,默认tag是打在最新提交的commit上的
git tag 1.0 commitId 从某次提交打tag,需要找到提交的commitId
git tag -a 1.0 -m "message" commitId -a tag名称 -m tag信息 - 查看tag
git tag tag不是按时间顺序列出,而是按字母排序的
git show 1.0 查看具体的tag信息 - 删除tag
git tag -d 1.0 删除1.0tag - 推送tag到远程
git push origin 1.0 推送1.0tag到远程
git push origin --tags 一次性推送全部尚未推送到远程的本地tag - 删除远程tag
- 先删除本地tag: git tag -d 1.0
- 然后删除远程tag: git push origin :refs/tags/1.0