Git常用命令

查看帮助文档

1
2
git help -a
git help -g

创建、提交、修改、删除、查看

创建版本库
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
2
3
git clone git@github.com:theme-next/test1
git submodule init
git submodule update

忽略特殊文件设置.gitignore

修改该文件的内容,但是已经纳入版本管理的文件修改.gitignore是无效的,解决办法是先把本地缓存删除,然后再提交

1
2
3
git rm -r --cached .
git add .
git commit -m "update .gitignore"