仅以readme.txt为例
创建版本库
git init 初始化目录为git仓库git add readme.txt 添加文件到暂存区git add . 添加所有git commit -m "wrote a readme file" 将暂存区中的提交并说明
版本控制
git status 查看仓库当前状态git diff readme.txt 查看具体修改内容git log 查看提交日志git log --pretty=oneline 精简信息git reset --hard HEAD^ 回退到上一个版本(HEAD表示当前版本,HEAD^^表示上上一个版本,HEAD~100表示上100个版本)cat readme.txt 查看文件内容
git reset --hard 1094a 回退到版本号为1094a的版本git reflog 查看命令历史git checkout -- readme.txt 撤回对工作区的修改git reset HEAD readme.txt 撤销暂存区的修改重新放回工作区(然后再用上一条指令)
rm readme.txt 删除工作区文件git rm readme.txt 删除版本库git commit -m "delete readme.txt 提交git checkout -- readme.txt从版本库中恢复删除的
远程仓库
git remote add origin git@github.com:dstx123/仓库名.git 关联远程仓库
如果出现错误提示:fatal: remote origin already exists.则使用命令 git remote rm origin和 git remote add origingit push -u origin master 第一次把本地库的master分支推送到远程库上(-u加上后也会关联其他分支)git push origin master 后来推送
git clone git@github.com:dstx123/仓库名.git 克隆一个本地库
分支管理
git checkout -b dev 创建并切换到dev分支
这条命令相当于git branch dev 和 git checkout dev两条命令(创建和切换)git branch 查看当前分支git checkout master 切换到master分支git merge dev 将dev分支合并到master分支上git branch -d dev 合并完成后删除dev分支git switch -c dev 创建并切换到dev分支git switch master 切换到master分支
分支合并冲突时手动修改git log --graph --pretty=oneline --abbrev-commit查看分支合并图
git合并分支时采用fast forward模式,这种模式看不出曾经做过合并,在删除分支后,会丢失分支信息,故采用git merge --no-ff -m "merge with no-ff" dev 的指令合并并评论
git stash 存储当前工作(使用后工作区干净,可执行其他分支操作)git stash list 查看刚刚的工作现场git stash pop 恢复并删除刚刚存的stash内容git stash apply 恢复但不删除刚刚的stash内容
dev分支是早期从mster上分出来的,所以如果刚刚对master分支修改了,此时也需要对dev分支修改。git cherry-pick 4c805e2 用之前修改的版本号直接复制master的修改到devgit branch -D feature删除还未合并的feature分支git rebase 把分叉的历史提交记录整理成一条直线
标签管理
git checkout master 先切换到要打标签的分支上git tag v1.0打上一个v1.0的标签git tag 查看所有标签(标签不是按时间顺序的,是按字母顺序)git tag v0.9 f52c633 打到指定版本号的commit上(默认打到最新提交的commit上)git show v0.9查看标签信息git tag -a v0.1 -m "version 0.1 released" 1094adb 创建带有说明的标签(git show v0.1即可查看)git tag -d v0.1 删除标签git push origin v1.0 推送某个标签到远程git push origin --tags 推送所有尚未推送的本地标签
如果要删除远程标签
1 | git tag -d v0.9 //先删除本地的标签 |
最后附上一张Git Cheat Sheet
Git Cheat Sheet