2013-10-24 18 views
11

Xin lỗi, tôi là một newbie git (mặc dù tôi rất quen thuộc với hệ thống kiểm soát nguồn cũ như cvs và svn) ...clone git tiếp theo trạng thái hiển thị file untracked

mục tiêu cuối cùng của tôi là để thêm một tập tin vào một kho lưu trữ từ xa (không phải trên máy của tôi) bằng cách sao chép kho lưu trữ từ xa cục bộ, thêm tệp vào kho lưu trữ cục bộ, cam kết thay đổi của tôi và sau đó đẩy kho lưu trữ cục bộ của tôi trở lại điều khiển từ xa.

Tôi cố gắng này:

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

Nhưng nó chỉ nói "Mọi thứ đến nay".

Vì vậy, tôi đã cố gắng đi từng bước và thậm chí còn bối rối hơn.

git clone ssh://[email protected]/Users/GitRepo/Project.git 
git status 

Và nó nói với tôi

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

Mà dường như thực sự kỳ lạ, tại sao các tập tin sẽ được untracked nếu tôi chỉ nhân bản kho?

Nếu điều quan trọng, kho lưu trữ từ xa là hoàn toàn mới, được tạo thông qua svn2git.

Nếu tôi gõ

git remote show origin 

nó nói với tôi

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

và nếu tôi gõ

git branch -a 

nó nói với tôi

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

Vì vậy, tôi chỉ bối rối, và tất cả mọi thứ thực sự hoạt động chính xác? Hoặc tôi đang làm các lệnh git sai? Hoặc tôi đã tạo kho lưu trữ không chính xác, vì vậy không có lệnh git nào sẽ hoạt động đúng cách?

Cảm ơn, Chris

+2

Sau 'ssh clone git: // user @ máy chủ/Users/GitRepo/Project.git', chạy lệnh 'cd Project.git' trước ' git status' – Litmus

+0

Hope 'git checkout ' sẽ giúp bạn – tijs

+0

Sau khi sao chép git, tôi không có thư mục có tên Project.git - chỉ một thư mục có tên Project chứa các tệp thực sự của tôi. Vì vậy, tôi nhận được một kho không trần (phải không?). Tôi có thể "cd .git" nhưng chạy "git status" từ đó mang lại cho tôi lỗi "fatal: Thao tác này phải được chạy trong một cây công việc" –

Trả lời

1

Git là một công cụ tuyệt vời, nhưng nó dễ bị lạc mà không có một bản đồ tốt của bạn đang ở đâu trong Forrest của cam kết.

Dưới đây là làm thế nào để có được bản đồ đó (tôi gọi nó là "gr" cho "đồ thị", nhưng bạn cũng có thể gọi nó là "bản đồ" nếu bạn thích):

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

Đó là một thiết lập một lần cho git. Bây giờ bất cứ khi nào bạn bị mất, chỉ cần xem bản đồ:

git gr 

Vị trí hiện tại của bạn được biểu thị bằng từ "HEAD" và bất kỳ tên chi nhánh nào cũng được liệt kê.

Bạn sẽ thấy rằng bạn hiện không ở trên bất kỳ chi nhánh nào, điều đó nghe có vẻ tệ hơn nhiều so với thực tế - nó thực sự không quan trọng lắm, điều đó có nghĩa là các cam kết của bạn sẽ không đi vào nhánh chính theo cách bạn muốn họ.

Vì vậy, chỉ nhận lại chi nhánh tổng thể của bạn và cam kết có:

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

Ngoài ra hãy xem tại git gr bây giờ và bạn sẽ thấy TRỤ đó là tại cùng một cam kết như là bậc thầy, và thầy là ở cùng cam kết như nguồn gốc/chủ, có nghĩa là bạn đã hoàn tất.

+0

Xin cảm ơn! Than ôi, git newbieness của tôi vẫn còn gây ra vấn đề ... biểu đồ git cho thấy bản sửa đổi trên cùng là (HEAD, origin/master, origin/HEAD, GitRepo/master, master), làm thế nào tôi có thể nói rằng tôi hiện không trên bất kỳ chi nhánh nào? –

+0

Và, nếu tôi nói "git checkout master" từ thư mục gốc của kho lưu trữ cục bộ của tôi, nó hoặc là "gây tử vong: Không thể tạo '/Users/blah/blah/.git/index.lock': Không còn dung lượng trên thiết bị "hoặc" gây tử vong: không thể ghi tệp chỉ mục mới " –

+0

" Không có dung lượng trống trên thiết bị "có vẻ như ổ đĩa cứng của bạn đã đầy? Nếu bạn gõ df -h nó nói gì? Đối với câu hỏi khác, git gr sẽ không thực sự cho bạn biết nhánh nào bạn đang ở, chỉ những cam kết bạn đã kiểm tra hiện tại và những gì cam kết các nhánh hiện có trỏ tới (nhánh không thực sự là gì hơn một con trỏ). cho nhánh hiện tại của bạn, bạn có lệnh đúng: git branch -a. – Magnus

5

git config -l

nếu kho git của core.precomposeunicode=true

hiện thử này,

git config core.precomposeunicode false

và đây là lý do tại sao. from here

core.precomposeunicode Tùy chọn này chỉ được sử dụng bởi triển khai Mac OS của Git. Khi core.precomposeunicode = true, Git sẽ chuyển đổi phân tách unicode của tên tập tin được thực hiện bởi Mac OS. Điều này rất hữu ích khi chia sẻ một kho lưu trữ giữa Mac OS và Linux hoặc Windows. (Git cho Windows 1.7.10 hoặc cao hơn là cần thiết, hoặc Git dưới Cygwin 1.7). Khi sai, tên tệp được xử lý hoàn toàn trong suốt bởi Git, nó tương thích ngược với các phiên bản Git cũ hơn.

Các vấn đề liên quan