git clone后跟状态显示未跟踪的文件

Bet*_*ker 15 git

对不起,我是一个git新手(虽然我对cvs和svn等旧的源代码控制系统非常熟悉)...

我的最终目标是通过在本地克隆该远程存储库,将文件添加到本地存储库,提交更改,然后将本地存储库推回到远程存储库,将文件添加到远程存储库(一个不在我的计算机上).

我试过这个:

git clone ssh://user@server/Users/GitRepo/Project.git
<create file locally>
git add <localfile>
git commit -m "Narg"
git push
Run Code Online (Sandbox Code Playgroud)

但它只是说"一切都是最新的".

所以我尝试了一步一步,更加困惑.

git clone ssh://user@server/Users/GitRepo/Project.git
git status
Run Code Online (Sandbox Code Playgroud)

它告诉我

# Not currently on any branch
# Untracked files:
  followed by a long list of Untracked files.
Run Code Online (Sandbox Code Playgroud)

这看起来真的很奇怪,如果我只是克隆了存储库,为什么文件不会被追踪?

如果它很重要,那么远程存储库是全新的,通过svn2git创建.

如果我输入

git remote show origin
Run Code Online (Sandbox Code Playgroud)

它告诉我

* remote origin
  Fetch URL: ssh://user@server/Users/GitRepo/Project.git
  Push  URL: ssh://user@server/Users/GitRepo/Project.git
HEAD branch: master
Remote branch:
   master tracked
Local branch configured for 'git pull':
   master merges with remote master
Local ref configured for 'git push':
   master pushed to master (up to date)
Run Code Online (Sandbox Code Playgroud)

如果我打字

git branch -a
Run Code Online (Sandbox Code Playgroud)

它告诉我

* (no branch)
master
remotes/GitRepo/master
remotes/origin/HEAD -> origin/master
remotes/origin/master
Run Code Online (Sandbox Code Playgroud)

所以我只是困惑,一切都在正常工作?或者我在做git命令错了?或者我是否错误地创建了存储库,因此没有git命令可以正常工作?

谢谢,克里斯

小智 6

git config -l

如果是当前的git存储库 core.precomposeunicode=true

试试这个,

git config core.precomposeunicode false

这就是原因.从这里

core.precomposeunicode此选项仅供Mac操作系统实现Git使用.当core.precomposeunicode = true时,Git将恢复Mac OS完成的文件名的unicode分解.在Mac OS与Linux或Windows之间共享存储库时,这非常有用.(需要适用于Windows 1.7.10或更高版本的Git,或者在cygwin 1.7下使用Git).如果为false,则Git会完全透明文件名,后者与旧版本的Git向后兼容.


小智 5

对于其他可能通过谷歌到达这里的人。

我遇到了同样的问题 - 除了我能够推送并且没有收到任何“一切都是最新的”消息。
问题在于 Windows 和 Mac OS 与 Linux 不同,不区分大小写;但存储库是在区分大小写的操作系统上创建的,并且某些文件有两个版本,仅大写和小写字母不同。

这里有一个关于它的问题。


Mag*_*nus 4

Git 是一个很棒的工具,但是如果没有很好地了解您在提交中所处的位置,很容易迷失方向。

以下是获取该地图的方法(我将其称为“graph”的“gr”,但如果您愿意,也可以将其称为“map”):

git config --global alias.gr 'log --graph --full-history --all --color --decorate'
Run Code Online (Sandbox Code Playgroud)

这是 git 的一次性设置。现在,每当您迷路时,只需看看地图即可:

git gr
Run Code Online (Sandbox Code Playgroud)

您当前的位置由单词“HEAD”表示,并且还列出了所有分支名称。

你会发现你目前不在任何分支上,这听起来比实际情况要糟糕得多——实际上没什么大不了的,这只是意味着你的提交不会按照你希望的方式进入主分支。

因此,只需返回您的主分支并在那里提交即可:

git checkout master
git add yourfile.txt
git commit -m'Narg'
git push
Run Code Online (Sandbox Code Playgroud)

另外看看git gr现在,您会看到 HEAD 与 master 处于相同的提交,并且 master 与 origin/master 处于相同的提交,这意味着您已经准备好了。