一. 安装Git
去Git官网,下载安装包,一路点next,默认安装。
juejin.cn/post/697542… 这篇教程很全面
安装之后,在任意空白处右键,菜单显示有 Git GUI Here 和 Git Bash Here ,
表示Git安装成功。
【报错】git安装之后,执行命令显示git不是内部或外部命令,也不是可运行的程序。
安装git之后,在终端输入git命令可能出现如下情况
-
首先确认是否已经成功安装git,在电脑卸载程序界面看一下,有git代表安装成功了。 如果成功安装,就是没有配置环境变量引起的
-
配置完环境变量需要重开终端,如果是在IDE的终端也需要重开。这一步很重要,我在这里卡了很久。
二. 配置Git
1.新建文件夹,为防止出错,最好保证该文件夹目录都是英文。
2.打开新建文件夹,空白处右键,菜单中选择 Git Bash here ,弹出命令行,输入命令 git init ,目录下会生成一个新的 .git的文件夹,用于本地代码仓库。
3.配置本地仓库的账号和邮箱
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
4.为了避免每次远程访问需要输密码,将使用ssh登陆。ssh应该与本机信息绑定。查看自己电脑 C:\Users\Administrator 目录下是否有 .ssh 文件夹。如果没有就需要生成。
$ ssh-keygen -t rsa -C "youremail@example.com"
按 Enter 键一直到结束。
5.ssh只是本地详细,需要在Github中备份,才能被验证。打开自己的Github,在My Profile中,点击Add Public Key,title随意。
6.key中的内容在本机C盘中,C:\Users\Administrator,里面有个.ssh文件夹,用文本文档打开 id_rsa.pub ,将里面的内容全部复制到key中,即可
7.到此配置完毕,
三、克隆项目
开始克隆项目,后在Git Bash here或者其他终端中输入:
$ git clone git@github.com:michaelliao/gitskills.git
git clone 后面是需要克隆的项目地址
【注意】克隆指定分支
git clone默认克隆 master 分支。但是很多大型项目的master是保护分支,主要代码在其他分支上,所以克隆的时候要仔细观察代码库。
如果需要克隆制定分支,命令为
git clone -b <指定分支名> <项目地址>
【提示】克隆项目之后可以查看远程主机地址
$ git remote -v : 查看远程主机的地址
四、提交PR流程及注意事项
开发时建立并切换自己的新分支
$ git checkout -b support/fixdocs:新建分支 support/fixdocs , 并切换到该分支。
- 分支命名需要注意:
- 分支的命名要表明这个分支要实现的**功能**
- 例子中以 support/xx 命名的分支会**自动折叠**到 support 文件夹,
- 对于同一个 PR,每次修改都需要提交到**同一个分支**上
$ git status: 检查所在分支修改过的文件
提交流程
-
$ git add <被修改的文件名>: 把被修改的文件提交到暂存区- git add 之前要注意:
- 及时保存,否则可能导致编辑内容丢失
- 无用注释删掉,不需要的代码可以删掉
- 无关代码段之间加空行隔开,提高代码可读性
- 注释必须紧挨关联代码
- 文件提交之前查看工作树,核对修改部分
- 变量、 方法命名要有代表性
- 重复用到(2次及以上)的代码段可以提升为新的变量或方法
- git add 之前要注意:
上面例子中第六行的空格应该删掉
-
$ git commit -m "<type>(<scope>): <short summary>": 把修改的代码提交到当前分支,commit 信息格式参考:github.com/angular/ang… ,或者参考 github 仓库历史提交 -
$ git push origin <本地分支名>: 将当前分支推送到自己的远程仓库, 到这一步就大功告成啦 -
重新提交相同的文件要重新从 master 上拉去新的分支,再提交
-
新同学还没有成为项目成员的过渡时期,不能直接提交 PR 到小组的项目上,
- 需要先将项目fork到自己的仓库中,
- 再将远程仓库 clone 到本地,
- 提交 PR ,要先提交到自己 clone 的地址
五、提交 PR 之后 CI 不过的原因及解决办法:
- 可能因为环境不稳定等其他问题,可以重跑一下试试
2. 提交之前先在本地测试,如果项目里有供我们测试的项目,一般在 /examples 或者 /test 文件夹中,验证步骤:
$ cd 测试项目文件夹$ npm run dev,每个项目的运行方式可能不一样,看一下 配置文件或者package.json 或者问问团队师兄。- 排查代码内容问题
-
可能因为 master 上更新的内容和我们提交的内容有冲突 ,导致我们的 CI 挂了,可以重新拉取最新分支:
$ git fetch origin拉取远端分支到本地$ git merge upstream/master合并 master 分支- 祝大家合并分支万事大吉,否则就要进入下面的步骤
六、合并分支失败的解决办法
- 如果找不到问题症结所在,可以
$ git reflog查看日志,找到合并分支出问题的那次操作,加 - h 可以查看更多帮助
然后 git reset <版本号> --hard 将本地项目回溯到对应操作之前版本。
- 切换空间到 master 主干分支上:
$ git checkout master - 更新master代码到本地:
$ git pull origin master - 切换到自己的工作分支:
$ git checkout <工作分支> - 合并主干到自己的分支:
$ git merge master
执行完上述操作,查看工作树,没有冲突可以直接 $ git stash pop ,如果工作树显示如下图则表示有
“合并更改“里的文件就是有冲突需要我们手动处理的文件
- 解决冲突:
代码内容或依赖配置冲突
- 如果 master 分支上合并的内容和本地内容的冲突 git 无法帮我们自动解决,就需要我们手动解决冲突啦~Git用 <<<<<<<,=======,>>>>>>> 标记分离不同分支的内容,将需要保留的修改内容与 master 分支的更新合并即可解决冲突。
可以点击 'Accept Incoming Change'(合并过来的 master 分支的内容) 或者 'Accept Current Change' (本地修改的内容)以选择最终保留的部分。
有依赖版本冲突
-
如果项目中有依赖版本冲突,需要清除项目各层依赖:
$ git clean -dfx,然后在重新安装依赖$ pnpm i -
如果
package.json配置文件有冲突,要处理冲突之后重新安装依赖 -
重新安装依赖之后会有文档更新,
$ git status检查变更文件,$ git add <被修改的文件名>添加到暂存区再进行后续操作
$ git commit --no-verify: merge 操作之后会自动提交,提交时会把提交的文件自动和 (我们不需要考虑的)commit 规则对比,这个命令可以避免对比出问题导致报错。$ git diff master --stats: 比较文件的不同,即比较文件在暂存区和工作区的差异。$ git push origin --force: 强制推送到远端,并覆盖之前的提交
避免多次 merge 污染提交记录,可以使用 rebase:
git fetch origin feature/lintgit rebase就可以了
撤销已经 push 的内容
撤销到 commit 之前的状态,可以选择撤销前面几次的提交 git reset --soft HEAD~2 然后push 的时候 -f 就可以强制覆盖前面的提交了;会把撤回的几次提交记录都覆盖;
拉取项目中指定分支
git 拉取指定分支 dev
git pull origin dev
参考: blog.csdn.net/benben_2015…
其他常用 git 终端命令
- git reflog 查看日志 git reflog -h 帮助功能
- git diff master -h (帮助)
- git diff master --stats
- git push force —upstream,强制推送到远端,并覆盖之前的提交
- git branch -d < branch > 删除一个分支
- 如果公司的项目使用 tnpm 或者 pnpm 安装以来的,那么在开发规程中不要一时手贱 npm 和 pnpm 、tnpm 混着用了,否则项目跑不起来都不知道为什么
- git remote add origin 仓库链接
- git push -u origin master: 默认每次推送到 master 分支上