git clone followed by status shows untracked files

匿名 (未验证) 提交于 2019-12-03 02:51:02

问题:

Sorry, I'm a git newbie (though I'm very familiar with older source control systems like cvs and svn) ...

My ultimate goal is to add a file to a remote repository (one not on my machine) by cloning that remote repository locally, adding the file to the local repository, committing my change, and then pushing my local repository back to the remote.

I tried this:

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

But it just says "Everything up to date".

So I tried going step-by-step, and got even more confused.

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

And it tells me

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

Which seems really strange, why would the files be untracked if I just cloned the repository?

If it's important, the remote repository is brand-new, created via svn2git.

If I type

git remote show origin 

it tells me

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

and if I type

git branch -a 

it tells me

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

So am I just confused, and everything is actually working correctly? Or am I doing the git commands wrong? Or did I create the repository incorrectly, so no git commands will ever work properly?

Thanks, Chris

回答1:

git config -l

if current git repository's core.precomposeunicode=true

try this,

git config core.precomposeunicode false

and this is why. from here

core.precomposeunicode This option is only used by Mac OS implementation of Git. When core.precomposeunicode=true, Git reverts the unicode decomposition of filenames done by Mac OS. This is useful when sharing a repository between Mac OS and Linux or Windows. (Git for Windows 1.7.10 or higher is needed, or Git under cygwin 1.7). When false, file names are handled fully transparent by Git, which is backward compatible with older versions of Git.



回答2:

Git is a wonderful tool, but it's easy to get lost without a good map of where you are in the forrest of commits.

Here's how to get that map (I call it "gr" for "graph", but you could also call it "map" if you prefer):

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

That's a one-time setup for git. Now whenever you're lost, just take a look at the map:

git gr 

Your current location is denoted by the word "HEAD", and any branch names are also listed.

You'll see that you're currently not on any branch, which sounds a lot worse than it really is -- it's actually no big deal, it just means your commits won't go into the master branch the way you want them to.

So just get back on your master branch and commit there:

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

Also take a look at git gr now and you'll see that HEAD is at the same commit as master, and master is at the same commit as origin/master, which means you're all set.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!