Git常用命令
查看帮助文档
1 | git help -a |
创建、提交、修改、删除、查看
创建版本库git init
将文件添加进入工作区(暂存区)git add filename,filename
将文件提交至仓库git commit -m "提交说明"
查看仓库状态(可以查看本仓库文件是否经过修改)git status
查看修改内容git diff filename
查看工作区和版本库最新版本区别git diff HEAD -- filename
放弃工作区修改(两种情况:将文件退回至git add | git commit 之前的状态)git checkout -- filename
文件git add 后退回至为add状态,需要两步(将暂存区清空,退回至上一步)git reset HEAD filename
git checkout -- filename
删除文件git rm filename
git commit -m "remove filename"
删错文件(没有用上面的命令删除)git checkout -- filename
版本管理
查看历史修改记录(时间由近到远)git log
git log --pretty=oneline
版本号—修改说明
9a5ab0a322a61185ea0ce38039340505135b65b3 (HEAD -> master) GPL
58d20e868b89baa3000c00f7ed6d107df67d4b14 add distributed
17decf5b8210e73c65541816f15cf78c945ba83f wrote a readme file
HEAD表示当前版本,上一版本为HEAD^,上上个则为HEAD^^,向上多个版本可以写成 HEAD~15
退回到上个版本git reset --hard HEAD^
回溯至当前版本git rest --hard 当前版本号(可以不用写全)
查看命令历史git reflog
远程仓库操作
将远程仓库与本地库关联(远程仓库的默认名称是origin)git remote add origin git@github.com:Hypnotised1/test.git
将本地库进行推送git push -u origin master
-u参数指定默认分支,指定后可以直接使用 git push 进行提交
查看远程仓库信息git remote -v
推送分支git push origin branchname
删除远程分支git push origin :branchname
冒号代表删除
分支
Git中的主分支是master,HEAD指向的是分支(master或其他分支),master指向提交,从而使得HEAD指向最新的提交.
创建分支
git checkout -b branchname,参数b表示创建分支并切换至该分支,可以下面两个命令来表示git branch branchname
git checkout branchname:切换至branchname分支
查看分支git branch
合并分支(将branchname合并至当前分支,默认采用Fast forward模式),Fast forward模式方便快捷但是删除分支后会丢失分支信息git merge branchname
删除分支git branch -d branchname
强制删除分支git branch -D branchname
解决分支冲突(手动解决冲突)git merge branchname
修改文件,重新add,commit
查看分支合并情况git log --graph --pretty=oneline --abbrev-commit
不使用Fast forward模式进行合并git merge --no-ff -m "merge with no-ff" branchname
-m表示的是进行提交,不使用Fast forward模式在查看分支合并情况时可用看出是进行过提交和修改.
Bug分支:在开发分支上进行开发,还不能提交至主分支,但是出现了bug,需要进行切换至bug分支进行解决git stash
,将当前工作分区进行储存
git stash list
,查看工作分区表
git stash apply
,恢复工作分区, 需要使用git stash drop来删除工作区git stash pop
,恢复工作分区的同时将该工作区删除git stash apply stash@{0}
恢复指定工作分区
标签
注意:标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签。
标签,默认是打在最新提交的commit上的git tag tagname
git log --pretty=oneline --abbrev-commit
给历史提交打标签git tag tagname commitID(075bc67)
查看标签信息git show tagname
创建带有说明的表情git tag -a v1.1 -m "version 1.1 "
删除标签git tag -d v1.1
推送标签至远程服务器git push origin tagname
推送所有标签至远程服务器git push origin --tags
删除已经推送至远程的标签:删除本地标签,删除远程标签git tag -d v0.9
git push origin :refs/tags/v0.9
子模块
添加子模块git submodule add git@github.com:Hypnotised1/BlogSource.git
克隆带子模块的项目
1 | git clone git@github.com:theme-next/test1 |
忽略特殊文件设置.gitignore
修改该文件的内容,但是已经纳入版本管理的文件修改.gitignore是无效的,解决办法是先把本地缓存删除,然后再提交
1 | git rm -r --cached . |