
本地仓库 = 工作区 + 版本区
版本区(版本库)即.git文件,暂存区(stage) + 分支(master) + 指针Head
1.配置信息
`git config --global user.name `"你的名字" 让你全部的Git仓库绑定你的名字
`git config --global user.email` "你的邮箱" 让你全部的Git仓库绑定你的邮箱
2.正常流程
`git clone + 仓库地址` 下载克隆文件
`git init ` 原本本地仓库只包含着工作区,这是最常见的工作状态。此时,git init一下,表示在本地区域创建了一个.git文件,版本区建立。
`git add .` 表示把工作区的所有文件全部提交到版本区里面的暂存区,当然你也可以通过 git add ./xxx/ 一条一条分批添加到暂存区。
`git commit -m "xxx" `把暂存区的所有文件提交到仓库区,暂存区空空荡荡。
`git remote add origin https://github.com/name/name_cangku.git ` 把本地仓库与远程仓库连接起来。
`git push -u origin master ` 把仓库区的文件提交到远程仓库里。
`git push -u origin <其他分支>` 把其他分支提交到远程仓库
`git pull` 把最新的提交从远程仓库中抓取下来,在本地合并,和git push相反
3.查看改变和历史
`git status`查看当前仓库的状态
`git diff `查看文件修改的具体内容
`git diff HEAD -- readme.txt` 命令可以查看工作区和版本库里面最新版本的区别:
`git log` 显示从最近到最远的提交历史
`git reflog` 显示命令历史
`git log --graph` 查看分支合并图
`git remote` 查看远程库的信息,会显示origin,远程仓库默认名称为origin
`git remote -v` 显示更详细的信息
3.回退修改版本操作
Git必须知道当前版本是哪个版本,在Git中,用HEAD
表示当前版本,,
上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,
当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
。
`git reset HEAD <file>` 可以把暂存区的修改撤销掉,重新放回工作区。
`git reset --hard HEAD^` 回溯版本当前版本,
`git reset --hard + 版本号` 回溯版本,版本号在commit的时候与master跟随在一起。
`git rm < filename >` 删除版本库的文件。
`git checkout -- <file>` 撤销命令,用版本库里的文件替换掉工作区的文件
1. 修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态。
2. 已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
4.分支操作
`git checkout -b <分支名字>或者git switch -c <分支名字>` 创建+切换分支:
`git branch` 查看当前所有分支
`git branch <分支名字>` 创建分支
`git checkout <分支名字>或git switch <分支名字>` 切换到分支
`git merge <分支名字> ` 合并分支]
`git merge --no-ff -m "备注信息" <分支名字>` 请注意--no-ff参数,表示禁用Fast forward,因为本
次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去,合并后,我们用git log看看分支历史。
`git branch -d <分支名字>` 删除分支,有可能会删除失败,因为Git会保护没有被合并的分支
`git branch -D + <分支名字>` 强行删除,丢弃没被合并的分支
`git checkout -b dev` //新建并切换到本地dev分支
`git pull origin dev` //本地分支与远程分支相关联
//在本地新建分支并推送到远程
`git checkout -b test`
`git push origin test` //这样远程仓库中也就创建了一个test分支
5.冻结操作(进行的工作没有做完,还不能提交)
`git stash` 当有其他任务插进来时,把当前工作现场“存储”起来,以后恢复后继续工作
`git stash list` 查看你刚刚“存放”起来的工作去哪里了
`git stash apply` 恢复却不删除stash内容
`git stash drop` 删除stash内容
`git stash pop `恢复的同时把stash内容也删了
5.标签操作
`git tag` 查看所有标签,可以知道历史版本的tag
`git tag <name>` 打标签,默认为HEAD。比如git tag v1.0
`git tag <tagName> <版本号>` 把版本号打上标签,版本号就是commit时,跟在旁边的一串字母数字
`git show <tagName>` 查看标签信息
`git tag -a <tagName> -m "<说明>" `创建带说明的标签。-a指定标签名,-m指定说明文字
`git tag -d <tagName>` 删除标签
`git push origin <tagname>` 推送某个标签到远程
`git push origin --tags `一次性推送全部尚未推送到远程的本地标签
`git push origin :refs/tags/<tagname>`删除远程标签<tagname>
注意
- SSH警告
当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告,如下所示,这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。
The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?
Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:
Warning: Permanently added 'github.com' (RSA) to the list of known hosts.
- 哪些分支需要推送
-
master
分支是主分支,因此要时刻与远程同步; -
dev分支
是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步; -
bug
分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug; -
feature分支
是否推到远程,取决于你是否和你的小伙伴合作在上面开发。
参考文章:https://www.liaoxuefeng.com/wiki/896043488029600
https://www.jianshu.com/p/2b3b23d6166c
https://www.jianshu.com/p/c2ec5f06cf1a
网友评论