গিট দ্বারা মাস্টারকে একটি নতুন শাখায় অনির্দিষ্ট পরিবর্তন করা Put


উত্তর:


151

আপনি কেবল পরীক্ষা শাখায় চেকআউট করতে পারেন এবং তারপরে প্রতিশ্রুতিবদ্ধ। অন্য শাখায় যাওয়ার সময় আপনি আপনার আপত্তিজনক পরিবর্তনগুলি হারাবেন না।

ধরুন আপনি মাস্টার শাখায় রয়েছেন:

git checkout test
git add .
git add deletedFile1
git add deletedFile2
...
git commit -m "My Custom Message"

মুছে ফেলা ফাইলগুলি সম্পর্কে আমি সত্যই নিশ্চিত নই তবে আমার ধারণা আপনি যখন ব্যবহার করবেন তখন সেগুলি অন্তর্ভুক্ত নয় git add .


12
কখনও কখনও চেকআউট ব্যর্থ হয়ে যায় কারণ আপনার পরিবর্তনগুলি সেই শাখার সাথে বিরোধ করে। আপনি একত্রিত করার জন্য চেকআউট-এম চেষ্টা করতে পারেন।
Jouni K. Seppänen

2
আমি এটি চেষ্টা করেছি কিন্তু আমি একটি ত্রুটি পেয়েছি: ত্রুটি: নিম্নলিখিত ফাইলগুলিতে আপনার স্থানীয় পরিবর্তনগুলি চেকআউট দ্বারা ওভাররাইট করা হবে। দয়া করে, আপনার পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ করুন বা শাখাগুলি স্যুইচ করার আগে তাদের স্ট্যাশ করুন।
ishwr

এটি কাজ করবে এমন সময়, উত্তর যা স্ট্যাশ ব্যবহার করে তা পছন্দ করা উচিত, আইএমও। সম্ভবত কেবল ব্যক্তিগত পছন্দ, তবে এটি একটি ক্লিনার ওয়ার্কফ্লো, যৌক্তিকভাবে এবং স্ট্যাশকে উপস্থাপন করে যা একটি দরকারী কমান্ড।
প্যাট্রিক

"-B" বিকল্পটি অনুপস্থিত, যেমন শিরোনামটি পরামর্শ দেয় যে প্রশ্নটি একটি "নতুন" শাখা সম্পর্কিত।
গুনট্রাম

195

এছাড়াও আপনি একটি নতুন শাখা তৈরি করতে এবং এটি করে এটিতে যেতে পারেন:

git checkout -b new_branch
git add .

আমি এটি সর্বদা ব্যবহার করি কারণ কোড সম্পাদনা শুরু করার আগে আমি একটি নতুন শাখা শুরু করতে সর্বদা ভুলে যাই।


3
@ জৌনি অন্যান্য উত্তরের জন্য উল্লিখিত একই সমস্যাটি - অতিরিক্ত পরিবর্তনগুলি মূল পরিবর্তনের সাথে বিরোধিত হলে আপনি শাখাটি আবার মাস্টারে মার্জ করতে অসুবিধাতে পারেন। : আইএমও এই থ্রেড ভাল প্রশ্নের উত্তর stackoverflow.com/questions/556923/...
jpw

সংক্ষিপ্ত, মিষ্টি এবং আশ্বাস ... "আমি এটি সব সময় ব্যবহার করি ..."
εδιϲমাεδιϲ

1
নতুন_বাঞ্চে প্রতিশ্রুতিবদ্ধ করতে ভুলবেন না। আপনি যদি মাস্টার শাখায় ফিরে যান এবং পরিবর্তিত ফাইলগুলি আবার ফিরিয়ে দেন তবে আপনি সেগুলিও নতুন_বাঞ্চে হারাবেন।
পেটরসিন

36

কেন কেবল গিট স্ট্যাশ ব্যবহার করবেন না। আমি মনে করি এটি অনুলিপিটি অনুলিপি এবং অনুলিপি মত।

$ git branch
  develop
* master
  feature1
  TEST
$

আপনার বর্তমান শাখায় কিছু ফাইল রয়েছে যা আপনি স্থানান্তর করতে চান।

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#      modified:   awesome.py
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#
#      modified:   linez.py
#
$
$ git stash
Saved working directory and index state \
  "WIP on master: 934beef added the index file"
HEAD is now at 934beef added the index file
(To restore them type "git stash apply")
$
$ git status
# On branch master
nothing to commit (working directory clean)
$
$
$ git stash list
stash@{0}: WIP on master: 934beef ...great changes
$

অন্য শাখায় সরান।

$ git checkout TEST

এবং আবেদন করুন

$ git stash apply
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#
#      modified:   awesome.py
#      modified:   linez.py
#

আমি এটিও পছন্দ করি git stashকারণ আমি ব্যবহার করি git flow, যা আপনি যখন আপনার ওয়ার্কিং ডিরেক্টরিতে পরিবর্তন করেও কোনও বৈশিষ্ট্য শাখা শেষ করতে চান তখন অভিযোগ করে ।

@ মাইক বেথানির মতোই, আমার সর্বদা এটি ঘটে কারণ আমি এখনও অন্য একটি শাখায় ভুলে গিয়ে একটি নতুন সমস্যা নিয়ে কাজ করি। তাই আপনি পারেন আপনার কাজ git flow feature finish..., এবং git stash applyনতুন git flow feature start ...শাখায় স্ট্যাশ


2
git stashঅনির্দিষ্ট পরিবর্তনের সাথে ডিল করার আমার পছন্দের উপায়। আপনি অবশ্যই এটি কেটে পেস্ট হিসাবে ভাবেন এটি অবশ্যই একটি স্বজ্ঞাত পদ্ধতি method
ম্যাথু মিচেল

এটি আমার কাছে একটি ভাল পদ্ধতির বলে মনে হচ্ছে। এটি কোনও সমস্যা ছাড়াই কাজ করেছে।
ইউনূস নেদিম মেহেল

আপনি এটি করতে পারেন তা জানতেন না এবং এটি দুর্দান্তভাবে কাজ করেছিল। অন্যান্য পদ্ধতির তুলনায় কিছুটা স্বজ্ঞাত মনে হয়।
গ্লুকন

আমি মনে করি গিট চেকআউট এবং তারপরে যুক্ত করার পরিবর্তে এটি আরও পেশাদার উপায়ে স্ট্যাশিং করা। আমি মনে করি আপনার উত্তরটি 100+ ভোট হওয়া উচিত।
মাতরোসভ আলেকজান্ডার

1
@ Καrτhικgit stash --include-untracked
2:55

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