使用git的时候,通常的用法是 cd 到 repository目录下进行相关的操作,比如说有这么一个repository, D:\pygit2(通过 git clone https://github.com/libgit2/pygit2.git) 通常的做法是 cd D:\pygit2,然后再执行git的相关指令,比如 git status, git log 等等,这种情况下,git命令默认的是 .gitr和working-tree在同一个目录下 其实还有一种做法,在执行git命令的时候显式指定git-dir(.git目录)和working-tree,这就是本节要讲述的 --git-dir 和 --work-tree 参数 如果想将pygit2 repository中的某些commit copy到D:\pygit2以外的目录中,该怎么办?当然通过git clone 再创建一个repository可以做到,但是否是最简洁的方式?而且git clone存在其他一些不必要的开销,在某些情况下(比如含有大量的commit,branch)或许不是很合适。此时可以考虑使用git checkout 或者 git reset命令来实现,只需显式指定working-tree即可。具体实现方法如下: 假定想将D:\pygit2中的master copy到D:\bak中 1.1 git --git-dir=D:\\pygit2\\.git --work-tree=D:\\bak status 此时可以看到很多提示信息,意思是D:\\bak和D:\pygit2 repository相比很多文件缺失 1.2 git --git-dir=D:\\pygit2\\.git --work-tree=D:\\bak checkout -b tmp -f master 使用-f强制checkout,并创建一个tmp的branch 1.3 git --git-dir=D:\\pygit2\\.git --work-tree=D:\\bak  branch -d tmp 删除tmp branch 1.4 此时可以看到D:\\bak中的内容已经被更新为D:\\pygit2\\.git master branch的内容 2.1 git --git-dir=D:\\pygit2\\.git --work-tree=D:\\bak reset --quiet --hard 2.2 此时可以看到D:\\bak中的内容已经被更新为D:\\pygit2\\.git master branch的内容,不过这种方法存在一定的弊端,那就是index中的内容都已经丢失,想要恢复 的话存在一定的难度,所以在使用reset之前还是慎重一些比较好。 需要注意的是, git-dir传入的一定是git的repository,也就是.git文件夹。 使用git的时候,通常的用法是 cd 到 repository目录下进行相关的操作,比如说有这么一个repository, D:\pygit2(通过 git clone https://github.com/libgit2/pygit2.git)通常的做法是 cd D:\pygit2,然后再执行git的相关指令,比如 git status, git log 等等,这种情况下,git命令默认的是 # Yes, thats all :) usage: git dir [-h] [--output_dir OUTPUT_DIR] [--flatten] urls [urls ...] Download directories/folders from Git Hub positional arguments: urls List of Git hub directories to download. optional arguments: -h, --help show this help message and exit --output_dir Administrator@wangGangQiang MINGW64 /d/Environment/ GIt /. git ( GIT _DIR!) $ git config --global user.name "wanggangqiang" #设置用户名 Administrator@wangGangQiang MINGW64 /d/Environment/ GIt /. git ( GIT _DIR!) $ git config --global user.email 1207669650 打印概要和最常用命令的列表。如果选项--all或者-a给出,则打印所有可用的命令。如果命名 Git 命令,此选项将显示该命令的手册页。 其他选项可用于控制手册页面的显示方式。有关更多信息,请参阅 git -help(1),因为 git --help ...内部转换为 git help ...。
git -- git-dir 开发人员使用诸如 Git 之类的源代码控制系统的一个重要原因是避免灾难。 如果您执行错误删除文件这样的简单操作,或者发现对十二个文件所做的更改都是不明智的,那么您可以轻松撤消所做的事情。 即使对于有经验的 Git 用户,某些 Git 错误也更令人生畏且难以逆转。 但是,只要稍加注意(在您不惊慌的情况下),您就可以从程序员所知的一些最严重的 Git 灾难中退缩。 [ 同样在I...
git 简介 Git 是目前世界上最先进的分布式版本控制系统(没有之一)。 Linus花了两周时间自己用C写了一个分布式版本控制系统,也就是 Git 的雏形。至于Linus为什么写这个 Git (分布式版本控制系统),也是十分有趣的,在此就不在介绍了。 本篇文章主要整理一些 git 常用命令,原理先不进行详解。 Git 安装 Git 在Linux、Unix、Mac和Windows这几大平台都可以正常运行。 在此仅介绍Windows上安装 Git Git 官网下载地址:https:// git -scm.com/downloads 没有供应商锁定-一切都只是一个裸露的 git 存储库 该项目的主要目标是在不需要像Bitbucket, Git hub, Git lab, Git ea等完整解决方案时启用简单的 git 托管。 该项目的灵感来自于 git olite和 git osis,但还包括一个内置的ssh服务器和一些附加的灵活性。 它不被认为是稳定的,但应该足以进行试验。 值得庆幸的是,由于所有存储库都简单
如果某次修改仅仅改动几个字,不想重新生成一条记录的话,可以在 git add 之后执行 git commit --amend命令,但是执行 git commit --amend不生成新的目录的前提是配置hook,也就是需要用到 git rev-parse -- git-dir 。 如果你的项目地址是:ssh://name@ git .co.com:8236/test/doc 那么只需要在根目录下执行: scp -...
使用 git 的时候,通常的用法是 cd 到 repository目录下进行相关的操作,比如说有这么一个repository, D:\py git 2(通过 git clone https:// git hub.com/lib git 2/py git 2. git ) 通常的做法是 cd D:\py git 2,然后再执行 git 的相关指令,比如 git status, git log 等等,这种情况下, git 命令默认的是 . git r和working-tree在同一个目录下 其实还有一种做法,在执行 git 命令的时候显式指定 git -di
git format-patch origin/master --start-number 1 --subject-prefix & quot;PATCH 1/3 & quot; git format-patch origin/master --start-number 2 --subject-prefix & quot;PATCH 2/3 & quot; git format-patch origin/master --start-number 3 --subject-prefix & quot;PATCH 3/3 & quot; 这样就可以生成3个patch文件,分别对应于一系列的提交。 2. 使用 git send-email发送邮件 使用 git send-email命令发送邮件,可以使用以下命令: git send-email --to & lt;收件人邮箱 & gt; --subject & quot; & lt;邮件主题 & gt; & quot; *.patch 这样就可以将生成的一系列patch文件作为附件,以一封邮件的形式发送给收件人。 注意:在发送一系列的邮件时,需要确保每个邮件的主题前缀和序号都正确,这样收件人可以按照正确的顺序阅读邮件。另外,有些邮件服务器可能会限制附件的大小或数量,需要注意邮件的大小和数量限制。