2019-03-27

<html>

  <head>

  <meta http-equiv="content-type" content="text/html; charset=utf-8" />

    <title>i5ting_ztree_toc:git</title>

<link href="toc/style/github-bf51422f4bb36427d391e4b75a1daa083c2d840e.css" media="all" rel="stylesheet" type="text/css"/>

<link href="toc/style/github2-d731afd4f624c99a4b19ad69f3083cd6d02b81d5.css" media="all" rel="stylesheet" type="text/css"/>

<link href="toc/css/zTreeStyle/zTreeStyle.css" media="all" rel="stylesheet" type="text/css"/>

  <style>

pre {

    counter-reset: line-numbering;

    border: solid 1px #d9d9d9;

    border-radius: 0;

    background: #fff;

    padding: 0;

    line-height: 23px;

    margin-bottom: 30px;

    white-space: pre;

    overflow-x: auto;

    word-break: inherit;

    word-wrap: inherit;

}

pre a::before {

  content: counter(line-numbering);

  counter-increment: line-numbering;

  padding-right: 1em; /* space after numbers */

  width: 25px;

  text-align: right;

  opacity: 0.7;

  display: inline-block;

  color: #aaa;

  background: #eee;

  margin-right: 16px;

  padding: 2px 10px;

  font-size: 13px;

  -webkit-touch-callout: none;

  -webkit-user-select: none;

  -khtml-user-select: none;

  -moz-user-select: none;

  -ms-user-select: none;

  user-select: none;

}

pre a:first-of-type::before {

  padding-top: 10px;

}

pre a:last-of-type::before {

  padding-bottom: 10px;

}

pre a:only-of-type::before {

  padding: 10px;

}

.highlight { background-color: #ffffcc } /* RIGHT */

</style>

  </head>

  <body>

  <div>

<div style='width:25%;'>

<ul id="tree" class="ztree" style='width:100%'>

</ul>

</div>

        <div id='readme' style='width:70%;margin-left:20%;'>

          <article class='markdown-body'>

            <h1 id="git">git</h1>

<h2 id="-">安装</h2>

<p>下载安装<a href="https://git-scm.com/">https://git-scm.com/</a></p>

<p>安装时傻瓜式安装,不用修改选项</p>

<p>安装成功后,右击,会出现:</p>

<p>Git Gui ,图形化界面,一般不用</p>

<p>Git Bash,一个linux终端</p>

<h3 id="git-bash-">GIt Bash常用命令</h3>

<p>​    <code>clear</code>清空终端内容</p>

<h2 id="-">常用命令</h2>

<h3 id="-">初始化</h3>

<p><code>git init</code></p>

<p>在项目目录右击git bash,初始化git,会在当前项目增加一个.git隐藏目录,那些版本备份都会在该文件夹下</p>

<h3 id="-">配置用户信息</h3>

<p>该操作一个人只要配置一次</p>

<p>自报家门,在git中设置当前使用的用户是谁</p>

<p><code>git config --global user.name &quot;xiaoyue&quot;</code></p>

<p><code>git config --global user.email &quot;xiaoyue@qq.com&quot;</code> //不一定是真实的,但一定是符合邮箱格式的</p>

<h3 id="-">添加到暂存区</h3>

<p><code>git add ./readme.md</code>    ./代表当前文件夹 ,没有报错代表成功</p>

<p><code>git add .</code> //提交全部,除了忽略文件之外</p>

<h3 id="-">提交到本地仓库</h3>

<p><code>git commit -m &quot;我初始化好项目了&quot;</code></p>

<p>-m : --message  提交信息,方便以后查看时,知道本次提交做了些什么</p>

<h3 id="-">查看状态</h3>

<p><code>git status</code></p>

<p>若工作区是干净的,表示没有修改。没有要提交到暂存区的文件,也没有要提交到本地仓库的文件</p>

<p>红色代表有修改代码,但是还没有提交到暂存区</p>

<p>绿色表示有修改,没有提交到本地仓库</p>

<h3 id="-">一次性提交所有</h3>

<p><code>git commit --all -m &quot;一些说明&quot;</code></p>

<h3 id="-">提交到远程仓库</h3>

<p><code>git push 【远程地址】 【分支名】</code>  提交到远程仓库master分支</p>

<p>​    如果是第一次提交,会需要填写用户名和邮箱什么的</p>

<p>​    把当前分支的内容上传到远程的master分支</p>

<p><code>git remote add 【给该远程地址起的名字origin】 【远程地址】</code>    设置一个远程的路径</p>

<p>​    设置完之后,再次提交时可以这样写<code>git push origin master</code></p>

<p><code>git push --set-upstream 【远程地址的名字】 master</code>  如果不想每次都填写远程地址,就可以设置一次默认的远程地址和默认的分支,<code>--set-upstream</code>可以缩写为<code>-u</code></p>

<p>​    设置完之后,在提交时就可以这样写 <code>git push</code> </p>

<h3 id="-">拉取远程仓库的内容</h3>

<h4 id="-pull">方式一:pull</h4>

<p><code>git pull 【远程地址】 【分支名】</code> </p>

<p>会把远程分支的数据得到,注意一定先要<code>git init</code>初始化一下</p>

<p>如果本地也有内容,拉取时就会合并,如果有冲突,自己手动处理冲突</p>

<p>如果想直接<code>git pull</code>,那你需要在push时用一次-u</p>

<p>​    <code>git remote add 【给该远程地址起的名字origin】 【远程地址】</code></p>

<p>​    <code>git push --set-upstream 【远程地址的名字】 master</code></p>

<h4 id="-clone">方式二:clone</h4>

<p><code>git clone [远程地址]</code></p>

<p>注意一定先要<code>git init</code>初始化一下</p>

<p>把项目整个克隆下来,多克隆几次会覆盖本地,所以小心使用</p>

<h3 id="-">查看提交日志/记录</h3>

<p><code>git log</code>    //多行显示日志</p>

<p><code>git log --oneline</code>    //查看简洁版日志</p>

<p><code>git reflog</code>//可以看到所有提交和切换的记录</p>

<h3 id="-">回溯到之前的版本</h3>

<h4 id="-">方式一</h4>

<p>先查看提交日志有几条记录,记录是上面最新下面最旧,从上往下一次为0迭代</p>

<p><code>git --hard Head~0</code> 回溯到上一次的版本</p>

<p><code>git --hard Head~1</code> 回溯到上上一次的版本</p>

<p><code>git --hard Head~2</code> 回溯到上上上一次的版本</p>

<p>回溯完后,你的日志记录就只有回溯之前的了</p>

<h4 id="-">方式二</h4>

<p><code>git --hard  &#39;日志id&#39;</code> //回溯到准确的某个地方</p>

<p>,虽然log只显示之前的记录,但是你还是能通过日志id直接通过此方式进行回溯</p>

<h3 id="-">分支</h3>

<p><code>git branch dev</code>,创建一个叫dev的分支</p>

<p><code>git branch</code>查看分支,前面带有*号的表示当前所处分支</p>

<p><code>git checkout dev</code>,切换到dev分支</p>

<p><code>git merge dev</code>,合并dev分支到当前分支(有*的那个分支)</p>

<p>情景:假如我在做一个轮播图的功能,花时比较长,只能提交到分支了为了不影响其他人</p>

<p>​    此时添加分支banner,</p>

<p>​    切换到banner分支,</p>

<p>​    提交代码到分支,</p>

<p>​    等到更能完成,提交代码到分支</p>

<p>​    切换到主分支,查看log,你会发现log里并没有分支提交记录,</p>

<p>​    此时你需要合并banner到主分支,在查看log,就有分支的提交记录了</p>

<p><code>git branch -d dev</code>  删除某个分支 ,注意:只有不在dev分支的时候才能删除dev分支</p>

<h3 id="ssh-">ssh方式上传代码</h3>

<p>不需要用户名和密码</p>

<p>公钥 私钥</p>

<h4 id="-">获取公钥</h4>

<p>生成你的公钥ssh  <a href="https://gitee.com/help/articles/4181#article-header0。按照说明文档在git">https://gitee.com/help/articles/4181#article-header0。按照说明文档在git</a> bash上操作获取公钥.</p>

<p>如果已经有公钥了直接获取就行(查看自己电脑有没有配置过公钥,用户&gt;xiaoyue&gt;.ssh&gt;id_rsa.pab  打开此文件,里边就是你的公钥)</p>

<ul>

<li>运行命令<code>ssh-keygen -t rsa -C &quot;xxxxx@xxxxx.com&quot;</code></li>

<li>按照提示完成三次回车,即可生成 ssh key</li>

<li>通过查看 <code>cat ~/.ssh/id_rsa.pub</code> 文件内容,获取到你的 public key</li>

<li>复制你的公钥,在线上 码云 添加公钥。 完成此操作,你的电脑就和你线上的码云仓库就打通了</li>

</ul>

<h2 id="-">常见报错情况</h2>

<h3 id="-">常见错误一</h3>

<p><em>error: bad signature</em>        //错误的签名

<em>fatal: index file corrupt</em>      //索引文件损坏</p>

<h4 id="-1-">解决方法1:</h4>

<p><code>rm -f .git/index</code>    //rm为linux语句,删除文件用的  rm -f表示直接删除</p>

<p><code>git reset</code>            //重置</p>

<h4 id="-">接单粗暴的解决:</h4>

<p>直接删除.git文件,重新init</p>

<h3 id="-">常见错误二</h3>

<p>merge合并dev分支时,出现冲突conflicts!需要手动进行修改选择,删除不要的,留下正确的</p>

<pre><code>

</code></pre><p>然后再查看状态,该提交的提交</p>

<h3 id="-">常见问题三</h3>

<h4 id="-">情景:</h4>

<p>A用户修改了index代码上传到github,B用户在没有更新的情况下修改了本地代码,并准备上传。如果上传会报错。</p>

<ul>

<li>这个时候,应该先拉取远程的代码到本地,再上传,提示有冲突就在本地解决冲突。</li>

<li>如果先上传再拉取就是在远程会出现冲突,远程有冲突不易解决。</li>

<li>所以,养成良好的习惯,先拉取再上传</li>

</ul>

<h4 id="-">注意:</h4>

<p>如果拉取的时候,bash终端会出现 编辑信息的页面,</p>

<p>此时,按下Esc,再按下:(冒号),再按下w(保存)q(退出),再回车,终端下面会显示<code>:wq</code></p>

          </article>

        </div>

</div>

  </body>

</html>

<script type="text/javascript" src="toc/js/jquery-1.4.4.min.js"></script>

<script type="text/javascript" src="toc/js/jquery.ztree.all-3.5.min.js"></script>

<script type="text/javascript" src="toc/js/ztree_toc.js"></script>

<script type="text/javascript" src="toc_conf.js"></script>

<SCRIPT type="text/javascript" >

<!--

$(document).ready(function(){

    var css_conf = eval(markdown_panel_style);

    $('#readme').css(css_conf)


    var conf = eval(jquery_ztree_toc_opts);

$('#tree').ztree_toc(conf);

});

//-->

</SCRIPT>

推荐阅读更多精彩内容