গিট - বর্তমান শাখার শর্টকাট পুশ করুন


363

গিটকে বর্তমান ট্র্যাকিং শাখাকে উত্সাহিত করতে বলার জন্য কি একটি শর্টকাট আছে?
দ্রষ্টব্য: আমি জানি যে আমি ডিফল্ট পুশ আচরণটি পরিবর্তন করতে পারি তবে আমি এমন একটি অ্যাড-হক সমাধান খুঁজছি যা ডিফল্ট আচরণ পরিবর্তন করে না।

উদাহরণস্বরূপ, ধরুন আমি যে শাখায় রয়েছি feature/123-sandbox-testsআমি তা ব্যবহার করব

git push origin feature/123-sandbox-tests

যা ক্লান্তিকর। আমি একটি শর্টকাট খুঁজছি, এরকম কিছু

git push origin current

যেখানে গিট জানে যে স্রোত বর্তমান feature/123-sandbox-tests


সম্পাদনা : 2.0 সংস্করণ থেকে শুরু করে, গিটের ডিফল্ট আচরণটি আরও স্বজ্ঞাত আচরণে পরিবর্তিত হয়েছে, যা আমি অর্জন করতে চেয়েছিলাম। বিস্তারিত জানার জন্য এই তাই প্রশ্ন দেখুন ।

সম্পাদনা 2 : সেটিংটকের উত্তরটি সেরা উত্তর কারণ এটি সেটিংস নির্বিশেষে বর্তমান শাখাকে ধাক্কা দিতে দেয়।

উত্তর:


701

git pushডকুমেন্টেশন অনুযায়ী :

git push origin HEAD
    A handy way to push the current branch to the same name on the remote.

সুতরাং আমি আপনার যা প্রয়োজন তা মনে করি git push origin HEAD। এছাড়াও git push -u origin HEADআপনি যদি ইতিমধ্যে উত্সটির দিকে ধাক্কা না দিয়ে থাকেন তবে স্থানীয় শাখায় আপ স্ট্রিম ট্র্যাকিং তথ্য সেটআপ করা কার্যকর হতে পারে ।


11
আমি সাধারন বা বর্তমানের তুলনায় push.default সেট করার চেয়ে এটি পছন্দ করি কারণ বিভিন্ন মেশিনে বিভিন্ন সেটিংস থাকতে পারে। আপনি git pushকেবলমাত্র বর্তমান শাখাটি পুশ করতে অভ্যস্ত হতে পারেন, তবে অন্যান্য মেশিনে, আপনি দুর্ঘটনাক্রমে সমস্ত মিলে যাওয়া শাখাগুলি ধাক্কা দিতে পারেন।
উইসবাকি

1
@ উইসবাকি আমার বেশ কয়েকটি উপাধি রয়েছে যার মধ্যে রয়েছে co, তাই যদি আমি ~/.gitconfigভিএম-তে আমার ফাইল ছাড়াই নীচে টানতে এবং তারপরে কোডটি পরীক্ষা করার চেষ্টা করি তবে আমি তা অবিলম্বে জানব। এটি আমাকে পুশ ডিফল্ট এ পরিবর্তন করতে বেশ নিরাপদ বোধ করতে দেয় upstream
ড্যামন

9
আকর্ষণীয় যে এটি ঠিক সঙ্গে কাজ করে না @, যা একটি বৈধ নাম হিসাবে ডকুমেন্টেড হয় HEAD। (যেমন git push -u origin @)
void.pointer

196

নিম্নলিখিত কমান্ডটি ব্যবহার করে আপনি বর্তমান ব্রাঞ্চে চাপ দিতে গিটটি কনফিগার করতে পারেন

git config --global push.default current

তাহলে ঠিক আছে

git push 

এটি আপনার বর্তমান শাখায় কোডটি চাপ দেবে।


push = refs/heads/current:refs/for/master/current.Git / কনফিগারেশনে কোনও 'রিমোট' বিভাগে যুক্ত করার অর্থ কী? অর্থাৎ 'কারেন্ট' এখানে কি বিশেষ শব্দ? নাকি এটি "কারেন্ট" নামক একটি শাখা অনুসন্ধান করবে?
ডেভিড ডরিয়া

6
@ ডেভিডডোরিয়া 'কারেন্ট' এখানে একটি শাখা নয়।
মহেশ

git push -u origin feature_branch_nameআপস্ট্রিম / ট্র্যাকিং সেটআপ করতে সেরা কাজ ! আপনি যদি কমপক্ষে রিমোট রিপোজিটরি ব্যবহার করেন।
ফ্লোর

40

"গিট পুশ" এর ডিফল্ট আচরণে কোনও শাখা নির্দিষ্ট না করে আপনার একইরকম প্রশ্নের দিকে নজর দেওয়া উচিত

মূলত এটি ব্যাখ্যা করে যে কীভাবে আপনার বর্তমান শাখাকে স্রেফ কার্যকর করে ধাক্কা দিতে ডিফল্ট আচরণ সেট করতে হয় git push। সম্ভবত আপনার যা প্রয়োজন তা হ'ল:

git config --global push.default current

অন্যান্য অপশন:

  • কিছুই না : কিছুতেই চাপ দেবেন না
  • মিল : সমস্ত মিলেছে শাখা পুশ
  • আপস্ট्रीम / ট্র্যাকিং : বর্তমান শাখাটিকে ট্র্যাকিং যা আছে তাতে চাপ দিন
  • কারেন্ট : বর্তমান শাখা পুশ করুন

11

আমি আমার .bashrc কনফিগারেশনে এ জাতীয় উপনাম ব্যবহার করি

alias gpb='git push origin `git rev-parse --abbrev-ref HEAD`'

কমান্ডে $gpbএটি বর্তমান শাখার নাম নেয় এবং এটি উত্সকে ঠেলে দেয়।

এখানে আমার অন্যান্য উপাত্তগুলি রয়েছে:

alias gst='git status'
alias gbr='git branch'
alias gca='git commit -am'
alias gco='git checkout'

8

এটি মূল্যবান জন্য, চূড়ান্ত শর্টকাট:

আমার মধ্যে .bash_profileরয়েছে alias push="git push origin HEAD", তাই যখনই আমি টাইপ pushকরি আমি জানি আমি যে বর্তমান শাখায় চলেছি তা চালিয়ে যাচ্ছি।


6

আপনি যদি গিট 1.7.x ব্যবহার করে থাকেন তবে দূরবর্তী ট্র্যাকিং শাখা সেট করতে আপনি নিম্নলিখিত কমান্ডটি চালাতে পারেন।

git branch --set-upstream feature/123-sandbox-tests origin/feature/123-sandbox-tests

তারপরে আপনি সহজেই git pushসমস্ত পরিবর্তনগুলি ধাক্কা দিতে ব্যবহার করতে পারেন । আরও সম্পূর্ণ উত্তরের জন্য, দয়া করে এখানে অনুরূপ প্রশ্নের স্বীকৃত উত্তর দেখুন

আপনি যদি কেবল বর্তমান শাখাকে পুশ কমান্ড দিয়ে চাপতে চান তবে আপনি পুশ আচরণটি উজানের দিকে পরিবর্তন করতে পারেন:

git config --global push.default upstream

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

আমি উত্তরটি পরিবর্তন করেছি, দয়া করে লিঙ্কটি দেখুন, উত্তরটি আরও সম্পূর্ণ।
ফারুক সাহিন

আবার, সমস্যাটি হ'ল সমস্ত শাখাগুলি ট্র্যাকিংকারী শাখাগুলিকে সেভাবে ঠেলে দেওয়া হচ্ছে। আমি আমার প্রশ্নে যেমন লিখেছি যে শাখাটি প্রথমে একটি ট্র্যাক করা শাখা, সুতরাং আমি মনে করি যে আপনি প্রস্তাবিত প্রবাহিত শাখা নির্ধারণ করা অপ্রয়োজনীয়। নাকি আমি ভুল করছি?
এলাদ

তারপরে আপনি গিট পুশ আচরণটি পরিবর্তন করে কেবল বর্তমান শাখাকে ধাক্কা দিতে গিটটি কনফিগার করতে পারেন। git config --global push.default upstreamকেবলমাত্র বর্তমান শাখাকে ধাক্কা দেওয়ার জন্য পুশ আচরণটি সেট করবে।
ফারুক সাহিন

5

সহজতম উপায়: git push -u origin feature/123-sandbox-testsএকবার চালান । এটি শাখাকে আপনি যেভাবে করতে ব্যবহার করছেন সেভাবে ধাক্কা দেয় এবং আপনার স্থানীয় কনফিগারেশনে প্রবাহের ট্র্যাকিংয়ের তথ্যও সেট করে। এর পরে, আপনি কেবল git pushট্র্যাক করা শাখাগুলিকে তাদের উজানের দূরবর্তী (গুলি) এ ঠেলাতে পারেন।

branch.<branch name>.mergeদূরবর্তী শাখার নাম (আপনার ক্ষেত্রে স্থানীয় নামের মতো) এবং ally branch.<branch name>.remoteচ্ছিকভাবে আপনি যে রিমোটটির কাছে চাপ দিতে চান তার নামে (মূলতে পূর্বনির্ধারিত) সেট করে আপনি নিজেই কনফিগারেশনে এটি করতে পারেন। আপনি যদি আপনার কনফিগারটিতে সন্ধান করেন তবে ইতিমধ্যে সম্ভবত এর মধ্যে একটির সেট রয়েছে masterতাই আপনি সেই উদাহরণটি অনুসরণ করতে পারেন।

অবশেষে, নিশ্চিত হয়ে নিন যে আপনি push.defaultসেটিংটি বিবেচনা করছেন । এটি "মিলছে" -এ ডিফল্ট, যার অনাকাঙ্ক্ষিত এবং অপ্রত্যাশিত ফলাফল থাকতে পারে। আমি জানি বেশিরভাগ লোকেরা "উজানের" আরও স্বজ্ঞাত, যা কেবলমাত্র বর্তমান শাখাকে ঠেলে দেয়।

এই প্রতিটি সেটিংসের বিশদটি গিট-কনফিগার ম্যান পৃষ্ঠাতে পাওয়া যাবে

দ্বিতীয় ভাবার বিষয়ে, আপনার প্রশ্নটি পুনরায় পড়ার পরে, আমি মনে করি আপনি এই সমস্ত জানেন। আমি মনে করি আপনি আসলে যা খুঁজছেন তার অস্তিত্ব নেই। বাশ ফাংশন সম্পর্কে কীভাবে এমন কিছু (অনির্ধারিত):

function pushCurrent {
  git config push.default upstream
  git push
  git config push.default matching
}

1

সেজটকোর উত্তরের সাহায্যে আমি আমার জীবনকে আরও সহজ করার জন্য এই ছোট সহায়ক সহায়ক ফাংশনটি লিখেছি:

function gpu()
{
    if git rev-parse --abbrev-ref --symbolic-full-name @{u} > /dev/null 2>&1; then
        git push origin HEAD
    else
        git push -u origin HEAD
    fi
}

এটি বর্তমান শাখাকে উত্সতে ঠেলা দেয় এবং এটি এখনও সেটআপ না করা থাকলে দূরবর্তী ট্র্যাকিং শাখা সেট করে।

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