仅以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 origin
git 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