diff
স্থানীয় শাখা এবং দূরবর্তী শাখার মধ্যে আমি কীভাবে দেখতে পারি ?
git diff HEAD origin/HEAD
যা মনে হয়েছিল তার চেয়ে আলাদা একটি দূরবর্তী শাখায় ইঙ্গিত করে। সম্পূর্ণ শাখার নাম ব্যবহার করা প্রত্যাশার মতো কাজ করে।
diff
স্থানীয় শাখা এবং দূরবর্তী শাখার মধ্যে আমি কীভাবে দেখতে পারি ?
git diff HEAD origin/HEAD
যা মনে হয়েছিল তার চেয়ে আলাদা একটি দূরবর্তী শাখায় ইঙ্গিত করে। সম্পূর্ণ শাখার নাম ব্যবহার করা প্রত্যাশার মতো কাজ করে।
উত্তর:
রিমোট-ট্র্যাকিং শাখাগুলি আপডেট করতে, আপনাকে git fetch
প্রথমে টাইপ করতে হবে এবং তারপরে:
git diff <masterbranch_path> <remotebranch_path>
আপনি git branch -a
সমস্ত শাখা তালিকাভুক্ত করতে পারেন (স্থানীয় এবং দূরবর্তী) তারপরে তালিকা থেকে শাখার নাম চয়ন করুন (কেবল remotes/
দূরবর্তী শাখার নাম থেকে সরান) ।
উদাহরণ: git diff master origin/master
(যেখানে "মাস্টার" স্থানীয় প্রধান শাখা এবং "উত্স / মাস্টার" হ'ল দূরবর্তী নাম এবং উত্স এবং মাস্টার শাখা))
git fetch
) আনতে হবে
[diff] tool = vscode [difftool] prompt = false [difftool "vscode"] cmd = \"C:\\Program Files (x86)\\Microsoft VS Code\\Code.exe\" \"$LOCAL\" \"$REMOTE\" --diff --wait trustExitCode = false
করুন কোড.এক্সে ফাইলের জন্য আপনার পথটি সঠিক কিনা তা নিশ্চিত করুন।
git diff <local branch> <remote>/<remote branch>
উদাহরণস্বরূপ git diff master origin/master
, বাgit diff featureA origin/next
অবশ্যই করতে আছে বলেন দূরবর্তী-ট্র্যাকিং শাখা আপনি প্রয়োজন git fetch
প্রথম; এবং আপনার এটির দূরবর্তী সংগ্রহস্থলের শাখাগুলি সম্পর্কে আপ টু ডেট তথ্য থাকতে হবে।
git diff <remote>/<remote branch> <local branch>
আমার ধাক্কা দূরবর্তী রেপোতে কী করবে তা দেখার জন্য আমি সাধারণত করি ।
git diff origin
যদি আপনি কেবল আপনার উজানের শাখার সাথে তুলনা করেন তবে এমনকি ছোটও যথেষ্ট।
git fetch
করে শুরুতে যুক্ত করুন, এটি আমার মতো
git diff <remote>/<remote branch> <local branch>
? অন্যথায়, আমি আমার কম্পিউটারে অ্যাডস এবং ডিলিটগুলি স্যুইচ করেছি (গিট সংস্করণ 2.7.0.windows.2)
প্রথম টাইপ
git branch -a
উপলব্ধ শাখার তালিকা পেতে। আউটপুটে আপনি এমন কিছু দেখতে পাবেন
* master
remotes/main/master
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/mt
remotes/upstream/master
remotes/upstream/mt
তারপরে ভিন্নতা প্রদর্শন করুন
git diff --stat --color remotes/main/master..origin/master
git diff remotes/main/master..origin/master
...
চেয়ে হওয়া উচিত নয় ..
?
git log origin/my_branch..
যা HEAD
স্থানীয় রেফ হিসাবে গ্রহণ করবে , যা বেশিরভাগই আপনার অর্থ।
fatal: bad revision
বা এর চেয়ে সামান্য বেশি ফলাফল হয়েছিল fatal: ambiguous argument
। আমি যা চেয়েছিলাম তা অন্য একটি শাখা থেকে একই ফাইলের পার্থক্যটি দেখতে চেয়েছিল, এটি কি খুব বেশি জিজ্ঞাসা করার দরকার ছিল? হ্যাঁ, হ্যাঁ ছিল। :-) git diff remotes/origin/<base branch> <current branch> -- <filename>
গিট 1.8.3.1 এ দুর্দান্ত কাজ করে
আপনি যদি কোনও প্রদত্ত শাখায় রয়েছেন এবং আপনি এটি যে প্রবাহের ট্রাফিকটি ট্র্যাক করছেন তার সাথে তুলনা করতে চান, ব্যবহার করুন
git diff @{upstream}
যদি আপনার উজান সেট না করা থাকে (সাধারণত কেস হয়, মন্তব্যে আরিজুনকে ধন্যবাদ )
git diff @{push}
এই উত্তরের সৌজন্যে, নির্দিষ্টকরণের সংশোধনীগুলির জন্য গিট ডকুমেন্টেশনের রয়েছে:
<branchname>@{upstream}
উদাহরণস্বরূপmaster@{upstream}
, একটি শাখা নাম (সংক্ষিপ্ত ফর্ম )@{u}
এর প্রত্যয়টি সেই শাখাকে বোঝায় যা দ্বারা নির্দিষ্ট করা শাখাটি শীর্ষে নির্মিত ( এবং সাথে কনফিগার করা ) সেট করা হয়েছিল। বর্তমানের জন্য একটি অনুপস্থিত ডিফল্ট।@{upstream}
<branchname>@{u}
branchname
branch.<name>.remote
branch.<name>.merge
branchname
git diff @ @{upstream}
। অতিরিক্তটি @
হ'ল HEAD
, এখন আপনি যেখানে রয়েছেন তাই আপনি HEAD
আপনার শাখার স্রোতটি প্রবাহের সাথে তুলনা করছেন। আপনি @{push}
যে শাখায়
fatal: ambiguous argument '@upstream': unknown revision or path not in the working tree
। git diff @\{upstream\}
পরিবর্তে ব্যবহার করতে হবে। 😥
git fetch
প্রথমে দরকার , অন্যথায় এটি কিছুই করে না, কোনও আউটপুট দেখায় না; রেপো উত্সের কোনও ফাইল মোছার মাধ্যমে পরীক্ষা করে স্থানীয়ভাবে এই কমান্ডটি চালিত হয়েছিল। ..কাজ আনার পরেই।
আমি আরও ভাল আউটপুট বুঝতে পারি:
git diff <remote-tracking branch> <local branch>
এটি আমাকে দেখায় যে আমি স্থানীয় শাখাটি ধাক্কা দিলে কী বাদ যাবে এবং কী যুক্ত করা হবে। অবশ্যই এটি একই, কেবল বিপরীতমুখী, তবে আমার পক্ষে আরও পাঠযোগ্য এবং আমি কী ঘটতে চলেছে তা দেখার জন্য আরও জিজ্ঞাসাবাদী।
সহজ উপায়:
git fetch
git log -p HEAD..FETCH_HEAD
এটি প্রথমে আপনার ডিফল্ট দূরবর্তী (উত্স) থেকে পরিবর্তন আনবে। আপনি কোনও রেপো ক্লোন করলে এটি স্বয়ংক্রিয়ভাবে তৈরি হবে। এছাড়াও আপনি স্পষ্ট হতে পারে: git fetch origin master
।
তারপরে গিট লগটি আপনার বর্তমান শাখাকে সবেমাত্র প্রাপ্তের সাথে তুলনা করতে ব্যবহার করা হবে। ( -p
(প্যাচ উত্পন্ন করুন) বিকল্পটি পার্থক্য দেখায় ))
এইভাবেই আমি এটি করি।
#To update your local.
git fetch --all
এটি রিমোট থেকে সমস্ত কিছু এনে দেবে, সুতরাং আপনি যখন পার্থক্য পরীক্ষা করবেন তখন এটি দূরবর্তী শাখার সাথে পার্থক্যটির তুলনা করবে।
#to list all branches
git branch -a
উপরের কমান্ডটি সমস্ত শাখা প্রদর্শন করবে।
#to go to the branch you want to check difference
git checkout <branch_name>
#to check on which branch you are in, use
git branch
(or)
git status
এখন, আপনি নিম্নলিখিত হিসাবে পার্থক্য পরীক্ষা করতে পারেন।
git diff origin/<branch_name>
এটি আপনার স্থানীয় শাখাকে দূরবর্তী শাখার সাথে তুলনা করবে
আপনার কার্যকারী শাখাটি বিকাশ লাভ করুন এবং স্থানীয় উন্নয়ন শাখা এবং দূরবর্তী উন্নয়ন শাখার মধ্যে পার্থক্য রাখতে চান, সেই ক্ষেত্রে সিনট্যাক্সের মতো হওয়া উচিত git diff remotes/origin/development..development
বা
git fetch origin
git diff origin/development
tl; dr :git diff <local branch> <remote branch>
শেলটিতে গিট ব্যবহার করার সময়, আমি প্রথমে চারপাশে তাকিয়ে নিজেকে ওরিয়েন্টেড করতে পছন্দ করি। সমস্ত শাখা দেখানোর জন্য এখানে একটি আদেশ রয়েছে
$ git branch -a # (or git branch --all)
* my-branch
master
remotes/origin/some-branch
remotes/origin/HEAD -> origin/master
remotes/origin/my-branch
remotes/origin/some-other-branch
remotes/origin/master
এখানে আমি দুটি স্থানীয় শাখা (আছে my-branch
এবং master
দূরবর্তী) এবং 4 ( some-branch
, some-other-branch
, master
, এবং my-branch
)।
এছাড়াও, তারকাচিহ্নটি এই my-branch
সংকেত দেয় যে আমি বর্তমানে branch শাখায় রয়েছি (আপনিও জানতেন যে git status
আউটপুট হবে এমন কমান্ডটি ব্যবহার করে On branch my-branch.
)।
দ্রষ্টব্য: গিট ব্যাশ শেলের দূরবর্তী শাখাগুলি লাল দেখানো হয়েছে এবং স্থানীয়গুলি সবুজতে দেখানো হয়েছে।
যদি আপনি কেবল দূরবর্তী শাখাগুলি দেখাতে চান :
$ git branch -r # (or git branch --remotes)
origin/some-branch
origin/HEAD -> origin/master
origin/my-branch
origin/some-other-branch
origin/master
কেবল স্থানীয় শাখা দেখানোর জন্য আপনাকে ব্যবহার করতে প্ররোচিত হতে পারে git branch -l
তবে এটি সম্পূর্ণ আলাদা কমান্ড। স্থানীয় শাখাগুলিgit branch
কোনও বিকল্প ছাড়াই ব্যবহার করতে দেখায়
$ git branch
* my-branch
master
মৌলিক শাখা বিকল্পগুলির একটি পর্যালোচনা সম্পূর্ণ করার --list
জন্য আপনার প্রত্যাশার বিপরীতে ফিল্টারিংয়ের অনুমতি রয়েছে । এটি এর মতো একটি প্যাটার্ন সহ ব্যবহার করুন:
$ git branch --list 'my*'
* my-branch
আপনি --list
বিকল্পগুলির সাথে একত্রিত করতে পারেন -a
এবং -r
সে অনুযায়ী আপনার প্যাটার্নটি খাপ খাইয়ে নেওয়ার বিষয়টি নিশ্চিত করুন ( মনে রাখবেন: দূরবর্তী শাখাগুলি "রিমোটগুলি" দিয়ে শুরু হয় )। উদাহরণ:
# this will show all branches (local & remote) that start with my
$ git branch --list 'my*' -a
* my-branch
# better: the pattern includes the remote
$ git branch --list '*my*' -a
* my-branch
remotes/origin/my-branch
দস্তাবেজ: https://git-scm.com/docs/git- ব্র্যাঞ্চ
এখন আপনি উপলভ্য সমস্তগুলি থেকে যে কোনও দুটি শাখা তুলনা করতে পারবেন (আপনি দুটি স্থানীয় বা দুটি রিমোটও তুলনা করতে পারেন)।
এখানে আমি স্থানীয়টির সাথে রিমোটের সাথে তুলনা করছি my-branch
, তারা সিঙ্ক্রোনাইজ হয়েছে যাতে কোনও আউটপুট না পাই:
$ git diff my-branch remotes/origin/my-branch
দ্রষ্টব্য: আপনাকে কোন উক্তির চিহ্ন সহ শাখার পুরো নাম দিতে হবে।
আমি স্থানীয়কে my-branch
দূরবর্তী থেকেও তুলনা করতে পারি master
। এখানে আমি কিছু আউটপুট পাই কারণ রিমোটটি my-branch
মাস্টার শাখায় একীভূত হয়নি।
$ git diff my-branch remotes/origin/master
diff --git a/src/controllers/call.controller.js b/src/controllers/call.controller.js
index fd79b98..df3d798 100644
--- a/src/controllers/call.controller.js
+++ b/src/controllers/call.controller.js
@@ -261,7 +261,7 @@ function callController() {
/*
* Function: doCall
[ . . . ]
আপনি পার্থক্য দেখতে চান শুধু ফাইলের নাম তারপর ব্যবহার পরিবর্তিত হয়েছে:
git diff --name-status <remote-branch> <local-branch>
,
অন্য এই দুটি শাখা মধ্যে সব পার্থক্য দেখাতে হবে:
git diff <remote-branch> <local-branch>
আপনি যদি আপনার বর্তমান শাখা এবং আপনি যা চান তার সাথে তুলনা করছেন তবে এখানে একটি সংক্ষিপ্ত উত্তর দেওয়া হয়েছে git pull
।
git fetch
git diff FETCH_HEAD
প্রথম কমান্ডটি সনাক্ত করবে যে কোন দূরবর্তী শাখাটি আপনার বর্তমান শাখার সাথে সম্পর্কিত। FETCH_HEAD
রেফারেন্সে সেই গণনার একটি নিদর্শন । তারপরে দ্বিতীয় কমান্ডটি আপনার বর্তমান শাখার তুলনায় বনাম সেই রেফারেন্সটি ব্যবহার করে।
আমি জানি যে ইতিমধ্যে এই প্রশ্নের বেশ কয়েকটি উত্তর রয়েছে তবে তাদের বেশিরভাগ চেষ্টা করার সময় আমি একটি অদ্ভুত ত্রুটি পেয়েছি।
আমার ক্ষেত্রে আমি আছে একটি দ্বিতীয় দূরবর্তী নামক heroku
যে নাorigin
এবং কারণ এটি সিঙ্ক আমি চালানোর চেষ্টা এই ত্রুটিটি পেয়েছিলেন ছিল না git diff master heroku/master
:
fatal: ambiguous argument 'heroku/master': unknown revision or path not in the working tree.
বা এটি অন্য পদ্ধতির চেষ্টা করার সময় git diff master..heroku/master
:
fatal: bad revision 'master..heroku/master'
সমাধানটি আমার ক্ষেত্রে git fetch
চালানোর আগে সুস্পষ্টভাবে দূরবর্তী নামটি উল্লেখ করেছিল git diff
:
$ git fetch heroku
$ git diff master heroku/master
আশা করি এটি অন্যদের এই একই সমস্যাটিতে সহায়তা করবে।
git difftool <commit> .
এটি আপনার স্থানীয় ফাইলগুলির সাথে আপনি যে প্রতিশ্রুতি চান তা তুলনা করবে। শেষ পর্যন্ত বিন্দুটি ভুলে যাবেন না (স্থানীয়দের জন্য)।
উদাহরণস্বরূপ, কিছু স্থানীয় প্রতিশ্রুতিবদ্ধ সঙ্গে আপনার স্থানীয় ফাইল তুলনা:
গিট ডিফ্টল 1db1ef2490733c1877ad0fb5e8536d2935566341।
(এবং নতুন কমিটের সাথে তুলনা করার প্রয়োজন না হলে আপনার গিট আনার দরকার নেই)
উদাহরণ
git diff 'master' 'testlocalBranch'
আপনি যদি ওয়েবস্টর্মের মতো সম্পাদক ব্যবহার করছেন তবে আপনি শাখার সাথে তুলনা করে ফাইল নির্বাচন করতে ডান ক্লিক করতে পারেন এবং আপনার শাখাটি টাইপ / নির্বাচন করতে পারেন।
ভিএস 2019 সালে, কেবল কোডটি টানবেন না ET
এটাই আমি করেছি। .Gitconfig ফাইলের নিচে যুক্ত করা হয়েছে যাতে আমি তুলনার বাইরে ব্যবহার করতে পারি
File location: C:\Users\[username]\.gitconfig
নীচে যুক্ত করা হয়েছে
[diff]
tool = bc
[difftool "bc"]
path = c:/Program Files/Beyond Compare 4/bcomp.exe
কমান্ড প্রম্পট ওপেন করুন এবং ওয়ার্কিং ডিরেক্টরিতে যান। আমি স্থানীয় ডিইভি শাখাটিকে দূরবর্তী ডিইভি শাখার সাথে তুলনা করার জন্য নীচে দিয়েছি
git difftool dev origin/dev --dir-diff
এটি বিয়ন্ডের তুলনায় ওপেন হবে এবং ডিরেক্টরিগুলির মধ্যে পৃথক পৃথক ফাইল রয়েছে। তুলনা ছাড়িয়ে কোনও পরিবর্তন না হলে লঞ্চ হবে না।
আমি অবাক হয়েছি যে আমার মাস্টার শাখায় কোনও পরিবর্তন আছে ...
গিট চেকআউট মাস্টার
গিট স্ট্যাটাস
গিট শাখা -a
- মাস্টার
রিমোটস / উত্স / মাস্টার
গিট ডিফারেন্স উত্স / মাস্টার
git config alias.udiff 'diff @{u}'
git fetch # Do this if you want to compare with the network state of upstream; if the current local state is enough, you can skip this
git udiff
এটি আপনার শিরোনামের প্রশ্নের উত্তর দেয় ("এর দূরবর্তী"); যদি আপনি "একটি রিমোট" (যা শাখার জন্য প্রবাহ হিসাবে কনফিগার করা হয় না) এর বিপরীতে আলাদা করতে চান, আপনাকে সরাসরি এটি লক্ষ্য করতে হবে। নিম্নলিখিতগুলির সাথে আপনি সমস্ত প্রত্যন্ত শাখা দেখতে পাবেন:
git branch -r
আপনি নিম্নলিখিতটি দিয়ে সমস্ত কনফিগার করা রিমোট দেখতে পাচ্ছেন:
git remote show
আপনি একক দূরবর্তী (যেমন উত্স) এর জন্য শাখা / ট্র্যাকিং কনফিগারেশনটি দেখতে পারেন:
git remote show origin
একবার আপনি উপযুক্ত উত্সের শাখা নির্ধারণ করার পরে, কেবল একটি সাধারণ পার্থক্য করুন :)
git diff [MY_LOCAL] MY_REMOTE_BRANCH
এটি বেশ সহজ। তুমি ব্যবহার করতে পার:git diff remote/my_topic_branch my_topic_branch
কোথায় my_topic_branch
আপনার বিষয় শাখা।
চেষ্টা করে দেখুন:
git diff origin HEAD
ধরে নিচ্ছি যে আপনি বর্তমান স্থানীয় শাখার উত্সটির HEAD
বিপরীতে আলাদা করতে চান । এবং ধরে নিচ্ছি আপনি স্থানীয় শাখায় রয়েছেন। :)
আপনি যদি টর্টোজাইজিট ব্যবহার করেন (এটি গিটকে জিইউআই সরবরাহ করে), আপনি আপনার গিট রেপো ফোল্ডারটি ডানদিকে ক্লিক করতে পারেন তারপরে ক্লিক করুন Git Sync
।
আপনি নির্বাচিত না হলে তুলনা করতে আপনার শাখা নির্বাচন করতে পারেন। আপনি পার্থক্য প্রতিশ্রুতিবদ্ধ তুলনায় দেখতে পারেন। Compare with previous revision
পার্থক্য পাশাপাশি পাশাপাশি দেখতে আপনি যে কোনও প্রতিশ্রুতিতে ডান ক্লিক করতে পারেন ।