我刚刚运行了一个git diff,我得到了所有大约10个子模块的以下输出
diff --git a/.vim/bundle/bufexplorer b/.vim/bundle/bufexplorer
--- a/.vim/bundle/bufexplorer
+++ b/.vim/bundle/bufexplorer
@@ -1 +1 @@
-Subproject commit 8c75e65b647238febd0257658b150f717a136359
+Subproject commit 8c75e65b647238febd0257658b150f717a136359-dirty
Run Code Online (Sandbox Code Playgroud)
这是什么意思?我如何解决它?
我想知道如何从我的Git diff中排除整个目录.(在这种情况下/规范).我正在使用git diff命令为我们的整个软件版本创建差异.但是,规范的更改与此过程无关,只会造成令人头疼的问题.现在我知道我能做到
git diff previous_release..current_release app/
Run Code Online (Sandbox Code Playgroud)
这将为app目录中的所有更改创建一个diff,但不会在lib /目录中创建.有谁知道如何完成这项任务?谢谢!
编辑:我只是想清楚,我知道我可以在最后编制所有目录的参数,减去/ spec.我希望有一种方法可以真正排除命令中的单个目录.
我似乎无法摆脱Git子模块中未跟踪的内容.运行git status收益率:
# On branch master # Changes not staged for commit: # (use "git add ..." to update what will be committed) # (use "git checkout -- ..." to discard changes in working directory) # (commit or discard the untracked or modified content in submodules) # # modified: bundle/snipmate (untracked content) # modified: bundle/surround (untracked content) # modified: bundle/trailing-whitespace (untracked content) # modified: bundle/zencoding (untracked content) # no changes added to commit (use "git add" and/or "git …
我project_dir/vendor/submodule_one每次运行时git status都会在项目中添加一个子模块modified: vendor/submodule_one (new commits).
我的问题是解决这个问题的最佳方法是什么?我是否将vendor/submodule_one-folder 添加到my中,.gitignore因为我的主项目不应该知道我的子模块的细节?
或者当我更改并提交对子模块的更改时,我是否还需要在我的主项目中进行提交?
刚刚开始使用子模块,除了设置它们之外似乎找不到太多信息.
在Linux上使用Git 1.8.1.1.存储库如下所示:
master
book
Run Code Online (Sandbox Code Playgroud)
子模块创建如下:
$ cd /path/to/master
$ git submodule add https://user@bitbucket.org/user/repo.git book
Run Code Online (Sandbox Code Playgroud)
该book子模块是干净的:
$ cd /path/to/master/book/
$ git status
# On branch master
nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)
另一方面,主人显示书子模块有"新提交":
$ cd /path/to/master/
$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: book (new …Run Code Online (Sandbox Code Playgroud) 我最近重组了我的dotfiles,住在一个Git存储库中~/Dropbox/dotfiles,我正在使用病原体将所有Vim插件捆绑在里面~/Dropbox/dotfiles/home/.vim/bundle.这些插件作为Git子模块添加.
现在的问题是,当我运行Vim时,它会自动生成所有插件的文档,并将它们放在每个子模块目录中.这会将未跟踪的内容添加到子模块中,我希望避免这些内容.
ruby-1.8.7-p330@gs ~/Dropbox/dotfiles ‹master*› $ git st
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
# (commit or discard the untracked or modified content in submodules)
#
# modified: home/.vim/bundle/fuzzyfinder (untracked content)
# modified: home/.vim/bundle/l9 (untracked content)
# modified: home/.vim/bundle/matchit (untracked content)
# modified: home/.vim/bundle/ruby (untracked content)
# ...
no changes …Run Code Online (Sandbox Code Playgroud) 我喜欢git子模块.另外,我讨厌git子模块.我喜欢他们的是它如何使你能够干净地划分依赖关系等等.我明白让他们指出一个回购的特定提交,我这样做.但在我的情况下,我正在构建一个将在另一个项目中使用的库,所以我想把它保存在那个单独的repo中.
然而,当我每天在这个库上工作时,烦恼就来了,我不得不使用我的库切换回app来提交指针更新.
那么,当我不断更新并添加到这个库时,是否有可能让git子模块始终位于它所指向的repo的头部?
我有一个使用composer进行包管理的php项目.其中一个包是属于同一个仓库的另一个项目.我需要提交我的整个供应商文件夹,但是我想忽略子项目中的.git文件夹,这样它就不会被视为子模块.
到目前为止,我没有成功.我已经尝试过的事情:
供应商/ git的
供应商/**/.GIT中/
谷歌搜索
堆栈溢出搜索
这是子项目文件夹在GitLab中的样子.而不是文件,它只是某种参考.
我有一些部分生成的文件foo,我希望以初始状态签入到存储库中,但是我不希望git注意到任何更改。
我想过把它的.gitignore文件git add -f foo就足够了,但git status和git diff显示的变化FOO以及git add .添加。反正我能做到这一点吗?
就像git update-index --assume-unchanged foo 但自动为所有人提供的功能,而不仅仅是在本地。
事后编辑:有类似问题的处理到这一阵子之后,
--skip-worktree最好--assume-unchanged,看到这一问题的原因。神奇地使其适用于所有人的问题仍然存在。
要成为一个更具体一点它的一些文件,它跟踪的内存数据库单元测试需要的线条CREATE USER SA PASSWORD ""和GRANT DBA TO SA,如果我删除这个文件时,它就会重新生成这些行不存在。它跟踪两次运行之间的数据库状态,这就是为什么我不希望将其更改检查到存储库中的原因。
我知道这是一个奇怪的情况,弄清楚如何用这些行生成或不跟踪状态可能是一个更好的解决方案。
mkdir test
cd test
git init
echo "hey" > foo
git add .
git commit -m "Add hey to foo"
echo "foo" > .gitignore
git add .
git …Run Code Online (Sandbox Code Playgroud) 使用时有没有办法忽略脏子模块git add --patch?
我已ignore = dirty按照此处的说明进行设置。这似乎只适用于git status和git diff。我爱git add -p。每次我想添加一个小的更改时,都必须跳过 10 个脏的子模块,这让我很沮丧。
我还没有完全弄清楚git add -i,但看起来它以相同的方式处理脏子模块。