git删除未监视的文件(untracked files)命令用法

gitLinux下删除未监视的文件( untracked files),一般通过命令来执行更方便,具体执行如下:

一般执行

即可。

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"

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

TortoiseGit 与 Putty 配置冲突导致 Server refuse our key

TortoiseGitTortoiseSVNGit版本, TortoiseGit用于迁移 TortoiseSVNTortoiseGit,一直以来 GitWindows平台没有好用 GUI客户端,现在 TortoiseGit的出现给 Windows开发者带来福音

TortoiseGit原本用得好好的,一日安装了 Putty后,问题出现了。。

在进行 git操作时提示:

TortoiseGit版本信息:

因为 TortoiseGit调用了由 Putty修改而来的 TortoisePLink,因此 Putty的配置将会影响 TortoiseGit

解决方法,删除注册表中的以下节点即可:

参考链接:


TortoiseGit 与 Putty 配置冲突导致 Server refuse our key

Git常用命令

Git检出使用SSH-KEY认证的服务器上的源代码:(注意,此处SSH-KEY只能使用绝对路径)

Git提交更改

Git提交代码到使用SSH-KEY认证的服务器master分支:(注意,此处SSH-KEY只能使用绝对路径)

参考链接:


git - 简易指南
specify private SSH-key to use when executing shell command with or without Ruby?

Windows下使用命令行执行需要用SSH keys登录的Git

Windows下使用Git的时候,大家都习惯了使用TortoiseGit来执行操作。但是在某些情况下,必须在Git Bash下面执行命令的时候,就比较麻烦了,尤其是服务器设置了SSH keys登陆的时候。默认情况下,TortoiseGit会自动加载puttygen生成的.PPK文件来完成认证工作,但是在Git Bash 下面,只能是根据Linux下面的配置来进行登陆认证了。

1.在Git Bash中输入“puttygen”,如下图所示:puttygen
弹出如下图形界面:putty_key_generator
对于已经有PPK文件的情况,点击"Load"来加载,没有PPK文件,请点击"Generate"来生成。加载完成后,点击菜单上的“Conversions”按钮,如下图所示:export_openssh_key

导出的文件没有扩展名,命名为“id_rsa”,注意,必须是这个名字,没有扩展名。

2.拷贝文件“id_rsa”到当前用户目录下面的 “.ssh”目录下面,当前用户目录的位置,请在Git Bash中输入“echo ~”来显示出来,最后的结果如下图所示id_rsa

3.在Git Bash中继续执行命令,就可以了!

将已有的Git项目的某个目录分离成独立子模块

当一个项目在开发若干时间后,希望将某个目录单独出一个项目来开发,此时就可以利用这个subtree的功能分离里。

具体的操作方式是这样的:(只能在Git Bash的命令行中操作
1. 首先cd到需要处理的项目的根目录

注意
<name-of-folder> 必须是从工程的根目录开始算起,类似“project/hello/world”的格式。
<name-of-new-branch> 的名字,尽量取简单。

2. 创建一个新的repo(项目)(离开原有的项目的文件夹,在另外的地方新建一个项目

注意
</path/to/big-repo>是我们需要拉取数据的根目录的绝对路径,类似 “D:\Source\Project”的格式。
<name-of-new-branch> 是我们刚刚分离出来的分支的名字。

3. 添加子模块(到原来工程的根目录下面

可以看到,在原来的Git工程的根目录下面增加了一个名为“.gitmodules”的文件,里面的内容如下:

WD My Cloud 安装 GIT 建立GIT Server

WD My Cloud安装 GIT的时候,总是提示依赖的 OpenSSL Server版本号不匹配,尤其是升级到最新的修复了“ Heartbleed” 的版本更是如此,不管如何操作,都是一样的,折腾了半天,结果把系统折腾挂掉了,网页进不去了,只能通过SSH界面重新还原系统,结果竟然可以安装成功了,看来,应该是前面安装openssh-server等的时候,导致的依赖问题,因此,如果出现问题,可以先全部还原系统,然后优先安装GIT 就能解决问题了。

  • 安装 GIT(主要是 gitgit-daemon)

 不要安装 openssh-server,因此不要使用 “ sudo apt-get install git-all” 来安装全部的功能 git-all包含了 PHP等等的很多东西,更新的东西太多,他会导致版本依赖问题,主要是 OpenSSL升级了,而依赖他的其他软件都还没有更新,而由于漏洞问题,系统又不允许早期版本安装。

  • 安装启动工具

用来在系统启动的时候启动Git 的服务器

  • 建立 GIT服务器存储目录

1.首先查看分区信息

可以看到具体的分区,我们在 " /nfs/Public" 目录下面建立一个 GIT的工作目录,具体根据自己需要来更改

  • 关闭 git-daemon(否则可能下面的配置文件修改会被覆盖)

配置启动文件

修改为

其中

--export-all目的是解决 用 git clone git://...时报错," server log: Repository not exported." 可以在 git文件夹里创建一个叫 git-daemon-export-ok的文件或者 git-daemon --export-all

--base-pathGit的工程目录

设置好了只后,那么每次开机就会自己启动了。

  • 启动 git-daemon

至于剩下的, GIT工程,可以直接拷贝到" /nfs/Public/Git"目录下面就可以了。

有其他的错误的话,详细信息可以在 /var/log/git-daemon/current中看到,分析一下日志即可。

  • 初始化远程git工程

服务器仓库使用 git --bare init不要使用 git init

  • 设置 SSH访问

使用上面的设置之后,会发现当使用 Git Push命令的时候,经常会长时间卡住,然后无法 Push上去,经过 Google一番之后,发现是 GitBUG,如果想要规避这个 BUG的话,老老实实的用 SSH来同步就可以了。

1.增加 Git用户,并指定工作目录为 “ /nfs/Public/Git

2.设置用户的密码

3.更改目录的所有者,并且赋予所有者全部权限

4.增加到 SSH用户列表

找到 AllowUsers所在行,在已经有的用户后面增加(如果找不到,则在尾部增加git

修改为

用户之间用空格隔开,如果没有这行,可以自行添加即可。
5.重启 SSHD服务

6.修改访问Git的方式,把

修改为

7. SSH免密码登录
(1)生成公钥/私钥对

注意" -P"后面输入的内容为空的时候代表不需要输入密码。
完成后会在当前用户目录下的 .ssh目录下生成 id_rsa, id_rsa.pub这两个文件。
(2)拷贝证书到本地机器
.ssh/id_rsa.pub拷贝下来,然后重命名成 id_rsa.pub.git也就是 Key加上用户名的命名方式,这样在 Linux或者执行命令行的时候 SSH可以自动进行用户名,密码的对应。
(3)对于 Linux复制的 id_rsa.pub.git添加到 .ssh/authorzied_keys文件里

authorized_keys的权限要是 600
(4)对于 Windows,则需要把 id_rsa这个文件拷贝下来,然后使用 TortoiseGit自带的 Puttygen转换为被 TortoiseGit支持的 .ppk文件。

点击" Conversions"菜单中的" Import key"选项,然后导入我们下载到的 id_rsa

PuttyKeyGeneratorImportKey

导入后,

SavePPK

由于 Puttygen的BUG,导致如果直接点击" Save private key",会导致生产的 Public key是不正确的,因此,需要先点击" Save public key",保存为文件后,无视这个文件即可。然后接下来点击" Save private key"按钮,保存为 .ppk文件,这个PPK文件才是我们需要的。

(5)修改 SSHD的配置文件 /etc/ssh/sshd_config
找到

这句,然后去掉注释。然后重启SSH服务

(6)修改登录认证文件,把认证信息导入到需要认证的用户目录下的 .ssh/authorized_keys文件中。

以上面添加的用户 git为例子,通过命令:

可以看到输出如下信息:

从而找到用户 git的工作目录在 /share目录下面.

因此执行如下命令:

接下来,需要修改 authorized_keys的所有者为用户 git,否则 git无法通过这个文件进行认证。

修改权限,否则无法用来登陆

然后修改 authorized_keys中的最后用户名的部分为 git(由于我们在 root中生成的密钥,因此,默认的用户名是 root,因此需要修改这个用户名).

最后的 root@WDMyCloud修改为 git@WDMyCloud.这样在认证的时候,才能成功进行用户名密钥的核对。
否则需要设置 /etc/ssh/sshd_config里面的 StrictModes yes修改为 StrictModes no,这样 SSH会忽略用户名的校验。

参考链接


login using ssh on multiple user accounts using the same id_rsa and id_rsa.pub [closed]
Linux下如何修改用户默认目录