我正在学习git,但我对不同的登台和提交文件的方式感到困惑.为了解决这个问题,我正在使用目录的比喻:工作目录,登台目录,提交目录.
rm是工作目录中的文件,它只会从我的工作目录中删除它.这是正确的吗?git rm是工作目录中的文件,则将其从所有三个目录中删除.正确?git rm --cached是一个文件,它会从我的staged和commit目录中删除该文件,但是将它留在我的工作目录中?git add .,则会git status显示已添加,删除和更新的暂存文件.我承诺会发生什么?是否从Commit目录中删除了已删除的文件?如果我稍后回滚到该提交,那么这些已删除的文件会重新出现吗?任何有助于更好地理解这些概念的帮助都会受到赞赏 - 谢谢!
我的问题不同于为什么gitignore在这种情况下没有工作?也没有.gitignore不工作
files/conf.php已经在.gitignore中,但git status仍显示其修改,为什么?
我的意思是如果它在.gitignore中不应该跟踪这个文件...
cat .gitignore
files/conf.php
[root@home blogmi]# 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: files/conf.php
#
no changes added to commit (use "git add" and/or "git commit -a")
Run Code Online (Sandbox Code Playgroud) 我试图让我的 .gitingore 工作(链接到问题:))。
我刚刚做完
git rm . -r --cached
Run Code Online (Sandbox Code Playgroud)
现在,当我输入时,我有一个已删除文件的完整列表:
git status -s
Run Code Online (Sandbox Code Playgroud)
这是正常的吗?我可以安全地提交所有更改吗?
或者也许有办法撤消这个命令?
PS:我试图理解这个命令的作用,但我只发现了这个: http: //brianloomis.wordpress.com/2009/08/10/git-rm-r-cached/ 而且我不太清楚。
PS 2:好的:)为了拯救我的皮肤,我进行了重置:
git reset HEAD *
Run Code Online (Sandbox Code Playgroud)
已删除的文件已经再见了:) git status -s 中不再可见。但执行命令仍然安全:
git rm . -r --cached and then add and commit it?
Run Code Online (Sandbox Code Playgroud) 我在我的团队中有4个人,他们经常不得不改变数据库的套接字,因为它们有不同的路径,它变得烦人,我试图将database.yml添加到.gitignore:
/config/database.yml
Run Code Online (Sandbox Code Playgroud)
但是出于一些奇怪的原因,我编辑文件并使其git status仍然被跟踪!谁能告诉我我能做些什么?
我在 MAC - OSX 中编写代码,在 PC - Windows 中编写我的合作伙伴代码,但是当我提交和推送更改时,项目目录中有多个文件以 .IML 或 .config 或 .properties 结尾,这些文件被覆盖并导致频繁覆盖,这是一个麻烦.
所以我的问题是哪些文件可以从 Android Studio Gradle 项目的 GIT 中排除以维护 MAC 和 Windows 中的代码?最好的方法是什么?
所以我知道之前已经问过并回答了这些问题的变体,所以首先我想通过我自己的一些研究向您展示我没有重复的.
前两个是我看到人们在使用 .gitignore 文件时遇到问题的主要原因,但这不是我遇到问题的地方。最后一个我 99% 肯定也不是问题。
在告诉 git 忽略我的 Library 和 Temp 文件夹后,在准备提交时,来自 temp 和 Library 的任何文件仍会显示在 Windows 的 GitHub 客户端中: Linked image since Imgur is have questions
编辑: 在 SmartGit 中查看 repo 时出现同样的问题
还有我的 .gitignore 文件
# =============== #
# Unity generated #
# =============== #
[Tt]emp/ …Run Code Online (Sandbox Code Playgroud) 我正在使用Rails并将目录tmp和Gemfile添加到我的.gitignore.但每次我改变它,git status告诉我,它改变了.在两台机器上.在我的开发人员计算机和服务器上.有点烦人.
内容.gitignore:
.DS_Store
data/export/*.csv
tmp/*
*.rbc
*.sassc
.sass-cache
capybara-*.html
.rspec
/.bundle
/vendor/bundle
/log/*
/tmp/*
/db/*.sqlite3
/public/system/*
/coverage/
/spec/tmp/*
**.orig
config/*.yml
rerun.txt
pickle-email-*.html
Gemfile*
Run Code Online (Sandbox Code Playgroud) 我的存储库顶层文件夹中有一个.gitignore文件,其中包含以下代码:
# Compiled python modules.
*.pyc
# Backup gedit files.
/*~
# Setuptools distribution folder.
/dist/
# Python egg metadata, regenerated from source files by setuptools.
/*.egg-info
/*.egg
Run Code Online (Sandbox Code Playgroud)
当我尝试运行git add .命令时,.gitignore无效,因为添加了多个/ *〜。的输出git status如下:
new file: uvispace/tests/test_messenger.py
new file: uvispace/tests/test_messenger.py~
new file: uvispace/tests/test_robot.py~
new file: uvispace/uvirobot/__main__.py~
new file: uvispace/uvirobot/messenger.py~
new file: uvispace/uvirobot/move_base.py
Run Code Online (Sandbox Code Playgroud)
我见过几个非常类似的问题,像这一个,或这一个。他们的解决方案是删除先前添加的文件,然后按照以下说明再次添加整个存储库:
git rm -rf --cached .
git add *
Run Code Online (Sandbox Code Playgroud)
但是,我尝试过,没有区别。有人知道为什么会这样吗?
我从.idea文件夹提交了文件,然后创建了.gitignore文件,但我想停止跟踪文件.idea夹中的那些文件。为此,我写道:
git rm -r --cached。
git添加
和承诺的更改。一切正常,直到Android Studio misc.xml通过更改Java语言级别更改了文件,我也不知道为什么,但是如果我尝试提交更改,我仍然可以提交该文件misc.xml,该文件将被忽略并且不应再进行跟踪。我能做什么?
我的.gitignore:
.DS_Store
/.idea
/.idea_modules
/out
/project
/target
/*.iml
*/resolution-cache/*
*/streams/*
*/target/*
Run Code Online (Sandbox Code Playgroud)
但是,文件夹.idea,.idea_modules并target出现在回购中,仍然存在.
你的想法?