আনয়ন না করে গিট-পুল কীভাবে প্রাকদর্শন করবেন?


204

এটা কি সম্ভব?

মূলত, একটি দূরবর্তী সংগ্রহস্থল রয়েছে যা থেকে আমি কেবল ব্যবহার করে টানছি:

git pull

এখন, আমি আমার পূর্বের কোনও কিছু স্পর্শ না করে এই টানটি কী পরিবর্তন করবে (একটি বিভ্রান্তি) পূর্বরূপ দেখতে চাই। কারণটি হ'ল আমি যে জিনিসটি টানছি এটি সম্ভবত "ভাল" নাও লাগবে এবং আমি চাই আমার সংগ্রহশালাটিকে "নোংরা" করার আগে অন্য কেউ এটি ঠিক করে ফেলুক।


4
আপনার সম্পাদনাটি অদ্ভুত। "গিট ফেচ" করা আপনার কার্যকরী গাছকে কোনওভাবেই বদলাতে পারে না, তাই আপনার স্থানীয় স্থানীয় আপত্তি নেই কিনা তা বিবেচ্য নয়। আপনি যে আনতে চান সেটি আর অস্পষ্ট, কারণ এটি আপনার কাজের গাছকে স্পর্শ করে না।
dkagedal

ধন্যবাদ ডেকেড্ডাল, গিট কীভাবে কাজ করে তা পুরোপুরি বুঝার আগে আমি এটি লিখেছিলাম। আমি সম্পাদনাটি সরিয়েছি।
মিলান বাবুস্কভ

উত্তর:


233

git fetchএকটি git log HEAD..origin/masterকরার পরে , আপনার শেষ সাধারণ কমিট এবং উত্সের মাস্টার শাখার মধ্যে লগ এন্ট্রিগুলি দেখানোর জন্য একটি করুন । Diffs দেখাতে, পারেন ব্যবহার git log -p HEAD..origin/masterপ্রতিটি প্যাচ অথবা দেখানোর জন্য git diff HEAD...origin/master(তিনটি বিন্দু না দুই) একটা একক পরিবর্তন দেখানোর জন্য।

সাধারণত আনয়নকে পূর্বাবস্থায় ফেলার দরকার হয় না, কারণ আনতে গিয়ে কেবল দূরবর্তী শাখাগুলি আপডেট করে এবং আপনার কোনও শাখাকেই আপডেট করে না । আপনি যদি টানতে এবং সমস্ত রিমোট কমিটগুলিতে একত্রীকরণের জন্য প্রস্তুত না হন তবে আপনি git cherry-pickকেবলমাত্র নির্দিষ্ট সুনির্দিষ্ট কমিটগুলি গ্রহণ করতে ব্যবহার করতে পারেন। পরবর্তীতে, আপনি যখন সমস্ত কিছু পেতে প্রস্তুত হন, তখন git pullবাকি কমিটগুলিতে একটি মার্জ হয়ে যায়।

আপডেট: আপনি কেন গিট ফেচ ব্যবহার এড়াতে চান তা আমি পুরোপুরি নিশ্চিত নই। সমস্ত গিট আনতে হয় দূরবর্তী শাখাগুলির স্থানীয় কপি আপডেট করা। এই স্থানীয় অনুলিপিটি আপনার কোনও শাখার সাথে কিছু করার নেই, এবং এটির অনির্দিষ্ট স্থানীয় পরিবর্তনগুলির সাথে কোনও সম্পর্ক নেই। আমি এমন লোকদের কথা শুনেছি যারা ক্রোন চাকরিতে গিট আনতে চালায় কারণ এটি এতটা নিরাপদ। (যদিও আমি সাধারণত এটি করার পরামর্শ দিই না))


আমার ধারণা আমি ডকসগুলি পড়ার সময় 'আমার শাখাগুলির সাথে কিছুই করার ছিল না' part অংশটি মিস করেছি। ধন্যবাদ।
মিলান বাবুস্কভ

1
কিছু কারণে যা আমার পক্ষে কাজ করে না। আমি গিট ডিফার হেড ... উত্স / মাস্টার চেষ্টা করেছিলাম এবং এটি এখনও কোনও পরিবর্তন তালিকাভুক্ত করে না যখন আমি 'অরিজিনাল মাস্টার টান' এটি পরিবর্তনগুলি আনয়ন করে এবং মার্জ করে। গিট রিমোট অ্যাড ব্যবহার করে আমি রিমোট রিপোজিটারি সেট আপ করার কারণেই?
screenm0nkey

@ স্ক্রিনএমনিকি: আমি জানি না (আরও তথ্য না জেনে)। আপনি এখনও নিশ্চিত না হলে এই বিষয়ে জিজ্ঞাসা করার জন্য আমি একটি নতুন প্রশ্ন খোলার পরামর্শ দিচ্ছি।
গ্রেগ হিউগিল

1
আমার জন্য কী কাজ করে (গিট আনার পরে): গিট লগ উত্স / মাস্টার
স্ল্যামান

2
git diff ...@{u}git diff HEAD...origin/masterউত্স / মাস্টার উজান শাখা হিসাবে একই
camunctious

47

আমি মনে করি গিট আনা যা আপনার সন্ধান করছেন।

এটি আপনার স্থানীয় রেপো সূচকে প্রতিশ্রুতি না দিয়ে পরিবর্তনগুলি এবং অবজেক্টগুলিকে টানবে।

এগুলি পরে গিট মার্জ করে মার্জ করা যায়

ম্যান পেজ

সম্পাদনা: আরও এক্সপ্লিনেশন

সোজা গিট- এসভিএন ক্র্যাশ কোর্স লিঙ্কটি থেকে

এখন, আপনি কীভাবে কোনও দূরবর্তী সংগ্রহস্থল থেকে কোনও নতুন পরিবর্তন পাবেন? আপনি এগুলি আনুন:

git fetch http://host.xz/path/to/repo.git/ 

এই মুহুর্তে তারা আপনার ভাণ্ডারে রয়েছে এবং আপনি এগুলি ব্যবহার করে পরীক্ষা করতে পারেন:

git log origin 

আপনি পরিবর্তনগুলি পৃথক করতে পারেন। আপনি আপনার শাখায় যে পরিবর্তনগুলি করেননি তা দেখতে আপনি গিট লগ হেড..ওরিগিন ব্যবহার করতে পারেন। তারপরে যদি সেগুলি একীভূত করতে চান - কেবল করুন:

git merge origin

মনে রাখবেন যে আপনি আনার জন্য কোনও শাখা নির্দিষ্ট না করলে এটি ট্র্যাকিং রিমোটে সুবিধামত ডিফল্ট হবে।

ম্যান পৃষ্ঠাটি পঠন করা সৎভাবে আপনাকে বিকল্পগুলির সর্বোত্তম বোঝাপড়া দিতে এবং এটি কীভাবে ব্যবহার করতে হবে তা যাচ্ছেন।

আমি কেবল উদাহরণ এবং স্মৃতি দ্বারা এটি করার চেষ্টা করছি, আমার কাছে এখন পরীক্ষা করার জন্য একটি বাক্স নেই। আপনার উচিত:

git log -p //log with diff

গিট রিসেট --হার্ড ( লিঙ্ক ) দিয়ে একটি আনয়ন পূর্বাবস্থায় ফেরা যায় , তবে আপনার গাছে থাকা সমস্ত আপত্তিজনক পরিবর্তনগুলি এবং আপনার যে পরিবর্তনগুলি হয়েছে সেগুলিও হারিয়ে যাবে।


আপনি যদি দুটি বিষয় ব্যাখ্যা করেন তবে তা ভাল হতে পারে: ১. আমি কীভাবে গিট-আনার কাজটি পূর্বাবস্থায় ফেলি? ২. আমি কীভাবে পার্থক্যটি দেখতে পারি?
মিলান বাবুভকভ

1
1) গিট-ফেচ আনডিং? 2) গিট ডিফ হেড..ওরিগিন
ক্রিস ভেস্ট

খ্রিস্টান যেমন বলেছিলেন ঠিক তেমনিভাবে করা হয়েছে, গিট রিসেট দিয়ে একটি আনয়ন পূর্বাবস্থায় ফেলা যায় - তবে আপনার গাছের সমস্ত আপমুক্ত পরিবর্তন এবং আপনি যে পরিবর্তনগুলি নিয়ে এসেছেন তাও হারিয়ে যাবে।
ব্রায়ান জিয়ানফোরকারো

আপনি খুঁজছেন git reset --softবা --mixed? ম্যানপেজটি পরীক্ষা করুন।
অ্যারিস্টটল পাগাল্টজিস

1
যদি আমি সঠিকভাবে বুঝতে পারি তবে "গিট ফ্যাচ" পূর্বাবস্থায় ফেলার দরকার নেই কারণ এটি আপনার কার্যকরী অনুলিপিটিকে স্পর্শ করে না এবং এটি আপনার সংগ্রহশালাও নয়। "গিট ফ্যাচ" .git / FETCH_HEAD
থারস্টন নিহিয়াস

21

আপনি একটি দূরবর্তী রেপো থেকে আনতে পারেন, পার্থক্যগুলি দেখতে পারেন এবং তারপরে টানতে বা একত্রীকরণ করতে পারেন।

এটি বলা রিমোট রেপো originএবং masterরিমোট শাখা ট্র্যাকিং নামে পরিচিত একটি শাখার উদাহরণ origin/master:

git checkout master                                                  
git fetch                                        
git diff origin/master
git pull --rebase origin master

8

আমার জন্য এটি করার জন্য আমি একটি কাস্টম গিট ওরফে তৈরি করেছি:

alias.changes=!git log --name-status HEAD..

তার সাথে আপনি এটি করতে পারেন:

$git fetch
$git changes origin

এটি করার আগে পরিবর্তনগুলির প্রাকদর্শন করার একটি দুর্দান্ত এবং সহজ উপায় পাবেন merge


তুমি ঈশ্বর. এটি
গিটের

3

আমি এই দুটি কমান্ড ব্যবহার করি এবং আমি ফাইলগুলি পরিবর্তন করতে দেখতে পাই।

  1. প্রথমে গিট ফেচ কার্যকর করা , এটি এর (আউটপুট অংশ) এর মতো আউটপুট দেয়:

    ...
    72f8433..c8af041 বিকাশ -> উত্স / বিকাশ
    ...

এই অপারেশনটি আমাদের দুটি কমিট আইডি দেয়, প্রথমটি পুরানো এবং দ্বিতীয়টি নতুন হবে be

  1. তারপরে গিট ডিফ ব্যবহার করে এই দুটি কমিটের তুলনা করুন

    গিট ডিফার 72f8433..c8af041 | গ্রেপ "ডিফার - জিট"

এই কমান্ডটি আপডেট করা ফাইলগুলির তালিকা দেবে:

diff --git a/app/controller/xxxx.php b/app/controller/xxxx.php
diff --git a/app/view/yyyy.php b/app/view/yyyy.php

উদাহরণস্বরূপ অ্যাপ / কন্ট্রোলার / এক্সএক্সএক্সএক্সপিএফপি এবং অ্যাপ / ভিউ / yyyy.php আপডেট হবে।

ব্যবহার দুই করে তুলনা Git পরিবর্তন কপি করে প্রিন্ট সকলেরই রূপান্তর লাইনের ফাইল আপডেট, কিন্তু , grep এটা অনুসন্ধানে এবং শুধুমাত্র লাইন পায় রয়েছে পরিবর্তন --git আউটপুট থেকে।


3

আমি পার্টিতে দেরি করতে পারি, তবে এটি এমন একটি বিষয় যা আমাকে খুব দীর্ঘকাল ধরে ফেলেছে। আমার অভিজ্ঞতা হিসাবে, আমি বরং দেখতে চাই যে আমার কার্যকরী অনুলিপি আপডেট করার পরিবর্তে কোন পরিবর্তনগুলি মুলতুবি রয়েছে এবং সেই পরিবর্তনগুলি মোকাবিলা করুন।

এটি ~/.gitconfigফাইলটিতে যায় :

[alias]
        diffpull=!git fetch && git diff HEAD..@{u}

এটি বর্তমান শাখাটি নিয়ে আসে, তারপরে ওয়ার্কিং কপি এবং এই আনীত শাখার মধ্যে পার্থক্য করে। সুতরাং আপনার কেবল পরিবর্তনগুলি দেখতে হবে যা আসবে git pull


1
আপনি কি রেফ স্ট্রিংটি বদলাতে পারবেন HEAD..@{u}? এটি সহজ, এবং এটির প্রয়োজন নেই যে দূরবর্তীটির নাম "উত্স" বা আপনার শাখাটি যেমন রিমোটে রয়েছে তেমন নামকরণ করা উচিত।
মাইকেল -

এটি একটি ভাল সম্পন্ন উরফ, তবে কেন আপনি প্রথমে এটি করতে চান তা নিশ্চিত নই। আপনি কিছু সময় পরিবর্তন সঙ্গে ডিল করতে হবে, তাই না? আপনি git pullযদি এটি কী করছেন তা যদি আপনার পছন্দ না হয় তবে আপনার একত্রীকরণের অংশটি বাতিল করতে সক্ষম হবেন ... সুতরাং আমি নিশ্চিত নই যে এর ব্যবহারের ক্ষেত্রে কী।
মার্নেন লাইবো-কোসার

আমি জানি যে আমাকে কিছু সময়ে পরিবর্তনগুলি মোকাবেলা করতে হবে, তবে আমি যেমন লিখেছি, কখনও কখনও চাই না। আমি কেবল জানতে চাই যে কিছু ভেঙে যাচ্ছে এবং এর জন্য আমাকে আরও কিছু সময় সংরক্ষণ করতে হবে - বা আমি যদি git pullএরপরে কিছু করতে পারি তবে । এছাড়াও আমি মনে করি অপ্টের প্রশ্নটি কী ছিল।
অ্যান্ডি পি

-1

আপনি যদি নিজের স্থানীয় .git আপডেট করতে গিট-আনতে না চান তবে কেবল নিজের স্থানীয় রেপো কোনও টেম্পার ডিয়ারে অনুলিপি করুন এবং সেখানে টানুন। এখানে একটি সংক্ষিপ্ত হাত:

$ alias gtp="tar -c . | (cd /tmp && mkdir tp && cd tp && tar -x && git pull; rm -rf /tmp/tp)"

প্রাক্তন .:

$ git status
# On branch master
nothing to commit (working directory clean)

$ gtp
remote: Finding sources: 100% (25/25)
remote: Total 25 (delta 10), reused 25 (delta 10)
Unpacking objects: 100% (25/25), done.
From ssh://my.git.domain/reapO
   32d61dc..05287d6  master     -> origin/master
Updating 32d61dc..05287d6
Fast-forward
 subdir/some.file       |    2 +-
 .../somepath/by.tes    |    3 ++-
 .../somepath/data      |   11 +++++++++++
 3 files changed, 14 insertions(+), 2 deletions(-)

$ git status
# On branch master
nothing to commit (working directory clean)

$ git fetch
remote: Finding sources: 100% (25/25)
remote: Total 25 (delta 10), reused 25 (delta 10)
Unpacking objects: 100% (25/25), done.
From ssh://my.git.domain/reapO
   32d61dc..05287d6  master     -> origin/master

$ git status
# On branch master
# Your branch is behind 'origin/master' by 3 commits, and can be fast-forwarded.
#
nothing to commit (working directory clean)

'জিটিপি' স্থানীয় রেপোতে যেখানে .git অবস্থিত সেখানে তার কার্যকর করতে হবে।
এএক্স ল্যাবগুলি

-2

অন্য কোথাও রেপো ক্লোনিংয়ের বিষয়ে, এবং আসল চেকআউট এবং নতুন জিনিসটি একই জিনিস পেয়েছে কিনা তা দেখার জন্য নতুনভাবে ক্লোন লগ করার বিষয়ে।


একটি স্থানীয় অনুলিপি অন্য ক্লোনটির চেয়ে রাজ্যের প্রতিফলনযোগ্য। বিশদ জন্য আমার প্রধান পোস্ট দেখুন
এএক্স ল্যাবগুলি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.