Git Shell常用命令和三种错误的处理方式



      说来惭愧,对于我而言,Git Shell是Visual Studio Tools for Git的备用工具。近期因为种种原因,开始尝试使用Git shell来将本地仓库的修改内容更新至远程仓库,在使用过程中困难重重,因此在这里整理了Git Shell常用操作的命令供后续查阅,另外记录了本次尝试遇到的错误及其解决方案,供需要的同学参考。

      1. Git Shell常用操作的命令

      本小节的内容节选自Git远程操作详解,非常感谢阮一峰老师的辛苦付出。

      1.1 git clone

     该命令用于从远程仓库克隆一个仓库,命令格式如下,它会在本地主机的指定目录下生成一个与远程仓库同名的本地仓库。该命令可以不需要第三个参数,即<本地目录名>, 若没有第三个参数,那么该命令会在当前Git Shell执行命令的目录下生成一个与远程仓库同名的仓库。

      $ git clone <远程仓库网址> <本地目录名>

      1.2 git fetch

      当远程仓库有更新时,若需要本地仓库拥有同样的更新,则需要用到git fetch命令。

      将某个远程仓库的更新全部取回本地:$ git fetch <远程仓库名称>

      取回远程仓库的特定分支的更新,例如取回origin仓库的master分支:$ git fetch origin master

      1.3 git pull

      git pull命令用于取回远程仓库某个分支的更新,再与本地的指定分支合并,它的完整格式稍稍有点复杂。

      比如,取回origin的next分支,与本地的master分支合并,需要写成:$ git pull origin next:master

      如果当前分支只有一个追踪分支,则可写成:$ git pull

      1.4 git push

      git push命令用于将本地仓库的更新推送到远程仓库,它的格式与git pull命令相仿。

      例如,将本地的master分支推送到origin仓库的master分支:$ git push origin master

      如果当前分支只有一个追踪分支,则可写成:$ git push

    2. 使用Git上传本地项目代码到github

     3. Git Shell使用过程中出现的三种错误及其解决方案

     3.1 nothing to commit, working tree clean   

       完整的错误提示如下图所示,出现该错误的原因应该是本地工作目录没有与远程仓库建立联系,因此git无法比较出正确的结果。

nothing to commit

        解决上述错误的有效命令如下:

       git branch –u origin/master本地跟踪远程)

3.2. Updates
were rejected because the remote contains work that you do not have locally.

       完整的错误提示如下图所示,可能是因为多次尝试commit失败,在暂存区已经包含了之前的commit内容,导致本地仓库,暂存区,远程仓库之间出现混乱。

update were rejected

       解决上述错误的有效命令如下:

       git pull –rebase origin master(先将HEAD指向origin/master,然后逐一应用本地的修改)

       git push origin master(将本地更新推送至github远程仓库)

      关于–rebase更详细的说明可以参考以下链接:

 使用git rebase让历史变得清晰

 Git–团队开发必备神器

 3.3. Shal file ‘<stdout>’ write error: Broken pipe00 Kib/s

       完整的错误提示如下图所示:

write error

      简单的解决方案是增加HTTP缓冲区大小,以便将较大的块推送到远程仓库,命令如下:

      git config http.postBuffer 5242880(将http.postBuffer由默认值1M修改为5M)

writeOK

       上述三种错误出现的背景:按照Visual Studio
Tools for Git Connect VS2012 with GitHub
所描述的方式将本地代码上传至Github。近期该项目有更新,因为种种原因开始尝试使用Git Shell来将本地更新的内容同步至Github,同步过程中出现了上述错误。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

Fork me on GitHub