0%

git命令

仅以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 origingit 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 devgit 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的修改到dev
git 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
2
3
git tag -d v0.9 //先删除本地的标签
git push origin : refs/tags/v0.9 //再远程删除
//refs/tags/ 是固定的

最后附上一张Git Cheat Sheet
Git Cheat Sheet