git - what - গিটহাব




Unpushed গিট Commits দেখছেন (16)

আমি যে কোনও স্থানীয় সিমিটেট দেখি যা এখনো রিমোট রিপোজিটরিতে ঢোকানো হয়নি? মাঝে মাঝে, git status মুদ্রণ করবে যে আমার শাখা এক্সটি origin/master চেয়ে এগিয়ে আছে, কিন্তু সর্বদা নয়।

এটি কি আমার গিট ইনস্টলের সাথে একটি বাগ, নাকি আমি কিছু অনুপস্থিত?


অনুরূপ: unmerged শাখা দেখতে:

git branch --all --no-merged

যারা সন্দেহ হতে পারে কিন্তু আমি cxreg দ্বারা উত্তর সুপারিশ


অন্যান্য সমস্ত উত্তর "আপস্ট্রিম" (আপনি যে শাখা থেকে টানছেন) সম্পর্কে কথা বলছেন।
কিন্তু একটি স্থানীয় শাখা এটি থেকে pulls এক তুলনায় একটি ভিন্ন শাখা ধাক্কা পারেন।

master দূরবর্তী ট্র্যাকিং শাখা " origin/master " ধাক্কা নাও হতে পারে।
master জন্য আপস্ট্রিম শাখাটি origin/master master হতে পারে তবে এটি রিমোট ট্র্যাকিং শাখা origin/xxx বা এমনকি অন্য anotherUpstreamRepo/yyy push করতে পারে।
যারা branch.*.pushremote দ্বারা সেট করা হয় branch.*.pushremote বর্তমান শাখা global remote.pushDefault মান বরাবর branch.*.pushremote জন্য।

এটি রিমোট-ট্র্যাকিং শাখা যা অপ্রচলিত অভিযান সন্ধানের সময় গণনা করে: স্থানীয় শাখাটি যেখানে ধাক্কা দেওয়া হবে সেখানকার branch at the remote ট্র্যাক করে এমন একজন।
branch at the remote আবার, origin/xxx বা এমনকি অন্য anotherUpstreamRepo/yyy

Git 2.5+ (Q2 2015) এর জন্য একটি নতুন শর্টকাট প্রবর্তন করে: <branch>@{push}

দেখুন ২9 বিসি 885 , 3dbe9db টিপুন , adfe5d0 করুন , commit করুন 48c5847 , e1ad0eb করুন , e291c75 করুন , 979cb24 করুন , 1ca41a1 করুন , 3a429d0 করুন , a9f9f8c করুন , 8770e6f করুন , da66b27 করুন , da66b27 করুন , f052154 করুন , 9e3751d করুন , ee2499f করুন [সকল মে 21 থেকে ২1 মে 2015], এবং Jeff কিং ( peff ) দ্বারা e41bf35 [01 মে 2015] peff
( জুনিয়ো সি হামানোর সাথে gitster - gitster - সি 4a8354 , 05 জুন 2015)

Commit adfe5d0 ব্যাখ্যা করে:

sha1_name : sha1_name @{push} প্রয়োগ করুন

একটি ত্রিভুজাকার কার্যপ্রবাহে, প্রতিটি শাখায় আগ্রহের দুটি স্বতন্ত্র বিষয় থাকতে পারে: @{upstream} যা আপনি সাধারণত টেনে আনেন এবং যে গন্তব্যটি আপনি সাধারণত ধাক্কা দিচ্ছেন। পরের জন্য একটি শর্টান্ডা নেই, কিন্তু এটি দরকারী।

উদাহরণস্বরূপ, আপনি জানতে পারেন যে কোনটি আপনি এখনও ধাক্কা দিচ্ছেন না :

git log @{push}..

অথবা আরো জটিল উদাহরণ হিসাবে, কল্পনা করুন যে আপনি সাধারণত origin/master (যা আপনি আপনার @{upstream} হিসাবে সেট করেছেন) থেকে পরিবর্তনগুলি myfork/topic এবং নিজের ব্যক্তিগত ফর্ক (যেমন, myfork/topic হিসাবে) পরিবর্তনগুলি myfork/topic
আপনি আপনার ফর্ককে একাধিক মেশিন থেকে ধাক্কা দিতে পারেন, আপনাকে প্রিসমাসের পরিবর্তে ধাক্কা গন্তব্য থেকে পরিবর্তনগুলি সংহত করতে হবে।
এই প্যাচ দিয়ে, আপনি ঠিক করতে পারেন:

git rebase @{push}

পূর্ণ নাম টাইপ করার পরিবর্তে।

Commit 29bc885 যোগ করে:

for-each-ref : " %(push) " বিন্যাস গ্রহণ

প্রতিটি রেফারেন্সের জন্য " @{upstream} " এর প্রতিবেদনের জন্য আমাদের " %(upstream) " আছে, এই প্যাচটি " @{push} " মিলতে " %(push) " যোগ করে।
এটি আপস্ট্রিম হিসাবে একই ট্র্যাকিং ফর্ম্যাট মডিফায়ারগুলিকে সমর্থন করে (কারণ আপনি জানতে চাইতে পারেন, উদাহরণস্বরূপ, কোন শাখাগুলি ধাক্কা দেয় )।

যদি আপনি দেখতে চান যে আপনার শাখার তুলনায় আপনার স্থানীয় শাখার সামনে / পিছনে কতগুলি ধাপ রয়েছে তা আপনি দেখতে চান:

git for-each-ref --format="%(refname:short) %(push:track)" refs/heads

আপনি চেষ্টা করতে পারেন....

gitk

আমি জানি এটি একটি বিশুদ্ধ কমান্ড লাইন বিকল্প নয় তবে যদি আপনি এটি ইনস্টল করেছেন এবং একটি GUI সিস্টেমে থাকেন তবে আপনি যা খুঁজছেন তা ঠিক করার জন্য এটি একটি দুর্দান্ত উপায়।

(আমি আসলে অবাক হচ্ছি যে কেউ এ পর্যন্ত উল্লেখ করেনি।)


আপনি স্থানীয়ভাবে আছে কিন্তু আপস্ট্রিম সঙ্গে সব কাজ প্রদর্শন করতে পারেন

git log @{u}..

@{u} বা @{upstream} অর্থ বর্তমান শাখার আপস্ট্রীম শাখার ( git rev-parse --help git help revisions বা বিশদ বিবরণের জন্য git help revisions দেখুন)।


আমি কেবলমাত্র ফাইলগুলির (এবং স্থিতি) তালিকাগুলি তালিকাভুক্ত করার জন্য নিম্নোক্ত উপনামগুলি ব্যবহার করি তবে তা push করা হয়নি (বর্তমান শাখার জন্য)

git config --global alias.unpushed \
"diff origin/$(git name-rev --name-only HEAD)..HEAD --name-status"

তারপর শুধু করবেন:

git unpushed

আমি পূর্বে একটি কমিটি ছিল, কোনো শাখা ধাক্কা না, দূরবর্তী না স্থানীয়। শুধু কমিট। অন্য উত্তর থেকে কিছুই আমার জন্য কাজ করেনি, কিন্তু সঙ্গে:

git reflog

সেখানে আমি আমার কমিটি পাওয়া যায়।


এখানে আমার পোর্টেবল সমাধান (শেল স্ক্রিপ্ট যা উইন্ডোজগুলিতে অতিরিক্ত ইনস্টলেশনের ছাড়াও কাজ করে) যা সমস্ত শাখাগুলির জন্য মূল থেকে পার্থক্যগুলি দেখায়: git-fetch-log

একটি উদাহরণ আউটপুট:

==== branch [behind 1]

> commit 652b883 (origin/branch)
| Author: BimbaLaszlo <[email protected]>
| Date:   2016-03-10 09:11:11 +0100
|
|     Commit on remote
|
o commit 2304667 (branch)
  Author: BimbaLaszlo <[email protected]>
  Date:   2015-08-28 13:21:13 +0200

      Commit on local

==== master [ahead 1]

< commit 280ccf8 (master)
| Author: BimbaLaszlo <[email protected]>
| Date:   2016-03-25 21:42:55 +0100
|
|     Commit on local
|
o commit 2369465 (origin/master, origin/HEAD)
  Author: BimbaLaszlo <[email protected]>
  Date:   2016-03-10 09:02:52 +0100

      Commit on remote

==== test [ahead 1, behind 1]

< commit 83a3161 (test)
| Author: BimbaLaszlo <[email protected]>
| Date:   2016-03-25 22:50:00 +0100
|
|     Diverged from remote
|
| > commit 4aafec7 (origin/test)
|/  Author: BimbaLaszlo <[email protected]>
|   Date:   2016-03-14 10:34:28 +0100
|
|       Pushed remote
|
o commit 0fccef3
  Author: BimbaLaszlo <[email protected]>
  Date:   2015-09-03 10:33:39 +0200

      Last common commit

প্যারামিটারগুলি লগের জন্য পাস করা হয়েছে, উদাহরণস্বরূপ - --oneline বা --patch ব্যবহার করা যেতে পারে।



এটি একটি বাগ নয়। আপনি সম্ভবত কোনও অটো একত্রিত হওয়ার পরে গিট স্ট্যাটাসটি দেখতে পান যেখানে রিমোট থেকে পরিবর্তন আনা হয় কিন্তু এখনো মার্জ হয় না।

স্থানীয় রেপো এবং রিমোটের মধ্যেকার মতামত দেখতে এইটি করুন:

git fetch

এটি 100% নিরাপদ এবং আপনার কার্যকারী অনুলিপিকে মজাদার করবে না। পরিবর্তন git status ছিল পরিবর্তন প্রদর্শনী X commits ahead of origin/master

আপনি এখন রিমোটে থাকা Commits লগগুলি প্রদর্শন করতে পারেন তবে স্থানীয়গুলিতে নয়:

git log HEAD..origin

জিনিসগুলি করার এক উপায় হল এক শাখায় পাওয়া যায় এমন তালিকাবদ্ধ তালিকা কিন্তু অন্য নয়।

git log ^origin/master master

যদি ধাক্কা দেওয়া না হয় এমন সংখ্যাগুলির সংখ্যা একটি একক সংখ্যার নম্বর, যা এটি প্রায়শই হয়, সহজতম উপায় হল:

$ git checkout

জিট আপনাকে বলার দ্বারা প্রতিক্রিয়া জানায় যে আপনি আপনার মূল সম্পর্কিত আপেক্ষিক "এগিয়ে N Commits"। তাই এখন লগ দেখার সময় যে সংখ্যা রাখা মনে রাখবেন। যদি আপনি "3 দ্বারা এগিয়ে যান", ইতিহাসে শীর্ষ 3 টি কাজ এখনও ব্যক্তিগত।


unpushed নাম unpushed এমন unpushed যা নির্দিষ্ট কাজ নির্দেশিকাতে সমস্ত গিট, Mercurial এবং Subversion repos স্ক্যান করে এবং ইউকমেটেড ফাইলগুলির তালিকা এবং আনপচড কমিটগুলির তালিকা দেখায়। লিনাক্সের অধীনে ইনস্টলেশন সহজ:

$ easy_install --user unpushed

অথবা

$ sudo easy_install unpushed

সিস্টেম-প্রশস্ত ইনস্টল করতে।

ব্যবহার খুব সহজ:

$ unpushed ~/workspace
* /home/nailgun/workspace/unpushed uncommitted (Git)
* /home/nailgun/workspace/unpushed:master unpushed (Git)
* /home/nailgun/workspace/python:new-syntax unpushed (Git)

আরো তথ্যের জন্য unpushed --help বা unpushed দেখুন। এটি একটি cronjob স্ক্রিপ্ট unpushed-notify uncommided এবং unpushed পরিবর্তন অন-পর্দা বিজ্ঞপ্তি জন্য unpushed-notify


বর্তমান শাখা মধ্যে unpushed commits জন্য খুঁজছেন জন্য হ্যান্ডি গিট উপনাম:

alias unpushed = !GIT_CURRENT_BRANCH=$(git name-rev --name-only HEAD) && git log origin/$GIT_CURRENT_BRANCH..$GIT_CURRENT_BRANCH --oneline

এই মূলত কি করে:

git log origin/branch..branch

কিন্তু বর্তমান শাখা নাম নির্ধারণ করে।


সমস্ত শাখায় সব unpushed কমিট তালিকা সহজে আপনি এই কমান্ড ব্যবহার করতে পারেন:

 git log --branches  @{u}..

git diff origin

আপনার শাখাটি মূলটি সন্ধান করার জন্য সেট আপ করা হয়েছে, তারপরে আপনাকে পার্থক্য দেখাতে হবে।

git log origin

আপনি commits একটি সারাংশ দিতে হবে।


git log origin/master..HEAD

আপনি একই সিনট্যাক্স ব্যবহার করে পার্থক্য দেখতে পারেন

git diff origin/master..HEAD






git-log