标签: git-bare

如何将普通的Git存储库转换为裸存储库?

如何将"普通"Git存储库转换为裸存储库?

主要区别似乎是:

  • 在普通的git存储库中,您.git在存储库中有一个包含所有相关数据的文件夹,而所有其他文件都构建了您的工作副本

  • 在一个简单的Git存储库中,没有工作副本,文件夹(让我们称之为repo.git)包含实际的存储库数据

git version-control git-clone git-bare git-non-bare-repository

580
推荐指数
7
解决办法
21万
查看次数

Bare和非Bare存储库之间的实际区别是什么?

我一直在阅读Git中的裸机和非裸机/默认存储库.我无法理解(理论上)它们之间的差异,以及为什么我应该"推"到一个裸存储库.这是交易:

目前,我是唯一一个在3台不同计算机上工作的人,但是后来会有更多人参与其中,所以我使用Git进行版本控制.我在所有计算机上克隆了裸仓库,当我在其中一台计算机上完成修改后,我提交并将更改推送到裸仓库.从我所读到的,裸存储库没有"工作树",所以如果我克隆裸仓库,我将没有"工作树".

我猜测工作树存储项目中的提交信息,分支等.这不会出现在裸仓库中.因此,对于我来说,使用工作树将提交"推送"到repo似乎更好.

那么,为什么我应该使用裸存储库,为什么不呢?有什么实际区别?我认为,这对于从事项目的更多人来说没有好处.

你做这种工作的方法是什么?建议?

git repository git-bare

188
推荐指数
9
解决办法
8万
查看次数

编写一个git post-receive hook来处理特定的分支

这是我目前挂在公司服务器上的裸仓库中的git push origin master 钩子: 这个钩子推送到Assembla.我需要的是当有人将更改推送到我们服务器上的那个分支时,只推送一个分支(主,理想),并忽略推送到其他分支.是否可以从裸仓库中选择分支并仅将该分支推送到Assembla?

git hook repository git-bare

103
推荐指数
3
解决办法
5万
查看次数

我怎样才能在git裸存储库中取消提交最后一次提交?

考虑到有几个git命令在裸存储库中没有意义(因为裸存储库不使用索引而没有工作目录),

git reset --hard HEAD^ 
Run Code Online (Sandbox Code Playgroud)

不是解除对此类存储库中的最后一次更改的解除.

搜索通过互联网,所有我能找到相关的话题就是这个,在我提出这样做的方式有三种:
1."手动更新裁判(其中涉及水暖)";
2." git push -f来自非裸库";
3." git branch -f this $that".

您认为哪种解决方案更合适,或者有哪些方法可以做到这一点?不幸的是,我发现的关于git bare存储库的文档相当差.

git commit repository reset git-bare

88
推荐指数
3
解决办法
3万
查看次数

如何将裸git存储库转换为普通存储库(就地)?

我有一个简单的git存储库,但需要通过ssh访问和浏览其内容(在文件管理器中,如用户体验).

我想我可以克隆它:

git clone -l <path_to_bare_repo> <new_normal_repo>
Run Code Online (Sandbox Code Playgroud)

但是,我的存储库大小约为20GB,我没有空间来复制它.有没有办法将裸存储库就地转换为最终的工作副本?

git git-bare

71
推荐指数
6
解决办法
3万
查看次数

如何在裸Git存储库中创建主分支?

(全部在Windows 8上以poshgit完成):

git init --bare test-repo.git
cd test-repo.git
Run Code Online (Sandbox Code Playgroud)

(文件夹是使用git-ish文件和文件夹创建的)

git status
Run Code Online (Sandbox Code Playgroud)

致命:这个操作必须在工作树中运行 (好吧,所以我不能使用git状态和一个简单的仓库;我猜是有道理的)

git branch
Run Code Online (Sandbox Code Playgroud)

(没什么,似乎裸仓库不包含任何分支.我是否必须从克隆的仓库中添加它们?)

cd ..
mkdir test-clone
cd test-clone
git clone ../test-repo.git
Run Code Online (Sandbox Code Playgroud)

(我收到有关克隆空存储库的警告)

cd test-repo
Run Code Online (Sandbox Code Playgroud)

(提示更改以指示我在主分支上)

git branch
Run Code Online (Sandbox Code Playgroud)

(显示没有结果 - 是吗?)

git branch master
Run Code Online (Sandbox Code Playgroud)

致命的:不是有效的对象名称:'master'

嗯.那么如何在我的裸仓库中创建主分支?

git git-bare git-branch posh-git

38
推荐指数
3
解决办法
8万
查看次数

裸存储库中的git ls-files

我想访问一个裸git存储库,我想列出存储库中的所有文件.

在普通的git存储库中,我可以通过运行轻松完成git ls-files.

示例输出:

$ git ls-files
README.md
file1.js
file2.js
file3.js
folder1/file4.js
folder2/file5.js
Run Code Online (Sandbox Code Playgroud)

在一个裸git存储库中,这会无声地失败.它只是不返回任何文件(但成功退出):

$ cd my-bare-repository
$ git ls-files #returns nothing
$ echo $? #print exit code from previous command
$ 0
Run Code Online (Sandbox Code Playgroud)

现在我知道我必须提供一个有意义的分支或主要显示.但是,我怎样才能真正获得我知道的存储库中的文件列表?

git git-bare git-ls-files

33
推荐指数
1
解决办法
1万
查看次数

Git,如何将裸机改为共享仓库?

这就是我设置项目的方式:

git init --bare
Run Code Online (Sandbox Code Playgroud)

后来我了解到如果你想在一个有多个用户的项目上工作,我应该这样做:

git init --bare --shared
Run Code Online (Sandbox Code Playgroud)

现在我尝试这样工作,幸运的是我们在开始,所以我可以再次设置git.我仍然想知道,当你处于项目中间时,你无法做到这一点.有没有办法可以将裸仓库改为共享仓库?

git shared repository git-bare

31
推荐指数
3
解决办法
1万
查看次数

获取裸存储库的工作副本

我有一个服务器,我有一个裸存储库用于推送.但是,我的服务器需要有一个主分支的工作副本.

如何从裸存储库中获取工作副本?

git working-directory git-bare

31
推荐指数
6
解决办法
3万
查看次数

在创建将在服务器上的git存储库时,我可以将其转换为裸存储库吗?

我已经创建了一个存储库.我可以把它做成裸露的类型,还是我可以重新开始?

git git-bare git-non-bare-repository

29
推荐指数
3
解决办法
9814
查看次数