本文共 2198 字,大约阅读时间需要 7 分钟。
git简述:就是一个分布式的版本控制管理工具。
集中式:通俗来讲啊就是秉承“用一次拿一次,还得在联网的情况下” 分布式:就是每台电脑都是一个完整的版本库,可以提交到自己的电脑上,并且不需要联网。备注:
- 所有的版本控制工具都是跟踪文件的改动(txt文件,php等源码文件),而图片视频等二进制文件无法跟踪。(例如word文档也是二进制不能进行追踪修改的内容)。
- 所有文本都是有编码(GBK,shift_JIS等)(注释:推荐使用UTF-8)。
- 在文件中.get文件是git的版本库。
git 提交
git init(可以将目录转为git可管理的仓库)git status(查看状态)git add .(readme.md)(添加文件到git版本库中的暂存区)git status(查看状态)git commit -m "comment msg" (提交到版本库中)git push(提交到远程的仓库中)
git 版本回退
git diff readme.txt (查看修改内容)git log (查看提交的历史记录,由最新到最久,回到过去的版本)git log --pretty=oneline(和git命令一样,只是这个命令可以显示成一行,方便查看。格式为commit id comment msg)git reset --hard head^(^这个符号表示的是当前版本的上一个版本,^^就是当前版本的前俩个版本,如果很多的话可以写 head~100)git reset --hard 1902a...(commit id)git reflog (查看历史命令,回到未来的版本)
git工作区和版本库(暂存区+分支)
工作区:就是你电脑上的文件夹暂存区:就是你使用git add . 的时候文件存储到的是暂存区分支:git为我们自动创建的分支master,它的指向是HEAD
git checkout
git checkout -- file (丢弃工作区修改的内容,其中 -- 符号很重要,遗漏的话就是切换另一个分支的命令)git reset Head file (将文件修改后存到暂存区,可以使用该命令回到工作区,然后使用git checkout -- file 操作)
git 删除
git rm file (删除一个文件,如果版本库和工作区不一致了,并且确定要删除,最后是用git commit 提交即可)git checkout -- file (该情况是工作区误删之后,但是版本库里存在,可以使用该命令还原工作区)
git 远程库
origin 就是远程库git push -u origin master (本地库与远程库做关联,并提交,-u 就是本地与远程库的关联,以后提交可以不需要添加 -u)git remote -v (查看远程库信息)git remote rm (远程库删除,其实本质是解除本地与远程仓库的关系)
git 克隆
git clone address (从远程仓库克隆到本地库中,git 支持多种协议,但是ssh协议的速度最快)
git 分支
git branch 查看分支git branch (name) 创建分支git checkout (name) /git switch (name) 切换分支git checkout -b (name)/git switch -c (name) 创建分支并切换到当前分支git merge (name) 合并某分支到当前分支git branch -d (name) 删除分支
git冲突
首先手动解决冲突,然后提交,最后合并git log --graph 可以看到分支合并图git merge --no -ff -m "comment" dev (普通模式合并,合并后的历史有分支,能看出来曾经做过合并)
bug分支(看廖老师的网站)
修复bug 会通过创建新的bug分支进行修复,然后合并,最后删除。git stash 可以将当前现场储藏起来,然后回复继续工作(当手头工作没有完成时候,可以使用)git stash pop 回到工作现场git cherry-pick(把在别的分支上修改的bug复制到当前分支,避免重复劳动)
feature 分支
开发一个新的公共feature ,最好新建一个分支git branch -d (name) (如果要丢弃一个没有合并过的分支,可以通过该命令强制删除)
多人协作工作模式
git push origin (branch-name) 推送自己的修改到远程分支git pull 下拉远程最新代码。git push origin (branch-name) 推送代码到远程分支git branch --set-upstream-to (branch-name) origin/(branch-name) (家里本地分支和远程分支的关联)
rebase
rebase操作可以把本地未push的分叉提交历史整理成直线
.gitignore 忽略文件
在工作区目录下创建一个特殊的文件.gitignore文件,并上传到git版本库中*.class文件 表示 文件为.class为后缀的都在操作的时候被忽略不上传.* 表示以 .开头的文件不被上传
转载地址:http://faywi.baihongyu.com/