আমি শাখাগুলি স্যুইচ করার সময় গিট কেন আমার পরিবর্তনগুলি দেখিয়ে রাখে (সংশোধিত, সংযুক্ত ফাইলগুলি, মুছে ফেলা ফাইলগুলি) আমি গিট অ্যাড চালাচ্ছি বা না তা বিচার্য নয়?


115

আমি গিটে সত্যিই নতুন এবং আমি বুঝতে চেষ্টা করেছি যে আমি যখন অন্য শাখায় একটি শাখায় যা কিছু পরিবর্তন করেছি সেগুলি কেন গিট দেখায় যখন আমি শাখাগুলির মধ্যে স্যুইচ করার জন্য গিট চেকআউট চালাচ্ছি প্রথমে আমি গিট অ্যাড ব্যবহার না করে চেষ্টা করি না didn't যাইহোক, আমি তখন গিট অ্যাড ব্যবহার করে চেষ্টা করেছি, তবে সমস্যাটি সমাধান করে নি। আমি এখনও গিট কমিট ব্যবহার করছি না।

এটি মূলত আমি যা করছি:

$ git clone <a_repository>  
$ git branch  
* master  
$ git branch testing  
$ git checkout testing  
...edit a file, add a new one, delete...  
$ git status  
    # On branch testing  
    # Changed but not updated:  
    #   (use "git add/rm <file>..." to update what will be committed)  
    #   (use "git checkout -- <file>..." to discard changes in working directory)  
    #  
    #       deleted:    file1.txt  
    #  
    # Untracked files:  
    #   (use "git add <file>..." to include in what will be committed)  
    #  
    #       file2.txt  
no changes added to commit (use "git add" and/or "git commit -a")  
$ git branch  
  master  
* testing  
$ git checkout master  
D       file1.txt  
Switched to branch 'master'  
$ git status  
    # On branch master  
    # Changed but not updated:  
    #   (use "git add/rm <file>..." to update what will be committed)  
    #   (use "git checkout -- <file>..." to discard changes in working directory)  
    #  
    #       deleted:    file1.txt  
    #  
    # Untracked files:  
    #   (use "git add <file>..." to include in what will be committed)  
    #  
    #       file2.txt  
no changes added to commit (use "git add" and/or "git commit -a")  

আমি ভেবেছিলাম যে, শাখাগুলি ব্যবহার করার সময়, আপনি একটি শাখায় যা কিছু করুন না কেন, এটি অন্যান্য সমস্ত শাখায় অদৃশ্য। শাখা তৈরির কারণ কি তা নয়?

আমি "গিট অ্যাড" ব্যবহার করার চেষ্টা করেছি তবে পরিবর্তনগুলি উভয় শাখায় দৃশ্যমান। এড়াতে শাখাগুলির মধ্যে স্যুইচ করার আগে আমার কি "গিট কমিট" চালানো দরকার?

উত্তর:


142

শাখাগুলি স্যুইচ করা আপনার সাথে অনিচ্ছাকৃত পরিবর্তন বহন করে। হয় প্রথমে প্রতিশ্রুতিবদ্ধ, git checkout .এগুলি পূর্বাবস্থায় ফেরাতে চালনা করুন বা git stashস্যুইচিংয়ের আগে দৌড়াবেন। (আপনি নিজের পরিবর্তনগুলি এর সাথে ফিরে পেতে পারেন git stash apply)


10
আপনি যদি স্ট্যাশের বিশাল স্ট্যাক তৈরি করতে না চান তবে গিট স্ট্যাশ পপ আরও ভাল।
স্যারাইড

7
@ জেপিজেড: গিট স্ট্যাশ কেবল ট্র্যাকড ফাইলগুলির সাথেই ডিল করে; নতুন ফাইলগুলি ট্র্যাক করা হয়নি, সুতরাং সেগুলি স্ট্যাশ হবে না।
স্যারাইড

2
@ জেপিজেড: আপনি যদি লাইন চিহ্নবিহীন ফাইলগুলি সরিয়ে রাখতে চান, তবে স্ট্যাশ git addকরার আগে তাদের কাজ করা উচিত । এটি বলেছিল, আমি নিশ্চিত নই যে আপনি আসলে এখানে লুকিয়ে থাকতে চান - আপনি যদি সেই পরিবর্তনগুলি যে শাখার থেকে সরে যাচ্ছেন তার অংশ হওয়ার যদি আপনি চান, তবে তা প্রতিশ্রুতিবদ্ধ। (আপনি যদি সেই শাখায় ফিরে যেতে চান এবং পরিবর্তনগুলি সম্পাদন করার আগে আরও পরিবর্তনগুলি নিয়ে কাজ করতে চান, তবে stashকাজের জন্য উপযুক্ত হাতিয়ার হতে পারে))
ক্যাসাবেল

16
"শাখাগুলি স্যুইচিং করা আপনার সাথে নিবিড়িত পরিবর্তনগুলি বহন করে" - এটি উপলব্ধি করে এবং সম্ভবত সবচেয়ে খারাপ নকশা ধারণা। আপনি বিচ্ছিন্নভাবে কাজ করতে না পারলে শাখা রাখার লাভ কী? !!!
নেহেম

1
আমার ক্ষেত্রে, আমার একটি বিকাশকারী শাখা থেকে একটি বৈশিষ্ট্য শাখা রয়েছে। আমি বৈশিষ্ট্য শাখায় কমিট করেছি তবে আমি যখন বিকাশকারী শাখাটি চেকআউট করি তখন এটি পরিবর্তনগুলি দেখায়।
हितেশ গার্গ

31

সংক্ষিপ্ত উত্তর: হ্যাঁ, আপনি প্রতিশ্রুতিবদ্ধ করা প্রয়োজন। আপনি এটি ডান শাখায় করছেন তা নিশ্চিত করুন!

একটি শাখা অঙ্গীকারের নির্দেশক is যখন আপনি একটি শাখা পরীক্ষা করে আউট দিয়ে প্রতিশ্রুতিবদ্ধ হন, শাখাটি সেই নতুন অঙ্গীকারের দিকে নির্দেশ করে। আপনি যখন একটি শাখা পরীক্ষা করেন, আপনি যে প্রতিশ্রুতিটি নির্দেশ করেছেন তা পরীক্ষা করে দেখছেন। (আপনি কমিটিকে আপনার কাজের গাছের স্ন্যাপশট হিসাবে ভাবতে পারেন))

সুতরাং, আপনার যদি এমন পরিবর্তন হয় যা আপনি প্রতিশ্রুতিবদ্ধ না হন তবে শাখাগুলি স্যুইচ করে তারা প্রভাবিত হবে না। অবশ্যই, যদি শাখাগুলি স্যুইচ করা আপনার পরিবর্তনগুলির সাথে সামঞ্জস্যপূর্ণ git checkoutনা হয় তবে তা সহজভাবে অস্বীকার করবে।

git addপরিবর্তনগুলি মঞ্চ করার জন্য একটি আদেশ, যা আপনি তখন সম্পাদন করবেন। এটি সংরক্ষণাগারের ইতিহাসে এই পরিবর্তনগুলি রেকর্ড করে না। এটি কেবল তাদেরকে একটি মঞ্চস্থ স্থান (সূচক) এ স্থাপন করে; git commitতারপরে কমিটগুলি তৈরি করতে সেই স্টেজিং এরিয়ার সামগ্রীগুলি ব্যবহার করে।

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