<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Git on Time Friend</title><link>https://time-friend.com/zh/tags/git/</link><description>Recent content in Git on Time Friend</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Thu, 24 Jan 2019 19:33:33 +0000</lastBuildDate><atom:link href="https://time-friend.com/zh/tags/git/index.xml" rel="self" type="application/rss+xml"/><item><title>一个两年前.gitattributes文件导致的bug</title><link>https://time-friend.com/zh/archive/gitattributes-bug-from-two-years-ago/</link><pubDate>Thu, 24 Jan 2019 19:33:33 +0000</pubDate><guid>https://time-friend.com/zh/archive/gitattributes-bug-from-two-years-ago/</guid><description>&lt;h1 id="起因"&gt;起因&lt;/h1&gt;
&lt;p&gt;一时兴起,我打开了我两年前写的一个前端项目开始代码审查.
这个项目我一个人写了两年,大概十几万行代码的样子.&lt;/p&gt;
&lt;p&gt;发现这个项目的git居然把所有的代码文件都识别成了二进制文件.
这个问题,之前困扰了我很久,却一直找不到原因.导致我的代码没有对比记录.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;再顽固的问题也有水落石出的一天&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;说巧不巧,今天偏偏找到了问题的源头.&lt;/p&gt;
&lt;h1 id="gitattributes"&gt;.gitattributes&lt;/h1&gt;
&lt;p&gt;最后发现是因为&lt;code&gt;.gitattributes&lt;/code&gt;文件有一行配置因为换行问题.导致所有text的文件都识别成了二进制文件.&lt;/p&gt;
&lt;h2 id="gitattributes的作用"&gt;.gitattributes的作用&lt;/h2&gt;
&lt;p&gt;.gitattributes文件是一个简单的text文本文件，它的作用是重新定义指定文件的属性, 指定非文本文件的对比合并方式&lt;/p&gt;
&lt;h3 id="编写规则"&gt;编写规则&lt;/h3&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;pattern attr1 attr2 ...
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="示例"&gt;示例&lt;/h3&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;*.ttf binary
*.woff binary
*.eot binary
*.otf binary
* text=auto
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;上面这段代码表示,将一些字体文件指定为二进制文件,当提交代码的时候git不会diff这些文件的变动详情.
他只会告诉你,文件变动了,但是不会告诉你具体哪里变了.&lt;/p&gt;</description></item><item><title>Git大小写不敏感导致的烦人问题</title><link>https://time-friend.com/zh/archive/git-case-insensitive-issue/</link><pubDate>Wed, 09 Jan 2019 19:33:33 +0000</pubDate><guid>https://time-friend.com/zh/archive/git-case-insensitive-issue/</guid><description>&lt;blockquote&gt;
&lt;p&gt;因为同事把一个文件夹的小写改成了大写,导致我本地的提交不能直接push rebase 等一些列操作.恼的很~&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;error: The following untracked working tree files would be overwritten by checkout:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; xxx.js
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Please move or remove them before you can switch branches.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Aborting
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="解决办法"&gt;解决办法&lt;/h1&gt;
&lt;p&gt;设置为大小写敏感(问题解决后,一定要还原配置)&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config core.ignorecase false
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;尽管设置大小写敏感之后,始终会影响其他分支的代码,所以不建议一直使用这个配置,当问题解决之后,还是要改回去.&lt;/p&gt;
&lt;h1 id="改回默认"&gt;改回默认&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config core.ignorecase true
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# or&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config --unset core.ignorecase
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="尾巴"&gt;尾巴&lt;/h1&gt;
&lt;p&gt;平时编码的时候,还是千万不要直接重命名大小写,自己本地看起来没有什么问题.在别人问题上却是大问题.&lt;/p&gt;
&lt;p&gt;如果发生了类似问题的,应该在源头解决(谁机器上重命名的,谁改回去).如果不解决的,应该拖出去打~~&lt;/p&gt;</description></item><item><title>Git删除所有提交记录解决方案</title><link>https://time-friend.com/zh/archive/git-delete-all-commits-solution/</link><pubDate>Tue, 30 Oct 2018 19:33:33 +0000</pubDate><guid>https://time-friend.com/zh/archive/git-delete-all-commits-solution/</guid><description>&lt;p&gt;如果你之前的项目提交了一些敏感数据,或者要清除以前提交的记录,给出下面解决方案.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 1. 检出一个新的分支&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git checkout --orphan latest_branch
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 2. 暂存所有文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git add -A
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 3. 提交刚刚暂存的文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git commit -am &lt;span style="color:#e6db74"&gt;&amp;#34;commit message&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 4. 删除最原始的分支&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git branch -D master
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 5. 重命名当的第分支&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git branch -m master
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 6. 提交你的记录到远程仓库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git push -f origin master
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Git push卡住解决办法</title><link>https://time-friend.com/zh/archive/git-push-stuck-solution/</link><pubDate>Mon, 09 Apr 2018 19:33:33 +0000</pubDate><guid>https://time-friend.com/zh/archive/git-push-stuck-solution/</guid><description>&lt;p&gt;博客的每天英语是直接爬的扇贝英语,为了不直接请求代理接口(会相对比较慢).
所以每天我的程序每天会生成相应的数据文件,前端直接ajax获取就好了.
博客内容也会每天自动发布,达到每天更新名言名句的效果.
好久没管,发现很多git提交的内容没有push.手动直接push之后发现有800多个修改地方没有push.&lt;/p&gt;
&lt;p&gt;手动push的时候直接卡住了.
就像这样:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;master 9447645&lt;span style="color:#f92672"&gt;]&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; file changed, &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; insertion&lt;span style="color:#f92672"&gt;(&lt;/span&gt;+&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Counting objects: 20, &lt;span style="color:#66d9ef"&gt;done&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Compressing objects: 100% &lt;span style="color:#f92672"&gt;(&lt;/span&gt;876/876&lt;span style="color:#f92672"&gt;)&lt;/span&gt;, &lt;span style="color:#66d9ef"&gt;done&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Writing objects: 100% &lt;span style="color:#f92672"&gt;(&lt;/span&gt;876/876&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;网上找了个方法,解决了这个问题:
添加sendpack.sideband属性并置为false&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 全局的：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config –global sendpack.sideband false
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 仓库的：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config –local sendpack.sideband false
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;我只在我的本地仓库设置一下,然后再执行 &lt;code&gt;git push&lt;/code&gt;就成功了&lt;/p&gt;</description></item><item><title>Git系列之关于add命令的一些事</title><link>https://time-friend.com/zh/archive/git-series-about-add-command/</link><pubDate>Sun, 10 Sep 2017 19:33:33 +0000</pubDate><guid>https://time-friend.com/zh/archive/git-series-about-add-command/</guid><description>&lt;h2 id="基本用法"&gt;基本用法&lt;/h2&gt;
&lt;p&gt;通常是通过git add &lt;path&gt;的形式把&lt;path&gt;添加到索引库中，&lt;/p&gt;
&lt;p&gt;&lt;path&gt;可以是文件也可以是目录:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;git add &amp;lt;path&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;如果有很多改动,可以用以下命令来一次添加所有改变的文件:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt; git add -A .
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;将所有修改添加到暂存区,包括添加新文件和编辑过的文件不包括删除的文件:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ git add . 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;表示添加所有内容:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;git add -A
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;表示添加编辑或者删除的文件，不包括新添加的文件:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;git add -u
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;如果不小心执行了以下命令:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;git add * -f(force) //添加被忽略的文件。
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;可以吃一个后悔药:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;git reset HEAD
&lt;/code&gt;&lt;/pre&gt;</description></item></channel></rss>