1、切换新分支 及 错误讲解
git fetch //将远程主机的更新,全部取回本地; 默认情况下,git fetch取回所有分支的更新,(eg:之前git branch -a 查看本地+远程所有分支,找不到v.0.6 fetch之后才能找到)
git checkout -b v.0.6 origin/v.0.6 //基于远程分支v.0.6创建本地分支v.0.6,并切换到分支v.0.6
git branch -vv //查看本地分支跟踪的远程分支
错误:之前没有git fetch 而使用 git checkout -b v.0.6 origin/master ,这是错的!!!意思是基于远程分支master 创建本地分支V.0.6 ,此时只是在本地新建了一个基于master的v.0.6,远程还是在master上并没有切到v.0.6!!!!
改正:
git fetch //1、先将远程主机的更新,全部取回本地,这样就可以看到新建的分支了
git branch -m v.0.6 v.1 //2、将之前添加错的v.0.6更改本地分支名为v.1,以便下一步可以新建基于v.0.6的本地分支v.0.6
git branch //查看本地分支,当前分支在v.1上,*后的为当前本地分支
git branch -vv //查看本地分支跟踪的远程分支,git branch -r只是看到远程分支,没有显示当前远程分支
git checkout -b v.0.6 origin/v.0.6 //3、基于远程分支v.0.6创建本地分支v.0.6,并切换到分支v.0.6
git branch -d v.1 //4、删除没用的本地分支V.1.0
2、之前版本内容找回
git log -10 //查看之前提交的版本
git show 版本号 //查看具体版本号的详细修改
git branch //查看本地所有分支,为master分支
git checkout -b master1 origin/master //1:新建一个新分支master1)----简历新分支master1跟踪远程分支master, --- 此时git branch查看分支,为master 、master1 2个分支;
// ------------------在新分支master1操作---------
git cherry-pick 版本号 //2:复制内容倒master1----复制版本号的对应修改到master1
git status //此时gitstatus 会显示有一个待提交 是刚复制的点
git pull origin master //拉取master的最新内容倒master1
git push origin master1:master //3:将找回内容提交到master----将本地的修改(刚复制的点)master1提交到master(注意master1后不要带空格 不然会将远程的master干掉)
git branch -r //查看远程分支
git branch -d master //4:删除本地分支master----删除本地master分支 --- 此时git branch 查看本地分支,只有master1一个本地分支
git branch -m master1 master //5:将master1重命名为master----将master1重命名为master
3、add时忽略文件
添加忽略:
git update-index --assume-unchanged /path/file //assume 假设 unchanged 未更改
eg: git update-index --assume-unchanged build/webpack.base.conf.js
取消忽略(恢复跟踪):
git update-index --no-assume-unchanged build/webpack.base.conf.js
解决error: Your local changes to the following files would be overwritten by merge
1.在项目里我们一般都会把自己的配置文件忽略本地跟踪:
$ git update-index --assume-unchanged <filename>
2.但是项目里的其他人把该配置文件修改push到远程仓库之后,我们git pull代码的时候就会报错
error: Your local changes to the following files would be overwritten by merge:
sipop-web-html/build/webpack.base.conf.js
//大意是:您的本地更改的文件将被合并覆盖。并指出了会被覆盖的文件
//------------------解决方法-----------------------
1.撤销本地对文件的忽略
$ git update-index --no-assume-unchanged config.ini
2.从最近的一次提交中读取内容,备份当前的工作区的内容,将当前的工作区内容保存到Git栈中
$ git stash
// Saved working directory and index state WIP on v.0.6: dd6f50571 Merge branch 'v.0.6' of 59.110.46.79:richinfo/sipop into v.0.6
3.pull远程仓库代码
$ git pull
4.从Git栈中读取最近一次保存的内容,恢复工作区的相关内容
$ git stash pop
5.修改合并
6.把文件回复到最新提交的版本,会保留修改内容
$ git reset HEAD config.ini
7.再次忽略本地跟踪,完成!
$ git update-index --assume-unchanged config.ini
8.最后不要忘记清除Git栈的备份
$ git stash drop
//参考:https://blog.csdn.net/young4dream/article/details/53413281