使用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文件作为附件,以一封邮件的形式发送给收件人。
注意:在发送一系列的邮件时,需要确保每个邮件的主题前缀和序号都正确,这样收件人可以按照正确的顺序阅读邮件。另外,有些邮件服务器可能会限制附件的大小或数量,需要注意邮件的大小和数量限制。