我在项目的根目录中有数据目录.它有图像目录和一些文件.这是一个例子:
在gitignore中写什么,忽略数据/目录中的文件(即results.csv和r.txt)和images /目录中的文件(image.jpg,image2.jpg,image3.jpg)?
当我提交它时,存储库中的文件夹结构应该是:
所以,我只想要提交空文件夹结构.
我想在repo的子文件夹中维护文件的历史记录.但我需要重命名顶级文件夹名称.当我运行'git mv dirName newDirName我得'致命:源目录为空;'
我的源目录具有以下结构:
gitRepoDir
--.git
--Source
-- -DirLevel2
-- --DirLevel3
-- --DirLevel4
-- --DirLevel5
+++ --DirNameToRename
+++ --sub1dir
+++ --File
+++ --sub2dir
+++ --File
+++ --sub3dir
+++ --File
+++ --File
+++ --sub4dir
+++ --File
Run Code Online (Sandbox Code Playgroud)
有没有办法重命名顶级文件夹并维护以下子文件夹中的文件历史记录?或者我是否需要先创建目录结构然后使用git mv命令移动文件?
我在这里阅读了很棒的git教程,我无法创建目录.
我的文件夹结构是:
代码 - Python - C++ - F# - ...
在初始化的本地存储库"代码"中,我更改为子文件夹"Python","C++",...确实git init,现在我想在我的版本控制服务器上使用相同的结构.
% git commit -m "added directories"
# On branch master
nothing to commit (working directory clean)
Run Code Online (Sandbox Code Playgroud)
我想我得到了一些完全错误的东西,是吗?
谢谢,愿
Git不会跟踪目录.它只跟踪某些目录中的文件.(请参阅如何将空目录添加到Git存储库?)
但是,如果我有一定的提交历史,我隐含地也有目录树的更改历史记录.
那么我该如何回答以下问题:
我能想出的最接近的是伪代码:
loop over all commits (git rev-list --all)
start from repo root directory
do recursively on the directory tree rebuilt so far
call git ls-tree and grep the tree lines
rebuild next level of directory tree
end
end
Run Code Online (Sandbox Code Playgroud)
显然,这可以用您最喜欢的脚本语言编写.
然后我有所有目录树,我仍然需要以聪明的方式搜索它们,以便回答类型1 - 3的问题.再次,可行,但可能不会在几分钟内.
问题是:
Git 跟踪文件,而不是目录,我们当前不能add清空目录(标准技巧不会添加空目录,而是添加文件,请参阅常见问题解答).
然而,git repo可能包含一个空目录.那么我会克隆一个repo或签出一个包含空目录的分支会发生什么?它是在工作树中创建的吗?
打开文件时如何恢复光标的"逻辑"和"物理"位置?
那是:
光标应位于文件中的最后一条逻辑行上.
根据vim窗口,光标应位于最后一次物理线上
我注意到这篇文章.它确实将光标放在右边的逻辑行上.但是窗口中的光标物理位置是第一行还是中间.
UPDATE:该解决方案是mkview与loadview作为由@sehe指出.
为了使它适用于其他插件(在我的情况下,乳胶文件+ 乳胶盒),以下将是有用的:
au BufWinLeave *.tex mkview
au VimEnter *.tex loadview
来自Vim的文档VimEnter:
.vimrc文件,执行"-c cmd"参数,创建所有窗口并在其中加载缓冲区.UPDATE2:更好地组织"view-snapshot-files"
通过创建文件夹~/.vim/view,您将保留所有"view-snapshot-files".
如果您使用的git是~/.vim跨计算机同步,也许您愿意
~/.vim/view,然后你需要(根据这里的答案添加)
~/.vim/view/.gitignoreview/*,!.gitignore 放入~/.vim/.gitignore我很清楚git不适用于空目录(这里是一个比较流行的git问题),但是我在问跟踪目录是否有特定的理由或理由(如果可能的话官方).
我问,因为目录在某些情况下可以自己拥有有意义的元数据.例如,如果使用粘滞模式,则目录的文件模式可能很重要.目录为空的这一事实对于应用程序而言可能很重要.
我已经承诺并将项目推送到我的GitHub帐户.
该项目包含以下部分文件结构:
server
|
--- conf
|
----- some files
|
--- java
|
--- lib
Run Code Online (Sandbox Code Playgroud)
java和lib文件夹为空.
从GitHub下载我的项目时,生成的zip不包含java和lib文件夹.
Git会删除空文件夹吗?
我使用Atlassian的SourceTree作为我的Git客户端.
这里的关键词是为什么。答案是很多问题,“ git不允许这样做”,但我想知道为什么它不允许这样做。
我一直在阅读有关git的体系结构,并且其中包含以下图像:

该图像显示,有 tree节点。从技术上讲,保存一个tree没有任何孩子的a看起来很简单。那么为什么git禁止这样做呢?
本书的一部分提到了这一点:
对于更改后的文件上方的每个目录(加上存储库根目录),将创建一个具有新标识符的新树对象。从新创建的根树对象开始创建DAG,该对象指向Blob(在此提交中重用文件内容未更改的现有Blob引用),并引用新创建的Blob代替该文件在先前树层次结构中的先前Blob对象。 。(blob代表存储在存储库中的文件。)
我觉得这可能是原因,但是对于我想要回答的内容来说,这有点掩饰细节。
git status命令不显示新的未跟踪目录,我不能git添加它们.我该如何解决这个问题?显示新的和未跟踪的文件,问题仅出现在新目录中.