一、本地仓库
1、git init
创建git空仓库
2、git add
添加文件到暂存区
3、git commit -m "提交的描述"
提交暂存区的内容到工作区
4、git log git log --pretty=oneline (格式化查看log日志)
查看提交的日志
5、git reset --hard HEAD^ git reset --hard 提交的id
回退到上一个版本(工作区和版本库一起修改)
6、git reflog
如果回退到上个版本后悔了,可以继续使用这个reflog查看之前的版本在选择回退到哪个版本
7、git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支
8、git diff HEAD --
查看工作区和版本库里面最新版本的区别
9、git checkout --
两种情况:
①:在工作区修改的内容还没有add到暂存区,执行后会回到与版本库中的一模一样的状态
②:已经把工作区的内容add到暂存区后,再次修改工作区的内容,执行后会保持已经添加到暂存区的状态
10、git reset HEAD
可以把暂存区的修改撤销掉(unstage),重新放回工作区。
11、git rm
删除工作区和暂缓区的文件
二、远程仓库
1、git remote add origin 地址
关联远程仓库
2、git push -u origin master
第一次把本地内容推送到远程仓库
3、git push origin maste
把本地master分支的最新修改推送至远程仓库(github)
4、 git clone 地址
如果想拷贝github上的项目用上面的命令(克隆下来以后只能看到master分支)
5、git remote
查看远程仓库信息(当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin)
6、git remote -v
显示更详细的信息
7、git push origin <分支名>
这是分支的推送,可以把本地的分支推送到远程仓库中的分支
8、git checkout -b dev origin/dev
当你clone了一个项目之后是查看不到除了master以外的分支,所以需要用以上代码创建并切换分支
9、git branch --set-upstream-to=origin/dev dev
关联本地分支与远程分支,这样就能采取git pull命令拉取远程仓库的最新代码(可能会有冲突)
10、git pull(git pull origin dev)
拉取分支代码(在拉取之前可以用git diff进行查看,避免冲突)
三、分支管理
1、git checkout -b <分支名>
git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:
$ git branch <分支名>
$ git checkout <分支名>
2、git branch
查看当前的分支
3、git checkout master
切换分支,工作区的内容也跟着一起切换。
4、git merge <分支名>
合并分支
5、git branch -d <分支名>
合并之后删除分支
6、git log --graph --pretty=oneline --abbrev-commit
分支有冲突时查看分支情况
7、git merge --no-ff -m "merge with no-ff" dev
分支管理策略:因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。
合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
8、git stash
保存当前分支的工作现场,可以去修改着急的bug分支
9、git stash list
查看有多少个stash
10、git stash pop
恢复工作现场同时把stash删除掉 (git stash apply 恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;)
11、git stash apply stash@{0}
可以有多次stash,恢复指定的stash
12、git branch -D <分支名>
开发新功能时需要新建个feature分支,强行删除分支上的内容。
三、标签
1、git tag
默认标签是打在最新提交的commit上的
2、git tag
查看所有标签
3、git tag
指定commitid打标签
4、git show
显示对应标签上提交的信息
5、$ git tag -a
创建带有说明的标签,用-a指定标签名,-m指定说明文字
标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签
6、git tag -d
删除标签
7、git push origin
推送到远程标签
8、git push origin --tags
一次性推送全部尚未推送到远程的本地标签
9、git tag -d
删除远程标签先删除一个本地标签,然后在删除远程标签
10、git push origin :refs/tags/
删除远程标签