20

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

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

我试过这个:

git clone ssh://user@server/Users/GitRepo/Project.git
<create file locally>
git add <localfile>
git commit -m "Narg"
git push

但它只是说“一切都是最新的”。

所以我试着一步一步走,结果更加困惑。

git clone ssh://user@server/Users/GitRepo/Project.git
git status

它告诉我

# Not currently on any branch
# Untracked files:
  followed by a long list of Untracked files.

这看起来很奇怪,如果我只是克隆存储库,为什么文件会未被跟踪?

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

如果我输入

git remote show origin

它告诉我

* 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)

如果我输入

git branch -a

它告诉我

* (no branch)
master
remotes/GitRepo/master
remotes/origin/HEAD -> origin/master
remotes/origin/master

所以我只是感到困惑,一切实际上都正常工作吗?还是我做错了 git 命令?还是我错误地创建了存储库,所以没有 git 命令可以正常工作?

谢谢,克里斯

4

4 回答 4

10

git config -l

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

尝试这个,

git config core.precomposeunicode false

这就是为什么。从这里

core.precomposeunicode 此选项仅由 Git 的 Mac OS 实现使用。当 core.precomposeunicode=true 时,Git 恢复 Mac OS 对文件名的 unicode 分解。这在 Mac OS 和 Linux 或 Windows 之间共享存储库时很有用。(需要 Windows 1.7.10 或更高版本的 Git,或 cygwin 1.7 下的 Git)。当为 false 时,文件名由 Git 完全透明地处理,这与旧版本的 Git 向后兼容。

于 2014-11-01T10:52:29.743 回答
3

Git 是一个很棒的工具,但是如果没有一个很好的地图来说明你在提交中的位置,很容易迷失方向。

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

git config --global alias.gr 'log --graph --full-history --all --color --decorate'

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

git gr

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

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

所以回到你的主分支并在那里提交:

git checkout master
git add yourfile.txt
git commit -m'Narg'
git push

现在再看一下git gr,您会发现 HEAD 与 master 处于相同的提交中,而 master 与 origin/master 处于相同的提交中,这意味着您已经准备就绪。

于 2013-10-24T17:00:42.163 回答
3

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

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

这里有个问题。

于 2018-08-16T03:27:53.133 回答
1

可能发生这种情况的另一个原因:在 github 网络界面中创建的名称中带有冒号的文件:lost:time.txt

于 2018-08-31T11:16:10.567 回答