.gitignore và Cảnh Các tập tin cây làm việc không được theo dõi sau đây sẽ bị ghi đè bởi thanh toán


828

Vì vậy, tôi đã thêm một thư mục vào tập tin .gitignore của tôi.

Khi tôi làm điều git statusđó, nó nói với tôi

# On branch latest
nothing to commit (working directory clean)

Tuy nhiên, khi tôi cố gắng thay đổi chi nhánh, tôi nhận được như sau:

My-MacBook-Pro:webapp marcamillion$ git checkout develop
error: The following untracked working tree files would be overwritten by checkout:
    public/system/images/9/thumb/red-stripe.jpg
    public/system/images/9/original/red-stripe.jpg
    public/system/images/8/thumb/red-stripe-red.jpg
    public/system/images/8/original/red-stripe-red.jpg
    public/system/images/8/original/00-louis_c.k.-chewed_up-cover-2008.jpg
    public/system/images/7/thumb/red-stripe-dark.jpg
    public/system/images/7/original/red-stripe-dark.jpg
    public/system/images/7/original/DSC07833.JPG
    public/system/images/6/thumb/red-stripe-bw.jpg
    public/system/images/6/original/website-logo.png
    public/system/images/6/original/red-stripe-bw.jpg
    public/system/images/5/thumb/Guy_Waving_Jamaican_Flag.jpg
    public/system/images/5/original/logocompv-colored-squares-100px.png
    public/system/images/5/original/Guy_Waving_Jamaican_Flag.jpg
    public/system/images/4/thumb/DSC_0001.JPG
    public/system/images/4/original/logo.png
    public/system/images/4/original/DSC_0001.JPG
    public/system/images/4/original/2-up.jpg
    public/system/images/3/thumb/logo2.gif
    public/system/images/3/original/logo2.gif
    public/system/images/3/original/Guy_Waving_Jamaican_Flag.jpg
    public/system/images/3/original/11002000962.jpg
    public/system/images/2/thumb/Profile Pic.jpg
    public/system/images/2/original/Profile Pic.jpg
    public/system/images/2/original/02 Login Screen.jpg
    public/system/images/1/original/Argentina-2010-World-Cup.jpg
Please move or remove them before you can switch branches.
Aborting

Đây là tệp .gitignore của tôi trông như thế nào:

.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/**/*
public/system/images/*
public/system/avatars/*

Làm thế nào để tôi làm việc này để tôi có thể chuyển nhánh mà không xóa các tệp đó?

Nếu tôi thực hiện một thay đổi, nó sẽ ảnh hưởng đến các tập tin đó? Nói cách khác, nếu tôi trở lại chi nhánh này sau đó, mọi thứ sẽ hoàn hảo theo như cam kết mới nhất của tôi chứ?

Tôi không muốn mất những tập tin đó, tôi chỉ không muốn chúng bị theo dõi.


10
nếu bạn thực sự không quan tâm đến các tệp này: git checkout -f <Branch> trong trường hợp của tôi, các tệp được tạo trong quá trình xây dựng, vì vậy tôi không quan tâm
Hobbamok

Đôi khi xảy ra nếu bạn thực hiện 'kiểm tra git' (không có tên chi nhánh). Để sửa chữa, làm 'git checkout BRANCHNAME'
crafter

Riêng biệt, nhưng câu hỏi liên quan nghiêm trọng: tại sao lỗi này xảy ra ở tất cả? Tại sao git không thể chuyển đổi giữa các chi nhánh?
ahnbizcad

@ahnbizcad Bởi vì nếu bạn đang làm việc với một tệp mới và ai đó ở một chi nhánh khác tình cờ thực hiện một tệp có cùng tên, bạn sẽ tức giận nếu git bỏ phiên bản của bạn khi bạn chuyển chi nhánh. Đó là lý do tại sao cờ -f ở đó.
Matthew Sharp

Câu trả lời:


264

Có vẻ như bạn muốn các tập tin bị bỏ qua nhưng chúng đã được cam kết. .gitignore không có tác dụng đối với các tệp đã có trong repo nên chúng cần được gỡ bỏ git rm --cached. Điều --cachednày sẽ ngăn nó không có bất kỳ ảnh hưởng nào đến bản sao làm việc của bạn và nó sẽ chỉ đánh dấu là đã xóa trong lần tiếp theo bạn cam kết. Sau khi các tệp được xóa khỏi repo thì .gitignore sẽ ngăn không cho chúng được thêm lại.

Nhưng bạn có một vấn đề khác với .gitignore của bạn, bạn đang sử dụng quá nhiều ký tự đại diện và nó khiến nó khớp với ít hơn bạn mong đợi. Thay vào đó, hãy thay đổi .gitignore và thử điều này.

.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/
public/system/images/
public/system/avatars/

2
Cảm ơn .... Tôi đã xóa tất cả các tệp khỏi nhánh hiện tại và sao lưu chúng. Sau đó chuyển chi nhánh và đặt chúng trở lại. Điều đó đã làm việc. Ngoài ra, cảm ơn về mẹo trên .gitignore mặc dù
marcamillion

@marcamillion: Ý của bạn là "đã làm việc"? Nếu các tệp được theo dõi trên nhánh bạn chuyển sang, bạn đã ghi đè lên chúng bằng các phiên bản của bạn, có thể khác ...
Cascabel

1
Tôi đã gặp sự cố với thư mục / build không cần theo dõi. Vì vậy, tôi đã xóa thư mục cục bộ, cam kết tệp .gitignore của mình, sau đó kiểm tra chi nhánh khác. Điều đó cuối cùng đã làm việc cho tôi.
Mike S.

16
Tôi nghĩ rằng phần đầu tiên là để đảo ngược thông báo lỗi cụ thể này. Lỗi này cho biết người dùng hiện đang ở trong một nhánh không có các tệp JPG đó được theo dõi và người dùng đang cố gắng chuyển sang một tệp có. Vì vậy, việc làm git rm --cachedsẽ không tạo ra sự khác biệt, những tệp đó không tồn tại trong nhánh hiện tại. Đối với lỗi này, tôi nghĩ rằng người dùng thay vào đó cần phải làm theo câu trả lời của @Greg Hewgill - "chuyển chúng ra khỏi bản sao làm việc, chuyển chi nhánh và chuyển chúng trở lại".
studgeek

5
Làm thế nào một người sẽ đi về giải quyết your files would be overwrittenvới fatal: pathspec 'test/node_modules' did not match any fileskhi tôi làm git rm -r --cache test/node_modules? Tôi không thể lấy vì tin nhắn bị ghi đè và không thể xóa vì git không thể tìm thấy chúng (chúng ở đó)
HMR

1047

CẢNH BÁO: nó sẽ xóa các tập tin không bị theo dõi, vì vậy nó không phải là một câu trả lời tuyệt vời cho câu hỏi được đặt ra.

Tôi nhấn tin nhắn này là tốt. Trong trường hợp của tôi, tôi không muốn giữ các tệp này, vì vậy điều này hiệu quả với tôi:

git 2.11 và mới hơn

git clean  -d  -f .

git cũ

git clean  -d  -f ""

Nếu bạn cũng muốn xóa các tệp bị bỏ qua bởi git, thì hãy thực hiện lệnh sau.

ĐƯỢC CẢNH BÁO !!! ĐIỀU NÀY RẤT NHIỀU DESTROYS DỰ ÁN CỦA BẠN, CHỈ SỬ DỤNG NẾU BẠN BIẾT 100% NHỮNG GÌ BẠN ĐANG LÀM

git 2.11 và mới hơn

git clean  -d  -fx .

git cũ

git clean  -d  -fx ""

http://www.kernel.org/pub/software/scm/git/docs/git-clean.html

  • -x có nghĩa là các tệp bị bỏ qua cũng bị xóa cũng như các tệp không xác định với git.

  • -d có nghĩa là loại bỏ các thư mục không bị theo dõi ngoài các tệp không bị theo dõi.

  • -f là bắt buộc để chạy nó.


7
Cảm ơn, sau khi sạch sẽ, tôi đã có thể nổi loạn;
Alexander Beletsky

139
HÃY CẨN THẬN KHI CHẠY Git sạch!
Noel

249
Để tránh facepalm, trước tiên hãy chạy nó với tùy chọn chạy khô để xem nó sẽ làm gì: git clean -dfxnhoặcgit clean -dfx --dry-run
Dennis

74
Thánh lồn Điều này xóa tất cả các tệp cấu hình trên xcode của tôi và bây giờ dự án đang chuyển thành dự án mac. HÃY CẨN THẬN KHI CHẠY QUYỀN NÀY. Tôi nghĩ rằng nó sẽ chỉ loại bỏ nó khỏi git.
tyegah123

25
Các -xtùy chọn làm tổn thương tôi
wener

589

Cảnh báo: Điều này sẽ xóa các tệp cục bộ không được lập chỉ mục

Chỉ cần buộc nó: git checkout -f another-branch


78
Cảnh báo: Điều này sẽ xóa các tệp cục bộ không được lập chỉ mục.
givanse

git sạch không làm việc cho tôi, nhưng lực lượng chính xác là những gì tôi cần. Nó bị kẹt trên nhánh đó và tôi chỉ cần nó thay đổi nhánh.
Simon The Cat

7
Tôi không muốn tập tin không được lập chỉ mục! +1 cho bạn
ryansstack 19/03/2015

tôi đã gặp lỗi này ,,, :(error: pathspec 'mybranch' did not match any file(s) known to git.
Budi Mulyo

2
Đây là câu trả lời thực sự.
metamonkey

147

Nếu bạn đang dùng OS X, có thể là do tên tệp đã có trường hợp thay đổi ký tự nhất định. Hãy thử thiết lập tùy chọn cấu hình sau:

git config core.ignorecase true

13
Nó cũng hoạt động trên Windows, có vẻ như tình huống này đã xảy ra ngay từ đầu do thay đổi trường hợp mà GIT không thể xác định
SagiLow

4
Đây chính xác là vấn đề tôi gặp phải, một đường dẫn tệp khác với một trường hợp chữ cái - Windows xử lý như vậy nhưng GIT không phải là vấn đề.
Daniel Sokolowski

1
Vấn đề của tôi đã xảy ra khi kiểm tra một chi nhánh khác trong Windows 10 và chỉ có điều này hoạt động với tôi, Cảm ơn
Weijie Sun

tuyệt vời! điều này khắc phục sự cố của tôi khi tôi di chuyển giữa các thẻ
William Añez

1
Nó cũng hoạt động nếu bạn cố gắng git rebaselà tốt. Cảm ơn.
dùng3890355

42

Git đang nói với bạn rằng nó muốn tạo các tệp (được đặt tên, public/system/images/9/...v.v.), nhưng bạn đã có các tệp hiện có trong thư mục đó không được Git theo dõi. Có lẽ ai đó đã thêm các tệp đó vào kho Git và đây là lần đầu tiên bạn chuyển sang chi nhánh đó?

Có lẽ có một lý do tại sao những tệp đó trong developchi nhánh của bạn nhưng không phải trong chi nhánh hiện tại của bạn. Bạn có thể phải hỏi các cộng tác viên của bạn tại sao lại như vậy.

Làm thế nào để tôi làm việc này để tôi có thể chuyển nhánh mà không xóa các tệp đó?

Bạn không thể làm điều đó mà không làm cho các tập tin biến mất bằng cách nào đó. Bạn có thể đổi tên publicthành my_publichoặc một cái gì đó cho bây giờ.

Nếu tôi trở lại chi nhánh này sau đó, mọi thứ sẽ hoàn hảo theo như cam kết mới nhất của tôi chứ?

Nếu bạn cam kết thay đổi của mình, Git sẽ không mất chúng. Nếu bạn không cam kết thay đổi của mình, thì Git sẽ rất cố gắng để không ghi đè lên công việc mà bạn đã thực hiện. Đó là những gì Git đang cảnh báo bạn trong trường hợp đầu tiên ở đây (khi bạn cố gắng chuyển nhánh).


Cảm ơn đã giải thích. Tôi đã sao lưu các tập tin, chuyển nhánh và hợp nhất chúng sau đó thay thế các tập tin trong thư mục công cộng. Điều đó đã làm việc.
marcamillion

1
Như tôi đã nhận xét về câu trả lời của @ Arrowmaster. Đây là câu trả lời đúng cho thông báo lỗi. Nó có thể không phải là câu trả lời đúng cho người hỏi đặc biệt này vì anh ta có vấn đề thực sự là vấn đề của anh ta.
studgeek

37

Điều này làm việc cho tôi.

 1. git fetch --all
 2. git reset --hard origin/{branch_name}

5
Vui lòng thêm giải thích về giải pháp của bạn. xem stackoverflow.com/help/how-to-answer
user7294900

Đây là của tôi. Bản sao cục bộ của chi nhánh từ xa thực sự có tất cả các tệp không bị theo dõi, bằng cách nào đó. Bạn đang kiểm tra xem để khôi phục các tệp không bị theo dõi mà ban đầu nó phàn nàn. Bây giờ bạn có thể chuyển sang các chi nhánh khác
ahnbizcad

2
Vì một số lý do, đây là giải pháp làm việc duy nhất cho tôi. Cảm ơn bạn đời.
Kiwad

Giải quyết vấn đề của tôi. Cảm ơn
Devashis Kant

Rất cám ơn, thật đơn giản! git reset - nguồn gốc / phát triển. Làm thế nào tôi ghét những chỉnh sửa xung đột hợp nhất. Lệnh này rất hay và đơn giản.
Nine9five

22

Có một lệnh cho tác vụ tế nhị này (xóa vĩnh viễn các tệp không bị theo dõi)

git clean -i

Rồi git pullsẽ làm.


13

Đối với những người cần một cái gì đó sâu rộng hơn câu trả lời của Scott Schafer ,

git clean -f

sẽ có khả năng làm việc. Tôi rất khuyên bạn nên chạy

git clean --dry-run

Đầu tiên. Lệnh đó sẽ xuất ra một danh sách các tệp mà Git sẽ xóa nếu bạn chạy git clean -fvà có thể giúp bạn tránh khỏi việc vô tình xóa những thứ bạn không muốn.

Xem câu trả lời Stack Oveflow này hoặc các tài liệu để biết thêm thông tin git clean.


12

Thật không may git rm --cachedhoặc git clean -d -fx ""không làm điều đó cho tôi.

Giải pháp của tôi cuối cùng đã đẩy chi nhánh của tôi đến điều khiển từ xa, nhân bản một repo mới, sau đó thực hiện hợp nhất của tôi trong repo mới. Những người khác truy cập repo cũng phải làm như vậy.

Đạo đức của câu chuyện: sử dụng một .gitignoretập tin từ khi bắt đầu.


10

Nếu bạn muốn nhanh chóng giải quyết câu hỏi này, Bạn có thể sử dụng lệnh này:

git checkout -f dev

Điều này giúp tôi, khi vấn đề của tôi không liên quan đến .gitignoreafaik.
Nakilon

lỗi: pathspec 'dev' không khớp với bất kỳ (các) tệp nào được biết đến với git.
Đen

@Black 'dev' là tên chi nhánh, thay vào đó hãy đặt chi nhánh của bạn
Vinit Solanki

8

Tôi đã có cùng một vấn đề khi kiểm tra một chi nhánh dựa trên một cam kết trước đó. Git từ chối thanh toán vì các tập tin không bị theo dõi.

Tôi đã tìm thấy một giải pháp và tôi hy vọng nó cũng sẽ giúp bạn.

Thêm các thư mục bị ảnh hưởng vào .gitignorevà phát hành $ git rm -r --cachedtrên chúng rõ ràng là không đủ.

Giả sử bạn muốn tạo một chi nhánh dựa trên cam kết K trước đó để kiểm tra một số nội dung và quay lại phiên bản hiện tại. Tôi sẽ làm điều đó trong các bước sau:

  1. Thiết lập các tệp không bị theo dõi: chỉnh sửa .gitignorevà áp dụng $ git rm -r --cachedtrên các tệp và thư mục mà bạn muốn git bỏ qua. Thêm .gitignorechính tập tin vào.gitignore và đừng quên phát hành $ git rm -r --cached .gitignore. Điều này sẽ đảm bảo hành vi bỏ qua của git giống nhau trong các lần xác nhận trước đó.

  2. Cam kết những thay đổi bạn vừa thực hiện:

    $ git add -A
    $ git commit

  3. Lưu nhật ký hiện tại, nếu không bạn có thể gặp sự cố khi quay lại phiên bản hiện tại

    $ git log > ../git.log

  4. Xác lập lại cứng cho cam kết K

    $ git reset --hard version_k

  5. Tạo một nhánh dựa trên cam kết K

    $ git branch commit_k_branch

  6. Thanh toán vào chi nhánh đó

    $ git checkout commit_k_branch

  7. Làm công việc của bạn và cam kết nó

  8. Kiểm tra lại thành chủ một lần nữa

    $ git checkout master

  9. Đặt lại về Phiên bản hiện tại một lần nữa

    $ git reset current_version hoặc là $ git reset ORIG_HEAD

  10. Bây giờ bạn có thể thiết lập lại cứng cho ĐẦU

    git reset --hard HEAD

GHI CHÚ! Đừng bỏ qua bước tiếp theo (như ví dụ $ git reset --hard ORIG_HEAD ) nếu không các tập tin không được theo dõi git phàn nàn ở trên sẽ bị mất.

Tôi cũng đảm bảo rằng các tập tin git phàn nàn về việc không bị xóa. Tôi đã sao chép chúng vào một tệp văn bản và ban hành lệnh$ for i in $(cat ../test.txt); do ls -ahl $i; done

Nếu bạn thanh toán cho chi nhánh được đề cập ở trên một lần nữa, đừng quên phát hành $ git statusđể đảm bảo không có thay đổi không mong muốn nào xuất hiện.


8

Điều này đã xảy ra với tôi trên hệ thống Windows 8 , sử dụng Git từ dấu nhắc lệnh. Phần còn lại trong nhóm của tôi sử dụng TFS và tôi sử dụng git-tf của Microsoft để đẩy / kéo giữa TFS và kho Git cục bộ của tôi.

Vấn đề phát sinh do một số tệp đã được đổi tên chỉ để thay đổi trường hợp của họ . Điều dường như đã xảy ra là thế này:

  • Các tập tin đã được kiểm tra với vỏ hỗn hợp trong tên của họ.
  • Trong một cam kết sau đó, tên tệp đã được thay đổi thành tất cả chữ thường.
  • git-tf ban đầu có các tập tin trong trường hợp hỗn hợp.
  • Khi các tệp được đổi tên thành chữ thường, git-tf không nhận được các tệp vì với Windows 8, các tên tệp đó là tương đương.
  • Vì Git phân biệt chữ hoa chữ thường, nên tôi phàn nàn rằng tôi có các tệp trường hợp hỗn hợp không có trong kiểm soát nguồn. Nhưng khi sử dụng git status, tôi không thể thấy bất kỳ thay đổi nào, vì trong lệnh Windows nhắc các tên tệp đó là tương đương.

Giải pháp đơn giản nhất cho tôi là:

  • git checkoutmột phiên bản trước của dự án, trước khi các tệp đó được thêm vào .
  • Sau đó, git checkoutphiên bản mới nhất của dự án, với vỏ tệp chính xác.

+1 Tôi đã có thể sử dụng git log trên nhánh và nhánh hiện tại để rebase để xem khi nào cam kết xảy ra đã thay đổi trường hợp; sau đó tôi đã hack xung quanh nó ...
hiền nhân

4

Hai hàm này (git rm --cached, git checkout -f other-Branch) KHÔNG hoạt động với tôi.

Thay vào đó, tôi gỡ bỏ tập tin (trong nhật thực) như những gì Git bảo bạn làm; Vui lòng di chuyển hoặc loại bỏ chúng trước khi bạn có thể chuyển đổi chi nhánh.

và sau đó tôi thêm / cam kết nó.

và sau đó tôi kéo và nó hoạt động!


4

Trong trường hợp của tôi, vấn đề là với các mô hình con. masterđã được sáp nhập với một chi nhánh khác đã thêm một mô hình con mới vào dự án. Chi nhánh tôi đang cố kiểm tra đã không có nó, đó là lý do tại sao git phàn nàn về các tệp không được theo dõi và không có giải pháp được đề xuất nào khác làm việc cho tôi. Tôi buộc thanh toán đến chi nhánh mới của mình và kéo thầy.

  • git checkout -f my_branch
  • git pull origin master
  • git submodule update --init

3

Trong trường hợp của tôi git rm --cachedđã không làm việc. Nhưng tôi đã nhận nó với mộtgit rebase


3

Tôi cũng đã phải đối mặt với một vấn đề tương tự và tôi đã thử tất cả các giải pháp được đăng ở trên nhưng nó không hoạt động

Vấn đề này đã gây ra khi tôi đổi tên của tôi onMusicUpdateListener.javađể OnMusicUpdateListener.javadevelop chi nhánh.

Bây giờ masterđã có onMusicUpdateListener.javadevelopcó cùng một tập tin nhưOnMusicUpdateListener.java

Bây giờ bất cứ khi nào tôi chuyển sang làm chủ nó đều báo lỗi

The following untracked working tree files would be overwritten by checkout

và sau đó nó aborted .

Để giải quyết việc này, tôi mạnh mẽ checked out masterchi nhánh và sau đó đổi tên thành của tôi onMusicUpdateListener.javađến OnMusicUpdateListener.java, committednó và sau đó mergednó vớidevelop chi nhánh.

Sau đó, tôi cập nhật developchi nhánh của mình bằng mergingnó vào mastervà bây giờ mọi thứ trở lại bình thường và vấn đề được giải quyết.


Tôi đã gặp vấn đề tương tự trước đây. Theo hiểu biết của tôi, vấn đề nhạy cảm trường hợp dường như chỉ là một vấn đề trên windows. Tôi đoán bạn đang phát triển trên windows?
Ji_in_coding

2

Đây có thể là một vấn đề cho phép,

thay đổi quyền sở hữu

sudo chown -v -R usr-name:group-name folder-name

Tôi cũng gặp vấn đề tương tự như Won. Tôi đã thêm một .gitignore vào một thư mục đã được theo dõi. Tôi đã xóa các tập tin và sau đó có thể thực hiện kiểm tra git.
cbloss793

2

2 tệp có cùng tên nhưng trường hợp khác nhau có thể là vấn đề.

Bạn có thể xóa một trên các tệp này hoặc đổi tên nó. Ví dụ:

Pdf.html.twig (The GOOD one)

pdf.html.twig (The one I deleted)

2

Di chuyển tệp, thay vì xóa

Một cách để tránh xóa các tập tin là di chuyển chúng thay vào đó. Ví dụ:

cd "`git rev-parse --show-toplevel`"
git checkout 2>&1 | while read f; do [ ! -e "$f" ] || mv "$f" "$f".bak; done

1

Nếu bạn đã đổi tên một tệp cục bộ và sau đó thực hiện pull, nó sẽ hiển thị thông báo lỗi đó.


Làm thế nào để vượt qua lỗi này trong trường hợp đó? Thông báo này cũng xuất hiện khi chuyển nhánh sau khi thay đổi trường hợp trong tên tệp (MyFile => myfile).
Bernhard Döbler

1

Thật dễ để giải quyết, git đang nói rằng bạn có cùng một tệp trong cả hai nhánh, do đó bạn phải xóa các tệp cụ thể khỏi nhánh chính và sau đó bạn sẽ có thể hợp nhất:

git merge "chi nhánh của bạn"

Tôi hy vọng nó hoạt động cho bạn, tôi chỉ giải quyết lỗi của tôi. lỗi của tôi là:

lỗi: Các tệp cây làm việc không được theo dõi sau đây sẽ bị ghi đè bằng cách hợp nhất: .vs / slnx.sqlite Vui lòng di chuyển hoặc xóa chúng trước khi bạn hợp nhất. Hủy bỏ

Bây giờ nó đang làm việc! Trong trường hợp của tôi .vs / slnx.sqlite được tạo bởi visual studio, tôi cần phải đóng nó trước khi xóa nó.


0

Trong trường hợp của tôi, tôi đã gặp lỗi này vì tôi đang sử dụng một CMS nguồn mở phổ biến và thư mục gây ra sự cố là thư mục tải lên mà CMS ghi vào.

Vì vậy, những gì nó đã nói là có những tập tin mà bạn không có, nhưng bạn không thể nhận được từ phiên bản.

Tôi đang lấy tất cả các tệp từ trang web trực tiếp đến địa phương của mình, sau đó tôi sẽ kiểm tra điều này vào repo với hy vọng rằng điều này sẽ khắc phục vấn đề.


0

Xóa tệp .gitignore khỏi appname / gen / để giải quyết vấn đề này.


0

Tôi vừa đi đến hệ thống tập tin và xóa tập tin trực tiếp, sau đó tiếp tục với kiểm tra git và nó đã hoạt động.

Tôi đã có vấn đề xảy ra nhiều lần và nó có thể liên quan đến các nhà phát triển thực hiện xóa, đẩy, thêm lại, đẩy hoặc một số thứ như vậy.


0

Hầu hết các câu trả lời xem xét xóa hoặc xóa các tập tin, đó là cách dễ dàng. Nhưng đôi khi bạn không muốn thoát khỏi các tệp cục bộ. Nhưng hợp nhất với một chiến lược, vì vậy git cũng có giải pháp cho việc này;

git merge --strategy=ours master 

0

Chỉ cần xóa các tập tin hoặc đổi tên chúng.

ví dụ

$ git pull
Enter passphrase for key '/c/Users/PC983/.ssh/id_rsa':
error: Your local changes to the following files would be overwritten by merge:
        ajax/productPrice.php
Please commit your changes or stash them before you merge.
error: The following untracked working tree files would be overwritten by merge:
        ajax/product.php
Please move or remove them before you merge.
Aborting
Updating a04cbe7a..6aa8ead5

Tôi đã phải đổi tên / xóa ajax / product.phpajax / produtPrice.php .

Đừng lo lắng, git pull sẽ mang chúng trở lại. Tôi đề nghị bạn đổi tên chúng thay vì xóa, vì bạn có thể mất một số thay đổi.

Nếu điều này không có ích, thì bạn phải xóa toàn bộ Chi nhánh và tạo lại nó và sau đó làm git pull origin remotebranch


0

Để lưu các tập tin sửa đổi và sử dụng nội dung sửa đổi sau này. Tôi đã tìm thấy lỗi này trong khi tôi thử kiểm tra một chi nhánh và khi cố gắng rebase. Hãy dùng thử Git

git stash


0

Kiểm tra xem bất kỳ tên thư mục nào có '/' hoặc bất kỳ ký hiệu đặc biệt nào sau đó đổi tên các thư mục đó. Sau đó, bạn chỉ cần sao chép kho lưu trữ đến một vị trí khác.


0

Một giải pháp đơn giản có thể là: Chỉ cần đảm bảo rằng bạn đang ở đúng thư mục làm việc trong GitBash . Thông báo đó xảy ra gần như mọi lúc nếu Người dùng cố gắng hợp nhất một thư mục quá cao trong hệ thống phân cấp thư mục của mình.

Thí dụ:

/workspace/git/myBashSourceFolder/myProjectSourcefolder

Kịch bản: Người dùng nhân bản repo trong git-folderanh ta đã tạo Dự án Java mới trong Eclipse, đã nhập repo nhân bản. Eclipse đặt myProjectSourceFolder làm Thư mục nguồn trong Dự án cục bộ của mình. do đó, Người dùng đã nhập nó vào git bash và đẩy, kéo và cam kết dự án của mình từ đó. Do đó, git đồng bộ hóa myProjectSourceFolder- nhưng không có bản ghi nào trong lịch sử của anh ấy đối với myBashSourceFolder. Do đó, việc đẩy / kéo / hợp nhất từ ​​myBashSourceFolder sẽ tạo ra đầu ra đã cho, nếu Người dùng cố gắng đồng bộ hóa từ đó vào lần sau, thay vì thư mục mà anh ta đã làm việc trước đó.

Giải pháp: Nhập đúng Thư mục và thử kéo lại. Trong hầu hết các lần tôi gặp, giải pháp này hoạt động tốt :)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.