বিকেন্দ্রীভূত কর্মপ্রবাহের জন্য গিটের মধ্যে "সিম্পল" বনাম "কারেন্ট" পুশ। ডিফল্ট


121

কার্যকরীভাবে বলতে গেলে, একটি বিকেন্দ্রীভূত কর্মপ্রবাহে, আমি কনফিগার সেটিংসের জন্য simpleএবং currentবিকল্পগুলির মধ্যে পার্থক্য দেখতে পাচ্ছি না push.default

currentবর্তমান ব্রাঞ্চটি নির্দিষ্ট দূরবর্তীস্থলে একটি নামযুক্ত শাখায় চাপ দেবে। simpleবর্তমান শাখার জন্য ট্র্যাক করা এবং যেকোন ট্রেড ছাড়ানো দূরবর্তী উভয়ের জন্য কার্যকরভাবে একই কাজ করবে (এটি উভয় ক্ষেত্রে অভিন্ন শাখার নাম প্রয়োগ করে)।

আমি যে অনুপস্থিত তা বিকেন্দ্রীভূত কর্মপ্রবাহের জন্য কেউ দুজনের মধ্যে কোনও গুরুত্বপূর্ণ পার্থক্য ব্যাখ্যা করতে পারে?



2
@ ট্রেভর - এটি আমার প্রশ্নের সাথে মোটেই সম্পর্কিত নয়।
void.pointer

উত্তর:


184

পার্থক্যটি হ'ল simple, git push(একটি রেসপেক ছাড়াই) ব্যর্থ হবে যদি বর্তমান শাখাটি একটি দূরবর্তী উজানের শাখা ট্র্যাক না করে (এমনকি একই নামে একটি শাখাও রিমোটে বিদ্যমান থাকে):

$ git checkout -b foo
Switched to a new branch 'foo'

$ git config push.default simple
$ git push
fatal: The current branch foo has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin foo

অন্যদিকে, currentবর্তমান শাখাটি একটি প্রবাহকে ট্র্যাক করে কিনা তা নিয়ে চিন্তা করে না, এটি কেবল একই নামের যে কোনও শাখায় ঠেলাঠেলি করতে চায়:

$ git config push.default current
$ git push
Total 0 (delta 0), reused 0 (delta 0)
To /Documents/GitHub/bare
 * [new branch]      foo-> foo

ডকুমেন্টেশন

থেকে গীত কনফিগারেশন ডকুমেন্টেশন :

  • upstream - বর্তমান শাখাটিকে তার উজানের শাখায় চাপ দিন ...

  • simple - উজানের মতো, তবে প্রবাহ শাখার নাম যদি স্থানীয় থেকে আলাদা হয় তবে চাপ দিতে রাজি হন না ...

  • current - বর্তমান শাখাকে একই নামের একটি শাখায় ঠেলাও।


4
আমার অনুমান একমাত্র "বোনাস" প্রশ্নটি "কেন"। আমি অনুমান করি যে একটি প্রবাহের ট্র্যাকিং শাখাটি ভুলগুলি মুছে ফেলতে বাধ্য করে (দুর্ঘটনাক্রমে ভুল শাখার উপরের সেই শাখাটি ওভাররাইট করা)।
void.pointer

7
সহজ বলে মনে হচ্ছে নিরাপদ "আসন বেল্ট" বিকল্প।
জোনাথন

2
দীর্ঘ সময় পরে আমার নিজের প্রশ্নে পুনর্বিবেচনা :-) currentকোন রিমোটটি বেছে নেবেন তা কীভাবে জানবেন? আপনার যদি কোনও ট্র্যাকিং শাখা সেট না থাকে তবে এটি কোথায় ঠেলে দেয়?
void.pointer

2
এটি ডিফল্ট দূরবর্তীটিতে ধাক্কা দেয় -> এর অর্থ উত্স। ম্যান গিট-পুশ থেকে: কমান্ড লাইনটি <repository> আর্গুমেন্ট, শাখা দিয়ে কোথায় ধাক্কা দেবে তা নির্দিষ্ট করে না branch যদি কনফিগারেশনটি অনুপস্থিত থাকে তবে এটি ডিফল্ট হয়।
reegnz

2
আমি একেবারে কোনও সমস্যা না করে বছরের জন্য সর্বদা 'কারেন্ট' ব্যবহার করেছি। বেশিরভাগ ক্ষেত্রে এটি কাজ করে: একটি রেপোতে টান / ঠেলাঠেলি, নতুন শাখা তৈরি করা বা বিদ্যমান শাখাগুলি পরীক্ষা করা যেখানে নামকরণের বিরোধগুলি অসম্ভব। শুধু কাজ করে, কোনও সমস্যা নেই। এটি ডিফল্ট হওয়া উচিত না (যেহেতু এটি অনিরাপদ) তবে ধার্মিকতার জন্য এটি বিদ্যমান।
trisweb

10

পার্থক্যটি হ'ল simpleতার ট্র্যাকিং শাখায় ধাক্কা লেগে থাকে যদি এর একই নাম থাকে তবে currentঅন্য কোনও ট্র্যাকিং শাখা নির্বিশেষে একই নামের একটি শাখায় ঠেলে দেবে:

$ git branch -vvv
  master 58d9fdc [origin/master: ahead 1] t1 bobo
* new    37132d3 [origin/save: ahead 1] t1 bibi   # <- tracking branch 'save'

$ git -c push.default=current push                # <- set `push.default=current`
Counting objects: 3, done.
Writing objects: 100% (3/3), 234 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To /home/jthill/sandbox/20/t1
 * [new branch]      new -> new                   # <- and push creates `new` 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.