2013-10-24 56 views
11

对不起,我是一个git的新手(虽然我很熟悉,像CVS和SVN旧的源代码控制系统)...混帐克隆随后状态显示为未跟踪文件

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

我尝试这样做:

git clone ssh://[email protected]/Users/GitRepo/Project.git 
<create file locally> 
git add <localfile> 
git commit -m "Narg" 
git push 

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

于是,我就打算一步一步的,并得到了更糊涂了。

git clone ssh://[email protected]/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://[email protected]/Users/GitRepo/Project.git 
    Push URL: ssh://[email protected]/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命令可以正常工作?

谢谢, 克里斯

+2

后'git的克隆SSH://用户名@服务器/用户/ GitRepo/Project.git', 之前运行'CD Project.git''git的status' – Litmus

+0

希望'git的结帐'将帮助你 – tijs

+0

git clone后,我没有一个名为Project.git的目录 - 只有一个名为Project的目录包含我的实际文件。所以我得到一个非裸仓库(对吧?)。我可以“cd .git”,但从那里运行“git status”会给我提供错误“致命的:此操作必须在工作树中运行” –

回答

1

Git是一个奇妙的工具,但它很容易迷路没有好的地图你在提交的弗里斯特在何处。

下面是如何获取的地图(我称之为“克”为“图形”,但你也可以把它称为“地图”,如果您喜欢):

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

这是一个一次性设置饭桶。现在,只要你输了,只是看看地图:

git gr 

您当前的位置是由单词“HEAD”表示,也列出的任何分支名称。

你会看到你当前没有任何分支,这听起来差很多比它确实是 - 它实际上没什么大不了的,它只是意味着你的提交将不会进入主分支的方式你想要他们。

所以才坐回master分支,并承诺有:

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

而且看看git gr现在,你会看到,HEAD是在同一提交为主,并掌握是在相同的提交作为起源/主,这意味着你全部设置。

+0

谢谢!唉,我的git newbieness仍然会造成问题... git图表显示最上面的版本是(HEAD,origin/master,origin/HEAD,GitRepo/master,master),我怎么知道我目前没有在任何分支上? –

+0

而且,如果我从本地存储库的根文件夹中说“git checkout master”,它会说“致命:无法创建'/Users/blah/blah/.git/index.lock':设备上没有剩余空间“或”致命:无法写入新索引文件“ –

+0

”设备上没有剩余空间“听起来像是硬盘已满?如果你输入df -h它说什么?对于另一个问题,git gr实际上并不会告诉你你在哪个分支上,只有你目前签出的提交以及现有分支提交的内容(分支实际上只不过是一个指针)。对于你当前的分支,你有正确的命令:git branch -a。 – Magnus

5

git config -l

如果当前的Git仓库的core.precomposeunicode=true

试试这个,

git config core.precomposeunicode false

,这是为什么。 from here

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