相关疑难解决方法(0)

有没有办法在一个命令中获取git根目录?

Mercurial有一种打印根目录(包含.hg)的方法

hg root
Run Code Online (Sandbox Code Playgroud)

在git中是否有类似的东西来获取包含.git目录的目录?

git version-control

613
推荐指数
18
解决办法
18万
查看次数

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

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

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

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

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

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

git repository git-bare

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

我的Git配置中的设置来自哪里?

我注意到core.autocrlf我跑的时候有两个列表git config -l

$ git config -l
core.symlinks=false
core.autocrlf=false
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
pack.packsizelimit=2g
help.format=html
http.sslcainfo=/bin/curl-ca-bundle.crt
sendemail.smtpserver=/bin/msmtp.exe
diff.astextplain.textconv=astextplain
rebase.autosquash=true
user.name=name
user.email=email@example.com
core.autocrlf=true
Run Code Online (Sandbox Code Playgroud)

最后3个(来自user.name)是我C:\users\username\.gitconfig文件中唯一的.所有其他的来自哪里?为什么core.autocrlf列出两次?

这是使用msysgit 1.8.3,我也安装了SourceTree(Windows 7).在SourceTree中,我取消选中"允许SourceTree修改全局Git配置文件"

git msysgit git-config

80
推荐指数
4
解决办法
6万
查看次数

将更改推送到远程存储库时,此Git警告消息是什么?

描述有点简洁.我只是在我的本地主分支上添加了一个文件并将其推回到远程仓库.知道为什么会这样吗?

warning: updating the current branch
warning: Updating the currently checked out branch may cause confusion,
warning: as the index and work tree do not reflect changes that are in HEAD.
warning: As a result, you may see the changes you just pushed into it
warning: reverted when you run 'git diff' over there, and you may want
warning: to run 'git reset --hard' before starting to work to recover.
warning: 
warning: You can set 'receive.denyCurrentBranch' configuration variable to
warning: …

git version-control

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

如何解压缩git存储库的所有对象?

如何解压缩包文件的所有对象?

我刚刚克隆了一个远程存储库,所以我的本地存储库当前不包含任何松散的对象,只包含.pack和.idx文件.

我试过跑git unpack-objects < .git/objects/pack/pack-.pack,但没有任何反应.

我做错了什么?还有其他命令吗?

git unpack

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

裸存储库中的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 clone --mirror从github克隆了一个项目.这给我留下了一个带有packed-refs文件,.pack.idx文件的存储库.出于开发目的,我想查看松散的对象,所以我用git unpack-objects <<pack file>解压缩对象,这很好(如果你想知道,我将包文件解压缩到一个新的repo中).唯一的问题是refs/heads /仍然是空的,所有的refs仍然只在packed-refs中,但我需要它们在refs/heads /中.我无法找到一个提取或解压缩这些引用的命令,我不知道我不会相信我必须手动(或通过管道)这样做.

所以实际上我有两个问题:

  1. 有没有一种简单的方法可以从打包引用中 "恢复" 引用
  2. 如果没有,为什么不存在?如果有一个解包对象的命令,那么为refs提供相同内容的原因是什么(不要忘记甚至还有一个命令git pack-refs ...)

感谢您的任何提示和想法.

git command-line

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

git - 在裸存储库下检出单个文件

在服务器上,我有裸存储库,它是开发过程的起源,并简化了到QA环境的部署.

所以post-receive它根本

GIT_WORK_TREE=/home/dev git checkout -f
Run Code Online (Sandbox Code Playgroud)

但随着产品变得越来越复杂,还应该发生其他一些事情.所以现在它由deploy.sh脚本处理,脚本也被存储库跟踪.所以我想做的是能够而不是检查整个存储库只是结账deploy.sh并运行它.我认为这样的东西会起作用:

SOURCE_PATH="/home/dev"
GIT_WORK_TREE=$SOURCE_PATH git checkout deploy.sh
$SOURCE_PATH"/deploy.sh"
Run Code Online (Sandbox Code Playgroud)

但它不起作用给出错误:

error: pathspec 'deploy.sh' did not match any file(s) known to git.
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?或者这样做是不可能的?

git sh githooks

12
推荐指数
1
解决办法
4191
查看次数

github存储库和git裸存储库之间有什么区别?

在github存储库中,我们可以进行git push git pull操作,同时,我们可以通过Web UI提交到存储库.似乎github存储库同时作为裸存储库和工作存储库工作?

但是,在git bare repository中,我们无法将目录提交到存储库.

所以,我的问题是

github存储库和git裸存储库之间有什么区别?

git github

11
推荐指数
1
解决办法
4952
查看次数

git中裸共享存储库的概念

我一直面临着理解裸存储库的困难.我到处都读到共享的回购是一个简单的回购.为什么它必须是一个简单的回购?它不能是合作者克隆然后推/拉的正常回购吗?

git repository git-bare

7
推荐指数
1
解决办法
2176
查看次数

git init不会为我创建git目录

我是Git的新手.我可以在一个裸目录中获得一个Git目录结构git -init --bare.我可以看到git信息的存储位置.

但是,当我尝试使用git init甚至git clone,我从未.git在本地存储库中看到任何子目录.我可以添加文件和推送,但不知道这些文件实际存储在我的本地存储库的磁盘上.

从文档:

$ git init
Run Code Online (Sandbox Code Playgroud)

这将创建一个名为的新子目录.git,其中包含所有必需的存储库文件 - Git存储库框架.

但是,我从未见过骨架目录.我曾经dir -AH看过git目录是否被隐藏,但是没有.为什么我没有得到一个git骨架目录?在哪里,确切地添加(暂存)文件?

git git-init

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

Git推送结账?

我想将我的文件直接推送到我的Web服务器.我添加了服务器testing并尝试了

git push testing
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个错误.制作裸存储库的解决方案可行但我希望自动检出文件.我找到了这个脚本,但没有改变任何东西.

我可以在第三个裸存储库上传输更改,但这只需要很长时间:

client:
git commit -m "test" -a
git push origin
<password>

server:
git pull origin/master
Run Code Online (Sandbox Code Playgroud)

更新(2)

我在服务器上创建了一个新分支git branch testing.

同样在服务器上我创建.git/hooks/post-update了一个添加的:

echo "a" >> /home/pi/log
git update-server-info
git stash
git merge testing >> /home/pi/log
Run Code Online (Sandbox Code Playgroud)

在我运行的客户端上

git push testing HEAD:testing
Run Code Online (Sandbox Code Playgroud)

现在我的/home/pi/log包含:

a
Updating ae2f44b..04753a9
Fast-forward
 application/views/main/index.php |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Run Code Online (Sandbox Code Playgroud)

但文件没有改变.还有什么可能是错的?

git

6
推荐指数
1
解决办法
3024
查看次数

Github或任何其他基于云的存储库服务(Gitlab,Bitbucket)如何存储源代码文件和目录?

它们是否将文件和目录的元数据存储在数据库中以及服务器实例的文件系统上的实际文件和目录?

git directory storage file github

4
推荐指数
1
解决办法
98
查看次数