git介绍
版本控制工具,管理项目起来相当方便,可回滚版本。
基本配置
-
安装好后,点击开始菜单“Git”->"Git Bash",蹦出窗口,就是安装成功
-
绑定用户名、邮箱地址
git config --global user.name "Your Name"(用户名) git config --global user.email "email@example.com"(邮箱地址) -
git记住账号密码(会方便很多)
git config --global credential.helper store -
git指令显示颜色,更加有辨识度(看个人情况使用)
git config --global color.ui true
- 配置
gitignore文件,参考官方github.com/github/giti…
简单使用
-
初始化仓库,就是创建了一个版本库
git init -
将文件提交到版本库,经历以下步骤
-
文件添加到版本库(暂时放在暂存区中):
git add test.js # git add 后面跟的是想添加的文件 #可以简化指令,将所有有更新的文件添加到版本库中 git add . #或者 git add -A -
文件真正提交到版本库中(暂存区的修改全部提交):
git commit -m "xxx" #xxx为文件说明
-
-
从版本库中删除文件
git rm <file> #<file>为文件名 #接下来还要将提交到版本库 git commit -m "删除file文件" -
如果你修改了某个文件的内容,可使用以下指令查看(对比版本库里的文件)
git diff -
查看文件在工作区和暂存区的状态
git status -
将修改的文件内容暂时缓存,不提交到版本库
git stash # 把当前还未提交的内容缓存起来,等以后可继续工作 git stash list # 查看stash的内容 git stash pop # 恢复内容同时删除 stash 的内容 -
其他可能会涉及的命令
git checkout -- file # 撤销工作区的修改,可使用此命令,让版本库的版本替代工作区的版本(误删除使用) git reset HEAD <file> # 暂存区对应文件撤销并回到工作区 git reset # 暂存区全部内容撤销,并回到工作区工作区可以理解为我们在编写代码的地方
远程仓库
-
创建SSH Key
ssh-keygen -t rsa -C "youremail@example.com"在主目录里找到 .ssh目录 把 id_rsa.pub(公钥) 复制,粘贴到GitHub的
Account settings的SSH Keys的Key文本框 -
关联远程仓库
git remote add origin git@github.com:(自己的GitHub账户名)/(仓库地址) -
推送到远程库(初始时)
git push -u origin master之后可以简化指令
git push origin master -
查看远程库
git remote -v -
克隆远程库,拉取到本地
git clone *** # ***为仓库地址 -
拉取远程仓库最新版本(后面没带参数,默认拉取主分支)
git pull # 自动合并 git fetch # 不自动合并,需手动merge区别在于:本地版本库里的head/分支名的commitID有没有更新
版本回退
重要
-
查看提交记录
git log -
回退版本,参数说明
git reset --mixed # 默认,将文件回退到工作区,丢弃暂存区的文件 --soft # 将文件回退到暂存区 --hard # 将文件回退到修改前,丢弃工作区和暂存区的文件 git reset --hard HEAD~* # 返回上*个版本 git reset --hard *** # ***为commitID(随便取前几个书都可以)如果不小心回退错了,可以返回之前的版本
git relog # 查看每一次操作指令 git reset --hard *** # ***为操作指令的commitID
分支管理
多人合作开发的基础取决于分支管理
-
创建分支,并切换到此分支
git branch dev # 创建dev分支 git checkout dev # 切换到dev分支 # 可使用一气呵成的指令 git checkout-b dev切换到已有分支,也可以使用**
git switch dev** -
查看当前所有分支
git branch -
删除分支
git branch -d dev #dev为分支名 -
切换回mster分支,并合并
git checkout master git merge devdev分支上的内容需先提交到版本库,否则就没什么意义
-
查看分支合并图
git log --graph -
分支重命名
git branch -m old new # old为分支旧名, new为分支新名 -
有时可能需要将特定分支提交到当前分支,可使用
git cherry-pick **** # ****为特定分支的commit id的前几位
合并分支
讲一下合并分支的注意点吧,通常会涉及git merge和git rebase两种指令
-
git merge-
解决冲突,合并分支后会形成一个新的commitID,保持在最后边
本质上就是提交了一个commit
-
-
git rebase-
解决冲突,合并分支后不会形成新的commitID
手动改冲突内容,添加到暂存区后,使用了**
git rebase --continue**命令,使其继续执行合并工作 -
commit记录很优雅地串成一条直线(很不利于查看有无合并过)
-
补充些指令参数说明
git rebase --continue # 继续执行rebase操作 git rebase --abort # 终止rebase操作,回到rebase开始前
-
两种合并命令效果不同,应用场景不同,但也不是固定的,实际想用哪个还是取决于团队。有的团队就想用rebase命令,让记录更直观、清晰,也不想有多余的记录(指生成新commitID)。
这里顺便说一下rebase的其他用处,有时我们想让几个commit合并成一个commit(为了开发规范),再合并到主分支。
git log # 先查看你想合并的commit
git rebase -i HEAD~* # 合并前*个commit
#之后进入编辑页面,将前(*-1)个commit的pick修改为s(squash),保存退出即可。
ps:使用git rebase命令后,推送到远程库需要强推,使用git push -f
标签管理
git tag<name> # 打标签
git tag -a <name> -m<message> # 创建有说明的标签
git tag # 查标签
git show <tagname> # 查看标签信息
git tag -d <tagname> # 删除标签
git push origin --tags/git push origin <tagname> # 推送标签到远程
# 删除远程标签
git tag -d <tagname> # 删除本地
git push origin :refs/tags/<tagname> # 删除远程
git多人协作总结
仓库创建者需邀请参与人员进仓库(让其有权限推送到远程仓库上),之后参与人员通过以下步骤进行操作:
git clone git@github.com:*** # 克隆远程库,***为仓库名
git checkout -b dev # 创建本地dev分支, dev为分支名
#在自己分支上开发完毕后,三部曲(add、commit、push),第一次推送可能不成功(分支还没关联到远程),按照面板的提示输入指令即可
解决冲突(这里使用merge)
git pull # 从远程库拉取最新版,在主分支上执行
git merge dev # 合并分支,手动解决冲突,修改后记得提交到版本库
git push # 推送