【转】Git拉取指定目录

转载自:git拉取指定目录


仓库只有一个的情况下,只想拉取某个目录文件;其他文件没用到的会很浪费时间;

关键:git的sparse checkout模式

大致步骤:

1,本地新建文件夹或者执行命令

mkdir newproject && cd newproject

2,目录初始化

git init

3,设置远程仓库地址

git remote add -f origin <origin_url>

4,设置sparse checkout模式,允许克隆子目录

git config core.sparsecheckout true

5,设置指定拉取的目录( *是通配符,!是反选;例如 clients/* 表示clients目录下所有)

echo clients/html >> .git/info/sparse-checkout

6,拉取

 git pull origin master

第6步如果遇到 fatal: Couldn’t find remote ref master;

表示主线名称不是master,可以通过分支命令查看git branch -a

git branch -a
remotes/origin/main

根据上面提示,主线名称是main,则执行

git pull origin main

【转】git用ssh方式下载和提交代码

节选自:git用ssh方式下载和提交代码


1、运行Git Bash客户端,执行ls ~/.ssh; 如果列出下图这两个rsa文件,那应该就不需要配置ssh key了,如果不放心就将这几个文件删掉,重新生成。

2、生成ssh key文件

ssh-keygen -t rsa -C "xxx.xxx.com"

-t 指定密钥类型,默认是 rsa ,可以省略

-C 设置注释文字,比如git的地址。

-f 指定密钥文件存储文件名,我们省略了命令执行的时候会让你选择文件名,直接回车就会保存在默认的位置。

然后会让你输入两次密码,最后出现 key fingerprint和 key’s randomart 就表示创建成功了。


ssh-keygen -t ed25519 -C "your_email@example.com"

【转】svn 迁移至git操作手册

节选自:svn 迁移至git操作手册


项目交付、版本管理工具变更等情况下,迁移svn旧历史记录有很大必要,方便后续追踪文件的提交历史,文件修改记录比对等。git自带了从svn迁移至git的工具命令,可很好的对svn上的提交历史做迁移和映射,操作简单方便。但是初次接触不熟练,这里做一个总结和记录,内容尽量简单化。争取提供给刚刚接触git和准备迁移的用户一个简单易懂的方案。

迁移流程图:

这里分为两步来说明,第一步是比较简单迁移要件准备,已经准备好的用户可直接略过,直接进入第二步进行迁移操作。 继续阅读【转】svn 迁移至git操作手册

【转】TortoiseGit 2.4.0.2引入了一个新的BUG,导致无法提交,提示“fatal: protocol error: bad line length character: Welc”

今天(2017.02.27TortoiseGit 2.4.0发布了一个Hotfix来修正几个BUG,网站上的具体的版本信息如下:

2017-02-25 | Released TortoiseGit Hotfix 2.4.0.2 (fixes issue #2909 (Commit dialog unclosable) and issue #2911 (Add returns “invalid path”) and contains PuTTY 0.68)

但是这次的修复引入了更大的BUG,导致无法提交代码,不管是拉取还是提交代码,都会提示”fatal: protocol error: bad line length character: Welc“,如下图:

修复这个问题最简单的方法就是还原到TortoiseGit 2.4.0版本。

这个BUG是由TortoiseGitPlink.exe里面的代码改动引起的,只要还原这个文件到0.67版本(来自TortoiseGit 2.4.0),也可以解决这个问题。

目前已经提交了BUG给开发人员了。对于的BUG链接地址如下:
TortoiseGit 2.4.0.2 bug ( TortoiseGit 2.4.0 works but TortoiseGit 2.4.0.2 can not pull and push) “fatal: protocol error: bad line length character: Welc”

希望能尽快修复这个问题吧!

到目前为止(2017.05.09)这个问题依旧没有修复的可能,因此建议大家可以改用一下SourceTree-2.0.20.1,可以点击这里下载目前最新的版本。


PS:可以直接点击这里下载0.67版本的plink.exe。

PPS:SourceTree高版本也有这个问题,解决方案是一样的。(最终笔者还是换成了OpenSSH。)

【转】Git LFS的使用

转载自:Git LFS的使用


还没使用git之前,二进制文件和源代码分成两块,分别存放到不同的svn仓库上(防止二进制文件中有病毒感染服务器,所以做了这种隔离)。
现在公司已经切换到git上进行版本管理了,那么就可以使用git lfs来管理这些二进制文件,这样就可以让源码和二进制文件和谐共存于一处,从而不像以前那样,需要分别做两次更新。

Git LFS的简单理解

LFS其实是git的一个扩展,并没有改变git的工作方式,有点像耍了个小花招,把指定需要lfs管理的文件替换成了一个指针文件交给git进行版本管理;
在pull/push等这些操作中,lfs又通过lfs服务器把这些文件的真身给下载或上传回来;
通过这样的手段,使得本地仓库的体积大大减小,而不会出现随着这些文件的版本增多而体积剧烈膨胀的情况;
个人觉得这种把存储负担转移给了服务器的做法,是不是有违git去中心化的理念,毕竟lfs这样做其实算是强依赖于这个lfs服务器了,本地仓库并不是一个完整的仓库 继续阅读【转】Git LFS的使用

Git如何修改已经push到远程仓库的历史commit信息?

节选自:Git如何修改已经push到远程仓库的历史commit信息?


  1. 在修改commit message之前最好先查看一下历史的commit信息,这是一个好习惯。
    git log
  2. 如果你想修改最近的某个commit message,那你可以直接用这个。HEAD~3表示将修改当前版本的近三条commit。
    git rebase -i HEAD~3
  3. 然后我们就可以进行修改了,比如我要改第一条,那我就把“pick”修改为“edit”。
    edit 1bf6b28 init
    pick 01d49ca 优化开发环境数据库目录
    pick 9709bde iview 3.0 & use shortId
    pick 03b3355 collection
  4. 接下来我们使用下面 这个命令,加不加-s都是可以的,-s表示要加入签名。
    git commit --amend
    git commit --amend -s
  5. 然后我就该执行下面这条命令了。
    git rebase --continue
  6. 最后,我们就该push到远程仓库了,完成修改。
    git push origin master

【转】Windows 安装 SourceTree3.3.8 跳过注册

转载自:windows 安装sourceTree3.3.8 install 时无反应,如何跳过注册安装


我的电脑是windows7, sourceTree是3.3.8

1、访问官网下载最新版本的sourceTree ,官网连接:

https://www.sourcetreeapp.com/

2、先安装sourceTree, 他会提示缺少.NET Framework 4.7.1, 少什么就安装什么,安装成功后, 需要重启电脑,然后执行步骤3; 如果没有缺少,请忽略,直接执行步骤3

3、选择bitbucket的界面退出

4、打开我的电脑, 在地址栏, 输入

%LocalAppData%\Atlassian\SourceTree\

5、在此目录下新建名为accounts.json文件, 写入以下内容

[
  {
    "$id": "1",
    "$type": "SourceTree.Api.Host.Identity.Model.IdentityAccount, SourceTree.Api.Host.Identity",
    "Authenticate": true,
    "HostInstance": {
      "$id": "2",
      "$type": "SourceTree.Host.Atlassianaccount.AtlassianAccountInstance, SourceTree.Host.AtlassianAccount",
      "Host": {
        "$id": "3",
        "$type": "SourceTree.Host.Atlassianaccount.AtlassianAccountHost, SourceTree.Host.AtlassianAccount",
        "Id": "atlassian account"
      },
      "BaseUrl": "https://id.atlassian.com/"
    },
    "Credentials": {
      "$id": "4",
      "$type": "SourceTree.Model.BasicAuthCredentials, SourceTree.Api.Account",
      "Username": "",
      "Email": null
    },
    "IsDefault": false
  }
]

6、打开 %LocalAppData%\Atlassian,进入“SourceTree.exe_Url_iayhtc13zv3obzuz5vchezjs1az2q5ef”(注:该目录可能和版本相关,不同版本的路径可能不完全一样。)

进入 3.3.8.3848 目录, 打开user.config 加入这几句话

<setting name="AgreedToEULA" serializeAs="String">
    <value>True</value>
</setting>
<setting name="AgreedToEULAVersion" serializeAs="String">
    <value>20160201</value>
</setting>

7、重新点击seourceTree.exe 安装, 弹框选择最后一项安装即可