My Little World

git问题处理

git pull 更新代码出现问题

1
2
3
4
5
6
7
8
9
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details

git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

git branch --set-upstream-to=origin/<branch> develop_hotfix

解决办法
git branch -D 分支名 ##删除本地待更新分支
git checkout 分支名 ##将待更新分支切回来
Git pull 再更新

git remote add origin 遇到远程分支已存在的情况

解决办法
git remote rm origin ##先删除远程分支
git remote add origin 地址 ## 再修改远程仓库地址

git push 遇到问题

1
fatal: unable to access 'https://github.com/YooHannah/WeiXindemo.git/': Failed to connect to github.com port 443: Timed out

解决办法
先删除远程分支 git remote rm origin
再将本地分支的上游分支设置为远程分支同时push
git push –set-upstream origin master
以后再执行git push 就不会出现报以上错误或一直没反应的状况

1
error:src refspec master does not match any

只进行了init,没有add和commit,本地版本库为空, 空只进行了init,目录不能提交

1
2
3
If no other git process is currently running, this probably means a
git process crashed in this repository earlier. Make sure no other git
process is running and remove the file manually to continue.

解决方法:
rm -f ./.git/index.lock

npm 运行项目错误

npm run dev error [npm ERR! code ELIFECYCLE]
node_modules安装问题,执行以下:
rm -rf node_modules rm package-lock.json npm cache clear –force npm install

git merge 之后,git commit 出现问题

husky > pre-commit hook failed (add –no-verify to bypass)
git merge 之后,git commit 出现问题,解决:
出现这样的原因在于楼主使用了husky,并且配置了”precommit”: “npm run lint”
因此会在你git commit的时候执行npm run lint 也就是eslint –ext .js src test
如果报错的话,会返回非0,从而组织代码commit。
因此有两种方式解决:

  1. 执行npm run lint, 根据提示修改错误,如果是其他人的报错,请求别人协助(推荐)
  2. git commit -m ‘’ -n 强制推送
    3.更新远程分支列表
    git remote update origin –prune

IE报vuex requires a Promise polyfill in this browser问题解决

第一步: 安装 babel-polyfill 。 babel-polyfill可以模拟ES6使用的环境,可以使用ES6的所有新方法
npm install –save babel-polyfill
第二步: 在 Webpack/Browserify/Node中使用
在webpack.config.js文件中,使用
module.exports = {
entry: {
app: [“babel-polyfill”, “./src/main.js”]
}
};

git 分支处理

背景

A同学提交了两次代码,但在第二次提交代码前,B同学有提交自己的代码,并且在合并代码时,
将A同学第一次提交的代码merge丢弃了,导致A同学第一次代码无法合并到主分支

原理知识

git reset 可以撤销commit命令的提交
git rebase 把分叉提交历史’整理’成一条直线
git stash 可以把工作现场’储藏起来’,等以后恢复现场后可以继续工作

分析

在分支代码处理时,A同学本地有主分支host(公共分支)和自己的本地分支local,
工作流程是
在自己本地分支local分支开发完毕后,
切换host分支,git pull 拉取远端分支更新后,
将本地分支local合并merge到host分支
然后git push到远端

而B同学直接在本地的主分支(公共分支)开发,git push时冲突,
git pull 拉取远端A同学第一次的代码时,直接将代码变更进行了丢弃
然后push了自己的代码到远端分支

A同学第二次提交时,并不知道B同学丢弃了自己第一次提交的代码,
在进行第二次提交时,在host上拉取远程更新之后,
继续合并推送最终结果就是自己的第一次代码丢失了

解决

利用A同学本地分支local没有合并远程分支的间隙,将A同学的两次提交保存下来,回到两次提交前的状态
然后拉取B同学的提交,再将A同学的两次提交拿出来进行合并,这样就可以实现三次提交都保存下来,再提交到远端

在A同学的本地分支进行操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1.在主分支host上取消第二次提交
git reset --hard HEAD~1

2.将远端第二次提交撤销掉,让分支保留在B同学提交的状态
git push --force

3.切换本地分支local,回滚版本到两次提交前
git reset HEAD^^

4.保存两次提交 可以通过git stash list查看保存状态
git stash
git stash list

5. 合并主分的B同学的提交到本地分支local,这时本地分支就有B同学的代码变更了
6. 取出A同学的两次提交,与B同学代码进行提交
git stash pop
7. 切换主分支host,合并本地分支local,推送到远端