在Linux上,该readlink实用程序接受一个-f跟随其他链接的选项.这似乎不适用于Mac和可能基于BSD的系统.相当于什么?
这是一些调试信息:
$ which readlink; readlink -f
/usr/bin/readlink
readlink: illegal option -f
usage: readlink [-n] [file ...]
Run Code Online (Sandbox Code Playgroud) 我不确定这是否是Git所支持的东西,但理论上它似乎应该对我有用.
我的工作流程通常涉及我同时在多个分支中编辑文件.换句话说,我经常想在一个分支中打开一些文件,而我在另一个分支中编辑另一个文件的内容.
我的典型解决方案是进行两次检查,但遗憾的是我不能在它们之间共享分支和引用.我想要的是只有两个工作目录由同一个.git文件夹管理.
我知道本地git clone解决方案(默认情况下,硬链接共享对象,以及--shared选项,它使用原始repo设置备用对象存储),但这些解决方案只减少了磁盘空间使用量,特别是在--shared的情况下,似乎充满了危险.
有没有办法使用一个.git文件夹,并有两个工作目录由它支持?或者是Git硬编码只是随时检查一个工作目录?
是否有命令在给定相对路径的情况下检索绝对路径?
例如,我希望$ line包含dir中每个文件的绝对路径 ./etc/
find ./ -type f | while read line; do
echo $line
done
Run Code Online (Sandbox Code Playgroud) 当您在某个Git目录中工作时,如何在某些Git存储库中获取Git存储库名称?有没有Git命令?
# I did check out bar repository and working in somewhere
# under bar directory at this moment such as below.
$ git clone git://github.com/foo/bar.git
$ cd bar/baz/qux/quux/corge/grault # and I am working in here!
$ git xxx # <- ???
bar
Run Code Online (Sandbox Code Playgroud) 在git中设置项目很简单,所以即使是小脚本我也可以拥有单独的存储库.现在的问题是如何管理它们.
我使用这些存储库在多个地方工作.当我对某个存储库进行了更改后,我希望能够在其他位置更新存储库.
所以我有一个包含许多存储库的目录.
能够用一个命令完成这些操作会很高兴.
输出需要足够沉默才能真正注意到要做的事情.
我正在寻找git list-path打印相关存储库(.git目录)的路径之类的东西.
一点背景:我已经在我的很多项目/文件夹中设置了git版本控件.其中一些是嵌套的,因此一个带有echo自己的存储库的目录是另一个使用另一个存储库跟踪的目录的子文件夹.
例如,在我的主目录(~)中,我使用git来跟踪我的点文件,但在文件夹中,~/photo/meta-mix/我有另一个项目,我跟踪一个单独的存储库.现在,比方说,我已经在目录中设置了另一个项目
~/photo/meta-match/,但我不知道它是否有自己的存储库.所以我想知道这个目录是否受版本控制,以及它的存储库在哪里.
如何使用git命令执行此操作?git status可以给我
nothing to commit
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,何时~/photo/meta-match/拥有自己的存储库或何时只是引用存储库~.
我想要一个简单的git命令来访问存储库的"根".
我开始使用脚本,但想到我无法更改shell的活动目录,我不得不做一个功能.不幸的是,我不能用非破折号形式"git root"直接调用它.
function git-root() {
if [ -d .git ]; then
return 0
fi
A=..
while ! [ -d $A/.git ]; do
A="$A/.."
done
cd $A
}
Run Code Online (Sandbox Code Playgroud)
你有更好的解决方案吗?(功能写得很快,欢迎提出建议)
我只看到一个git config命令如下:
git config --global alias.out \!"git fetch; git cherry origin/HEAD -v"
Run Code Online (Sandbox Code Playgroud)
这是什么意思?它等于这个:
git config --global alias.out '!git fetch; git cherry origin/HEAD -v',
Run Code Online (Sandbox Code Playgroud)
我对感叹号感到困惑,任何帮助将不胜感激.
可能重复:
有没有办法在一个命令中进入git根目录?
有时候,我对git认为我在Git工作目录中感到困惑,但对我来说,顶级工作目录(包含.git/)是什么并不明显.(可能这个回购是由一个错误造成的.)
那么,如果我在子目录中的某个地方,如何查找顶级Git repo目录?如何git打印它认为当前顶级工作目录的内容?
这可能已经得到了回答,但我没有找到一个好的答案.
我来自集中式存储库,例如SVN,通常您只执行检出,更新,提交,还原,合并等等.
Git让我发疯.有很多命令,但最难理解的是为什么很多东西都像他们一样工作.
根据"什么是裸git存储库?" :
使用创建的存储库
git init --bare称为裸存储库.它们的结构与工作目录略有不同.首先,它们不包含源文件的工作或签出副本.
...
创建的裸存储库git init --bare用于... 共享....开发人员将克隆共享裸仓库,在其仓库的工作副本中进行本地更改,然后回退到共享裸仓库以使其他用户可以使用其更改.
- Jon Saints,http://www.saintsjd.com/2011/01/what-is-a-bare-git-repository/
但是,从接受的答案"github存储库和git裸存储库之间有什么区别?" :
GitHub上的Git repos是裸的,就像你要推送到[sic]的任何远程仓库一样.
- VonC,https://stackoverflow.com/a/20855207
但是,在GitHub中有源文件.我可以看到他们.如果我创建一个裸存储库,则没有源文件,只有.git工作存储库目录的内容.
这怎么可能?我不明白什么?
您能举例说明为什么我需要一个裸存储库及其以这种方式工作的动机吗?
爱德华汤姆森的回答部分是我想知道的.不过,我会重新提出我的问题:
我发布了第一个链接状态("什么是裸git存储库?"):
它们[裸存储库]不包含源文件的工作或签出副本.
VonC的回答:
GitHub上的Git repos是裸的
两个陈述暗示
Github没有工作副本.
爱德华汤姆森说:
它会在您浏览数据时根据数据呈现网页 - 将数据直接从存储库中提取出来并输出到您的Web浏览器,而不是先将数据写入文件服务器上的磁盘
不知何故,裸存储库必须包含所有数据和源代码.如果没有,那么渲染任何东西都不是不可能的,因为我可以看到所有源代码更新(提交),所有分支(具有各自的源),回购的整个日志等.
存储库的整个数据是否始终位于.git目录(或裸存储库)中,以某种格式可以随时呈现所有文件?这是裸存储库的原因,而工作副本只在给定时间有文件吗?
git ×8
bash ×2
path ×2
absolute ×1
directory ×1
environment ×1
find ×1
freebsd ×1
git-bare ×1
git-commands ×1
git-config ×1
github ×1
macos ×1
repository ×1
scripting ×1
sh ×1
shell ×1