Vấn đề đẩy mã mới trong Github


147

Tôi đã tạo một kho lưu trữ mới trên Github hiện chỉ có tệp Readme.md.

Tôi có một dự án RoR mới được tạo mà tôi muốn đẩy vào kho lưu trữ này. Sau đây là các lệnh tôi đã đưa ra trong Terminal để thực hiện điều này cùng với lỗi tôi đang gặp phải.

git remote add origin https://github.com/aniruddhabarapatre/learn-rails.git

Sau đó tôi đã nhập tên người dùng và mật khẩu của mình

git push -u origin master

Lỗi ---

To https://github.com/aniruddhabarapatre/learn-rails.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/aniruddhabarapatre/learn-rails.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first merge the remote changes (e.g.,
hint: 'git pull') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Đây là lần đầu tiên tôi đẩy mã của mình vào kho lưu trữ Github và tôi bị mất với các lỗi. Tôi đã tìm kiếm một vài câu hỏi khác được hỏi ở đây, nhưng không ai trong số họ có vấn đề lần đầu tiên.


Câu trả lời:


167

Khi bạn tạo kho lưu trữ của mình trên GitHub , bạn đã tạo README.md , đây là một cam kết mới .

Kho lưu trữ cục bộ của bạn chưa biết về cam kết này. Vì thế:

Các cập nhật đã bị từ chối vì điều khiển từ xa chứa công việc mà bạn không có tại địa phương.

Bạn có thể muốn tìm để làm theo lời khuyên này:

Trước tiên, bạn có thể muốn hợp nhất các thay đổi từ xa (ví dụ: ' git pull') trước khi đẩy lại.

Đó là:

git pull
# Fix any merge conflicts, if you have a `README.md` locally
git push -u origin master

3
Những gì tôi đang làm là git pull master master trước rồi đẩy lại.
Bagusflyer

12
trong một số trường hợp bạn có thể nhận được một fatal: refusing to merge unrelated historiestrường hợp như vậy, bạn gửi git pull --allow-unrelated-histories origin mastervà sau đó bạn đẩy theo câu trả lời ở trên
TheLebDev

1
Không làm việc cho tôi. từ xa: Đẩy bị từ chối. remote: remote: refs / Heads / master: ...: dự kiến ​​tên committer xxx nhưng tìm thấy yyy. Tôi làm một git config --global user.email yyy và nó vẫn không nhận ra. Không thể ép buộc bất cứ điều gì. !!!
Baruch Atta

284

Nếu đây là lần đẩy đầu tiên của bạn

chỉ cần thay đổi

git push **-u** origin master

thay đổi nó như thế này

git push -f origin master

5
Điều này đã xóa tập tin readme của tôi mà tôi đưa lên github trước. Bây giờ có vẻ như tôi phải làm lại từ đầu.
jack trống

3
bạn chỉ có thể thêm một cảnh báo rằng -f buộc phải đẩy và có thể gây rối với dòng thời gian mã
ericksho

Đây là một cách tồi tệ, nó gây ra cho tôi một vấn đề, nó đã xóa readme, không phải do tôi tạo ra, bây giờ tôi phải gọi cho người bảo trì nói với tôi rằng tôi thật ngu ngốc, xin lỗi đã tạo lại cho tôi đọc. :(
Mohammad Elsayed

62

DỄ DÀNG: Tất cả những gì bạn cần là một cú đẩy mạnh mẽ. Bởi vì bạn có thể đã tạo readme.mdtệp trên Github và bạn chưa lấy nó.

git push -f origin master

Và đây là một GIF.

git đẩy gốc -f

⚠️ BEWARE : Sử dụng forcecó thể thay đổi lịch sử cho người dùng khác trên cùng một dự án. Về cơ bản, nếu bạn không quan tâm đến việc một tập tin bị xóa cho mọi người, hãy tiếp tục. Đặc biệt nếu bạn là nhà phát triển duy nhất trong dự án.


1
Lưu ý cách tiếp cận này thay đổi lịch sử mà những người dùng khác của kho lưu trữ này đã tìm nạp. git push -f origin masterkhông phải là một thói quen tuyệt vời để hình thành.
Johnsyweb

1
Giải pháp này có thể giải quyết việc đẩy cam kết nhưng nó cũng loại bỏ tất cả các cam kết trong quá khứ!.
twenk11k

2
Coi chừng Github noobs ... Nếu bạn đã tạo Readme.md thông qua GitHub, lệnh này SILL BỎ L IT NÓ khi nó đẩy các thay đổi mới của bạn.
daCoda

Đó chủ yếu là lý do tại sao mọi người hạ cánh ở đây. -fthẻ loại bỏ các tập tin và nên được sử dụng cẩn thận.
Ahmad Awais

34

Đưa ra một cú đẩy bắt buộc với lệnh:

git push -f origin master

10
Lưu ý điều này có thể xóa các cam kết trong quá khứ, có thể hoặc không thể mong muốn
Crashalot 6/2/2016

8

Giả sử rằng bạn đã thêm tệp Readme.md thông qua giao diện được cung cấp bởi github, readme chưa có trong thư mục cục bộ của bạn. Do đó, khi bạn cố gắng đẩy vào repo từ xa, bạn sẽ gặp lỗi, vì repo cục bộ của bạn đang thiếu tệp readme - đó là "đằng sau thời đại", có thể nói như vậy. Do đó, như được đề xuất trong thông báo lỗi, trước tiên hãy thử "git pull". Điều này sẽ kéo readme từ kho lưu trữ từ xa và hợp nhất nó với thư mục cục bộ của bạn. Sau đó, bạn sẽ không gặp vấn đề gì khi đẩy vào repo từ xa (các lệnh bạn đã đăng có vẻ hợp lệ với tôi).


6

Điều này xảy ra khi bạn cố gắng đẩy ban đầu. Bởi vì trong repo GitHub của bạn có readMe.md hoặc bất kỳ điều mới nào khác không có trong repo cục bộ của bạn. Trước tiên, bạn phải hợp nhất lịch sử không liên quan của repo github của bạn. Để làm điều đó

git pull origin master --allow-unrelated-histories

sau đó bạn có thể lấy các tệp khác từ repo (readMe.md hoặc bất kỳ) bằng cách sử dụng

git pull origin master

Sau đó

git push -u origin master

Bây giờ bạn đã đẩy thành công tất cả các thay đổi của mình vào repo Github. Tôi không phải là chuyên gia về git nhưng mỗi khi các bước này hoạt động với tôi.


5

Xem xét nếu bạn không cam kết thay đổi của bạn trong một thời gian, có thể làm điều này sẽ làm việc cho bạn.

git add files
git commit -m "Your Commit"
git push -u origin master

Điều đó làm việc cho tôi, hy vọng nó cũng làm cho bạn.


3

nếu bạn sử dụng git cho mac trong GUI, trước tiên bạn có thể chọn Resposeective-> Pull hoặc "comm + shift + p" thành "git pull", sau đó xuất bản nguồn.


3

Lỗi này xảy ra khi bạn đẩy dữ liệu từ thư mục cục bộ sang kho git từ xa bằng cách thực hiện theo lệnh git: git push -u origin master

Khi thư mục cục bộ và các tệp của thư mục từ xa bị xung đột.

Giải pháp :

Sau khi cam kết tất cả các tập tin để dàn dựng theo các bước dưới đây.

  1. Lấy các tệp từ kho lưu trữ từ xa vì nó xung đột với thư mục làm việc cục bộ.

    • git pull <remoter-url> <branch-name>
  2. Cam kết thay đổi một lần nữa.

    • git add -A
    • git commit -m ‘<comment>'
  3. Sau khi cam kết tập tin hợp nhất với cả hai thư mục, bạn có thể sử dụng

    • git push -u origin master

Điều này sẽ khắc phục vấn đề. Cảm ơn.


1

Tôi đã có một vấn đề tương tự ... Tôi đã giải quyết nó như thế này (tôi không phải là chuyên gia về git nên tôi không biết liệu đó có phải là một giải pháp đúng hay không, nhưng nó hiệu quả với tôi):

git pull origin master --allow-unrelated-histories
git merge origin origin/master
git rm README.md
git commit -m 'removed readme.md'
git push origin master

0

Tôi đã vật lộn với lỗi này trong hơn một giờ! Dưới đây là những gì đã giúp tôi giải quyết nó. Tất cả điều này trong khi thư mục làm việc của tôi là repo tôi đã nhân bản trên hệ thống của mình.

Nếu bạn đang thực hiện thêm tệp vào kho lưu trữ hiện tại của mình ** 1. Tôi đã kéo mọi thứ tôi đã thêm vào kho lưu trữ vào thư mục GitHub của mình:

kéo git


Đầu ra là- một số tệp readme file1 file2

  1. Tôi đã sao chép (kéo và thả) các tệp mới của mình (các tệp mà tôi muốn đẩy) vào kho lưu trữ nhân bản của mình (GitHub repo). Khi bạn sẽ repo này, bạn sẽ thấy các tập tin cũ và mới của bạn.

ví dụ. một số tập tin readme file1 file2 newfile1 newfile2

  1. git thêm "newfile1" "newfile2"

  2. [tùy chọn] trạng thái git này sẽ đảm bảo cho bạn nếu các tệp bạn muốn thêm được dàn dựng đúng hoặc không xuất ra


Trên nhánh chính Chi nhánh của bạn được cập nhật với 'origin / master'. Các thay đổi được cam kết: (sử dụng "git reset HEAD ..." để hủy bỏ)

    new file:   newfile1
    new file:   newfile2

5.git commit -m "bất kỳ mô tả nào bạn muốn đưa ra" 6.git đẩy

Và tất cả các tập tin mới của tôi cùng với những cái cũ hơn đã được nhìn thấy trong repo của tôi.


0

Một câu trả lời đơn giản hơn là tải lên tệp README.MD theo cách thủ công từ máy tính của bạn lên GitHub. Làm việc rất tốt cho tôi.


0

Tôi sử dụng các tùy chọn Chi nhánh, sau đó nhấp chuột phải vào thư mục "remote / origin" và sau đó nhấp vào "xóa chi nhánh từ xa", xem hình ảnh bên dưới:

bức hình


0

Tôi đã gặp lỗi này trên Azure Git và điều này giải quyết vấn đề:

git fetch
git pull
git push --no-verify
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.