拉取远程指定分支并创建本地分支(新创建的本地分支拷贝了一份指定的远程指定分支)
方法一
使用如下命令:
git checkout -b 本地分支名 origin/远程分支名
方式二
使用如下命令:
git fetch origin 远程分支名:本地分支名
本地分支和远程分支建立映射关系的作用
建立本地分支与远程分支的映射关系(或者为跟踪关系track)
这样使用git pull或者git push时就不必每次都要指定从远程的哪个分支拉取合并和推送到远程的哪个分支了。git branch -vv
输出:
上面的本地分支和远程分支都有映射关系,如果没有,就需要手动建立:git branch -u origin/分支名
,
或者git branch --set-upstream-to origin/分支名
origin
为git地址的标志,可以建立当前分支与远程分支的映射关系。
撤销本地分支与远程分支的映射关系
git branch --unset-upstream
之后可以再次用git branch -vv
查看本地分支和远程分支映射关系
上面的映射跟在本地创建分支后,再把本地创建的分支推送到远端并关联远端一个道理。
(1)本地创建并切换到新建的分支:
git checkout -b 新建分支名
(2)本地创建的分支推送到远端并关联远端:
git push -u origin 新建分支名
删除本地分支:(删除指定分支前先切到别的分支再删除,不能在被删除分支上去删除自己)
git branch -d 分支名
删除远端分支:
git push origin --delete 分支名
修剪远端已经删掉的分支(在本地或者测试环境git branch -r 查看远端分支时候就会看不到原来远端已经删除掉的分支了)
git fetch -p
git stash 暂存
https://www.jb51.net/article/191555.htm
git checkout -- .
如果在测试环境上,没有git pull 先拉取远程最新的代码,而是先npm i 了,那么测试服务器的分支就会变为这样一个状态:有个*<
这是因为你npm i 了一下,造成了测试上的依赖包(package.json)文件会去下载最新的包依赖,这就造成了跟远端的不一致,就会出现这个状态。
此时只需要git checkout -- .,保持同步即可,跟git fetch -p 修剪更新远端分支有点类似道理。
git checkout -- . 执行后就变为正常态了,就可以git pull,紧接着,如果有新装的依赖包,再去npm i即可。
git reset --hard 某次提交id 版本回退
如果上图中的*= 是<=,版本落后于远程的版本,小技巧:
这时你去git pull / git checkout -- .都还是会报错不起作用,就可以用git reset --hard 最新一次提交的id即可保持与远端的一致。
Git 拉取某一次提交的代码版本到本地分支:
git checkout -b 分之名 远程仓库的commitId
示例:git checkout -b w3h5 af161ecbd13eff1630c14f84a7395d46f5d18888
git拉取远端某个tag版本到本地:
git clone --branch [tags标签] [git地址]
示例:git clone --branch v210608 https://git.xxx.com/jituan_xinxi_fe/fe-pc-activity
git 删除node_modules,清除缓存,再去install
rm -rf node_modules
npm cache clear -f
流程:
1.多人合作开发一个项目时,先切到本地master分支上,然后git pull更新一下远端主分支最新的代码
2.创建并切换到自己的分支 git checkout -b 自己的分支名
3.多人会有一个共享合并代码的分支比如A,每次在自己的分支提交后,都要切到A上面进行:git merge 自己的分支名,保证A都是最新的,其他人也是这样。
4.本地开发完成后,要部署到测试环境,在测试环境上首先依然先要切换到master,git pull拉取远端最新的代码,然后git fetch -p,修剪更新远端的分支信息,这时候会看到你自己本地开发push到远端的分支名,在测试环境上,直接git checkout -b 与远端自己分支名一样的名字。接着git pull,或者直接git checkout 远端自己分支名,也能创建并拉到远端自己的那个分支,接着git pull。
如果没有关联,关联一下此时测试和远端自己的那个分支。
5.如果自己在本地开发时候安装依赖的话,还要npm i 一下去安装依赖,然后就可以正常npm run build了。
6.如果测试环境没有env.local文件,用touch .env.local 命令去创建一个即可,然后复制本地env.local的配置信息,粘贴进去即可。
场景2:
A和B一起开发一个项目,A新建了一个分支x用于增加A和B都需要的一个功能或者工具,A把新建的这个分支x去push到远端,B想要合并一下这个分支x,那么B怎么做呢?
1. B首先要在本地 git fetch -p 更新一下远端分支
2. B不论当前在哪个分支,只需要 git checkout 要更新的远端分支名(x) 即可,就相当于本地创建了一个分支 x 和远端x一模一样的并自动关联,相当于:
git checkout -b 本地分支名 origin/远程分支名 =>基于指定远端分支创建本地分支,并把创建的分支和远端的进行关联。这个是标准的创建。
3.然后B就可以切到自己的分支去 git merge x了