2013-10-24 80 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向後兼容。