为什么 .gitignore 和 .metadata 没有被提交?

时间:2021-07-30 18:09:28

标签: git flutter bitbucket gitignore

我正在开发一个 Flutter 应用程序,使用 bitbucket 作为版本控制。下面是 .gitignore 文件:

# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/

# IntelliJ related
*.iml
*.ipr
*.iws
.idea/

# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/

# Flutter/Dart/Pub related
**/doc/api/
**/ios/Flutter/.last_build_id
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
/build/

# Web related
lib/generated_plugin_registrant.dart

# Symbolication related
app.*.symbols

# Obfuscation related
app.*.map.json

# Android Studio will place build artifacts here
/android/app/debug
/android/app/profile
/android/app/release

我先执行 git add * 再执行 git commit -m "message" 以进行提交。多么不幸,.gitignore 文件从未被提交。

当我尝试执行 git pullgit pull --rebase 时,出现以下错误

Updating 200df3e..02afe50
error: The following untracked working tree files would be overwritten by merge:
        .gitignore
        .metadata
Please move or remove them before you merge.
Aborting

浏览互联网时,问题似乎是 .gitignore 文件和 metadata 未提交。所以 pull 不能合并它们。

如何确保提交这些文件?

更新

我按照用户 ti7 的回答,在命令 git stash pop 之后,我收到以下消息。这是什么意思?

On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   ios/Flutter/Debug.xcconfig
        modified:   ios/Flutter/Release.xcconfig

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        ios/Podfile

no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (799d2e53c1509af435d5d4d589a0ded18d3aad64)

1 个答案:

答案 0 :(得分:2)

这些文件可能不存在于您的工作树中,但存在于远程

  • 显式添加文件 git add .gitignore .metadata
  • 藏起来git stash
  • 然后合并 git pull
  • 取消隐藏 git stash pop

git add * 的问题在于 * 由您的 shell 扩展,但不包括 .dotfiles