目录
VSCode 内 GitLens 不生效
git 新建分支 并 切换到该分支
远程分支被删除后如何同步本地代码到新的远程分支上 ?
( 1 ) => 通过 Git 把工作区的内容 add 添加到暂存区 的时候 , 报了 警告 :
warning: LF will be replaced by CRLF in XXXX.The file will have its original line endings in your working directory编辑
( 2 ) => 通过 Git 本地仓库 push 到远程仓库的时候,报了 异常 :
fatal : The current branch 分支名 has no upstream branch.
( 3 ) => 最终通过 Git 本地仓库 push 到远程仓库的时候,报的 异常 :
fatal : invalid refspec 'https://gitee.com/ XXXX'
( 4 ) 通过 Git 本地仓库 pull 到本地的时候,报的 异常 :
error: Your local changes to the following files would be overwritten by merge:
( 5 ) warning: push.default is unset; its implicit value has changed in Git 2.0 from 'matching' to 'simple'.
( 6 ) error: cannot stat 'path': Permission denied
( 7 ) fatal: Unable to create 'D:/XXX/.git/index.lock': File exists.
整理自己在日常使用 Git 时 , 出现的一些异常信息 :
希望对大家伙有帮助 ~
实时更新 , 建议收藏哟 ~
首先如果你对 Git 还并不是很了解的话 ,
我们可以先学习了解一下 Git 基础 :
跳转链接 => Git _ 入门版
自己在想使用 VSCode 时 ,想在其内部使用 Git , 需要下载一个辅助插件 ( GitLens )
但是即使 我已经安转好了 Git ,右键也能显示有 Git Bash Here , 也能正常使用 ,但在 VSCode 里却始终报异常导致无法使用 :
( 1 )!未找到 Git 。请安装 Git , 或在 “ git.path ” 设置中配置。
来源 : Git (Extension) 下载 Git 不再显示
( 2 )GitLens was unable to find Git . Plase make sure Git is Installed . Also e...
( 大致意思就是 : GitLens 无法找到 Git 。请确保已安装 Git )
( 3 )而且左边列表的 Git 源代码管理 , 也是无法使用状态
方法解决 :
网上查了各种回答 ,说是什么上传一下下拉一下啥的吧 , 然而我在 Git 里面使用命令行进行上传下拉代码啥的都没有问题 , 所以我的问题原因并不在于此 , 后来解决完之后 , 我猜想可能是我新电脑初次进行安装 Git ,安装过程中也并没有按照 Git 下载安装到指定的文件目录下 , 再加上也从来没有使用过用 Git 去打开过 VSCode ,等等原因吧 , 导致 VSCode 找不到我的 Git 了
So 我使用 Git Bash Here 打开 Git 窗口 , 输入命令行 code .
进行一遍通过 Git 来打开 VSCode 的操作 , 然后很神奇的它就好了 。 。 。
分享一下自己使用 Git 时的操作习惯吧 :
首先是 推荐 大家使用 Git Bash Here 来进行 操作的 ,
因为它的后面会有 分支 提示 , 就是 显示你当前站在哪个 分支 上 ,
这样操作会很方便 , 就省去了我们 不断的去使用 git branch 命令 去查看自己所在的分支了
在这里我主要分享的是 , 当我们想要 创建一条新分支 时的日常操作习惯 :
( 下面是在我们没有使用 Git Bash Here 进行操作的讲解 , 所以会经常查看 所在分支 )
( 1 ) 使用命令行 git status 来进行查看我们当前目录下所有文件的状态管理
( 如果检测到我们还有未上传的状态时 , 建议先是将代码提交一下 ( push ) , 目的是清空一下咱们的状态 , 以便于为咱们之后的 切换分支 操作 做铺垫 , 否则会很容易出现小问题导致切换分支不成功的 )
( 2 ) 使用命令行 git branch 来进行 查看 我们所建的 所有分支
( 如若不是站在咱们的主分支 master 上 , 就需要我们接下来进行切换分支操作了 )
( 3 ) 使用命令行 git checkout master 来进行 切换到主分支上的操作
( 4 ) 使用命令行 git branch 来再次查看我们是否切换到了主分支上
( 5 ) 使用命令行 git branch 新分支名 , 来进行创建新分支的操作
( 6 ) 使用命令行 git branch 来查看我们是否成功创建好了新分支
( 7 ) 使用命令行 git checkout 新分支 来进行 切换到新分支上的操作
( 8 ) 使用命令行 git branch 来查看我们是否成功切换到了新分支上
最后大家可以很明显的观察到 , 如果没有后面的 分支 提示 , 那我们就得需要多操作很多步骤 , 需要不断地经常使用 git branch 来查看自己目前站在哪条分支上了的操作 , 所以推荐用推荐
( 注 : 切记不要在分支上再创建分支 , 它的坏处呢就是 , 它会把你原来分支上面的东西一起创建在你新创建好的分支里的 , 然而可能这些东西并不是你想要的 , 但是你还不能把原来分支上的东西删除了 , 所以我们建议还是切换到没有任何东西, 目录很干净的 master 主分支上 , 然后咱们再进行 创建新分支的操作 )
今天刚学习到了一个新指令 , 尤其好用 , 赶紧拿来分享更新一波 :
git 新建分支 并 切换到该分支
git checkout 命令加上 –b 参数 表示 创建并切换 ,相当于如下 2 条命令 :
git branch dev
git checkout dev
再查看一下当前分支已经切换到 dev 了
这个命令尤其好用 , 配合上 Git Bash Here 来进行操作 ( 能实时查看到我们当下所站在的分支上 ) , 相信会极大的节省我们的操作时间的 , 提升工作效率
工作中遇到的分支问题 :
远程分支被删除后如何同步本地代码到新的远程分支上 ?
自己的本地开发分支 ( develop 分支 ) 对应的远程分支 ( develop 分支 )
已被 “ 管理员 ” 删除了 ,且创建了新的远程分支 ( WEB_HOTFIX ) ,
但是我本地还在 已被删除 的 ( develop ) 开发分支上 ,
本地还没有删除 , 而且还写了新的代码 ,并未提交 ,
那我怎样才能把本地分支的代码 同步 到 “ 管理员 ” 新创建的( WEB_HOTFIX )分支上呢?
一 、 首先是在你本地分支写的代码为提交的状态下
1、git fetch ( 获取最新创建的远程分支 )
2、git stash ( 把本地未提交的代码 暂存 起来 )
3、git checkout ' 新分支 ' ( 切换到新创建的分支上 )
4、git stash pop ( 把 暂存 的代码 再 释放 出来 )
5、git branch -a ( 查看所有分支 、 包括本地分支和远程分支 )
( 可以 git branch -d ' 分支名 ' 删掉本地无用的分支 )
warning: LF will be replaced by CRLF in XXXX. The file will have its original line endings in your working directory
警告意思 : LF 和 CRLF 都是 换行符 ,意思就是说 git 要把你的 LF 换行符全部换成 CRLF 这种 换行符
产生原因: 首先问题出在 不同操作系统 所使用的 换行符 是不一样的 Uinx / Linux 采用换行符 LF 表示 下一行( LF:LineFeed,中文意思是换行 )
Windows 采用 回车 + 换行 CRLF 表示 下一行( CRLF:CarriageReturn LineFeed,中文意思是回车 换行 )
Mac OS 采用 回车 CR 表示 下一行( CR:CarriageReturn,中文意思是 回车 )。
查看状态 :
当你输入这个命令的时候,会得到三种结果 :
1.true( 很多会出现这种结果 ) 当我们操作系统是 Windows 的时候,会出现 true 当为 true 时,git 会将你暂存( git add )文件认为是文本文件,把换行符的 CRLF 转换成 LF ,而签出这些文件的时候又会变成 CRLF 格式,所以会 警告 你,这虽然只是一个小问题,但是会干扰跨平台多人合作开发 举个例子:你同事用的是 Mac 或 Linux 系统 , 你用的是 Windows 系统 , 最后交稿时就会 造成 冲突
解决办法,执行命令 :
如果不是 跨平台开发 而且是 Winows 系统,基本上 忽略这个警告 就可以啦
2.false
3.input
fatal : The current branch 分支名 has no upstream branch.
( 致命 : 当前分支 分支名 没有上游分支 )
解决方案:
翻译后大致意思是,如果不想重新创建远程仓库再克隆 ,或者初始化本地仓库,可以使用下面命令: git push -u origin master ,其中 origin 表示 远程仓库名称 ,master 是远程仓库的 push 目标分支。-u ( 推测为 update 缩写 ^_^ ~ ) 表示本地分支将建立对远程仓库目标分支的检测,如果远程仓库目标分支不存在,将新建分支再 push ;如果存在,将进行 push 更新 。
fatal : invalid refspec 'https://gitee.com/ XXXX'
( 致命 : 无效的 refspec ' https:// XXXX ' )
前面的这个报错呢 , 主要是因为我提交之前的代码跟远程的代码并不同步 , 所以会有冲突存在 , 此时就需要我们先将远程的代码 pull 下来 ( git pull origin master ) , 进行同步一下 , 然后解决一下冲突问题 , 最后再次进行一遍提交过程 ( git add . git commit -m " " git push -u origin 分支名 ) 就 OK 了
error: Your local changes to the following files would be overwritten by merge:
由于公司目前实行开发模块化,所以原来用的代码管理器全部迁移到 Git 上去了,原来用过 git 现在已经忘的差不多了,今天在拉取服务器的代码的出现了冲突,记录下以供后续参考: 1. 用 git pull 来更新代码的时候,遇到了下面的问题:
出现这个问题的原因是别人修改了 xxx.js 并提交到版本库中去了,而你本地也修改了xxx.js, 这时候你进行 git pull 操作就会出现冲突了,
解决方法,在上面的提示中也说的很明确了。 保留本地的方式修改(强烈推荐,还有一种是直接拉取服务器的(不推荐使用就不写了),这样你本地修改的代码的,就会舍弃,相当于你写的代码直接没,你还要重新写)
步骤如下:
通过 git stash 将工作区恢复到上次提交的内容,同时备份本地所做的修改,之后就可以正常 git pull 了, git pull 完成后,执行 git stash pop 将之前本地做的修改应用到当前工作区。 git stash git pull git stash pop
看到这里有些人就懵逼了,下面就介绍一下这三行代码代表什么意思吧;
git stash : 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到 Git 栈中。
git pull : 拉取服务器上的代码;
git stash pop : 从 Git 栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个 Stash 的内容,所以用栈来管理,pop 会从最近的一个 stash 中读取内容并恢复。
git stash list : 显示 Git 栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
git stash clear : 清空 Git 栈。此时使用 gitg 等图形化工具会发现,原来 stash 的哪些节点都消失了。
在升级了高版本的Git工具后,在使用git push操作时,可能会出现如下提示:
事实上这并不会影响你 push 的结果,最终 push 还会成功,因为这只是一个 warning。
你可以按照他说的那样运行:git config --global push.default matching 或者 git config --global push.default simple 命令,以后再 push 就不会有警告了。
看了上面的中文是不是很清晰了呢?不管你是使用‘matching’模式还是‘simple’模式,都能去掉那一大串提示消息,但是具体使用哪个模式需要读者自行判断
下面说一下 push.default matching 和 push.default simple 的区别:
push.default 设置 maching 的意思是:git push 会把你本地所有分支push到名称相对应的远程主机上。这意味着可能你会在不经意间 push 一些你原本没打算 push 的分支。
push.default 设置成 simple 的意思是:git push 仅仅把当前所在分支push 到从当初 git pull 拉去下来的那个对应分支上,另外,这个过程也会同时检查各个分支的名称是否相对应。
使用 git 管理项目时,切换分支 B ,后切换回主分支,想进行代码合并,结果报错如下:
解决方案:关闭占用此项目的所有程序 例如: 1.关掉编辑器 2.关闭项目相关的服务器
致命:无法创建 'D:/XXX/.git/index.lock':文件存在。
一、问题描述
使用 git 在 commit / 提交 代码 的 时候 ,出现了
问题 ,
如下所示 :
二、分析并解决问题
Git 执行操作时会自动生成 index.lock 文件 ,操作结束后会自动删除 。
这样做的 目的 是 : 避免同时操作同一个文件夹 。
错误提示我们 :
Unable to create 'D:/XXX/.git/index.lock': File exists. 因此 ,我们 删除 该目录下的 .git/index.lock 文件即可
删除之后 :
然后重新使用 git 提交代码 ,即可成功 !!!
fatal: Unable to create 'D:/XXX/.git/index.lock': File exists. 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.
致命:无法创建 'D:/XXX/.git/index.lock': 文件存在。 如果当前没有其他 git 进程在运行,这可能意味着在此存储库中有一个 git 进程早些时候崩溃了。确保没有其他 git 进程正在运行,并手动删除该文件以继续。
8、
小组合作项目时 : 正确的操作步骤 : 上传分支
( 1 ) git pull : 一定要先与远程代码 进行 同步 ( Already up to date. )
( 2 ) git status : 可以先行查看一下自己代码的状态
( 3 ) git add . : 将我们工作区的代码转到 暂存区 内
( 4 ) git commit -m "说明信息" : 将暂存区内的代码形成历史版本
( 5 ) git remote add 变量名(origin) 远程地址 : 与远程仓库建立连接
( 6 ) git push -u 变量名(origin) 分支名 : 推送上远程仓库
解决 Git 每次提交输入密码的问题
解决 合并 merge 分支代码 时 Git 工具页面混乱的问题