কম্পিউটারের মধ্যে গিট রিপোজিটরি সিঙ্ক হয়, যখন ঘোরাফেরা করে?


89

ধরা যাক যে আমার কাছে একটি ডেস্কটপ পিসি এবং একটি ল্যাপটপ রয়েছে এবং কখনও কখনও আমি ডেস্কটপে কাজ করি এবং কখনও কখনও আমি ল্যাপটপে কাজ করি।

পিছনে পিছনে গিট সংগ্রহস্থল সরানোর সহজতম উপায় কী?

আমি চাই গিট সংগ্রহস্থলগুলি অভিন্ন হোক, যাতে আমি অন্য কম্পিউটারে যেখানে রেখেছি সেখানে চালিয়ে যেতে পারি।

আমি উভয় কম্পিউটারে আমার একই শাখা এবং ট্যাগ রয়েছে তা নিশ্চিত করতে চাই।

ধন্যবাদ জোহান

দ্রষ্টব্য: সাবভিশন দিয়ে এটি কীভাবে করা যায় তা আমি জানি তবে এটি কীভাবে গিট দিয়ে কাজ করবে তা সম্পর্কে আমি আগ্রহী। যদি এটি আরও সহজ হয় তবে আমি ক্লাসিকাল সার্ভার হিসাবে তৃতীয় পিসি ব্যবহার করতে পারি যা দুটি পিসি: এর বিপরীতে সিঙ্ক করতে পারে।

দ্রষ্টব্য: উভয় কম্পিউটারেই লিনাক্স চলছে।


আপডেট :

সুতরাং আসুন XANI এর ধারণাটি একটি সার্ভারে খালি গিট রেপো এবং কিং ক্রঞ্চ থেকে পুশ কমান্ড সিনট্যাক্স দিয়ে চেষ্টা করুন। এই উদাহরণে দুটি ক্লায়েন্ট এবং একটি সার্ভার রয়েছে।

তাহলে প্রথমে সার্ভার অংশটি তৈরি করা যাক।

ssh user@server
mkdir -p ~/git_test/workspace
cd ~/git_test/workspace
git --bare init

সুতরাং অন্য একটি কম্পিউটার থেকে আমি ক্লোন সহ রেপোটির অনুলিপি পাওয়ার চেষ্টা করি:

git clone user@server:~/git_test/workspace/
Initialized empty Git repository in /home/user/git_test/repo1/workspace/.git/
warning: You appear to have cloned an empty repository.

তারপরে সেই রেপোতে যান এবং একটি ফাইল যুক্ত করুন:

cd workspace/
echo "test1" > testfile1.txt
git add testfile1.txt
git commit testfile1.txt -m "Added file testfile1.txt"
git push origin master

এখন সার্ভারটি testfile1.txt দিয়ে আপডেট হয়েছে।

যাইহোক, আসুন আমরা অন্য কম্পিউটার থেকে এই ফাইলটি পেতে পারি কিনা তা দেখুন।

mkdir -p ~/git_test/repo2
cd ~/git_test/repo2
git clone user@server:~/git_test/workspace/
cd workspace/
git pull

এবং এখন আমরা পরীক্ষা ফাইলটি দেখতে পাচ্ছি।

এই মুহুর্তে আমরা এটিকে আরও কিছু সামগ্রী দিয়ে সম্পাদনা করতে পারি এবং আবার সার্ভার আপডেট করতে পারি।

echo "test2" >> testfile1.txt
git add testfile1.txt
git commit -m "Test2"
git push origin master

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


সিটি স্ক্রিপ্ট সিঙ্ক করতে পিসি 1 থেকে পিসি 2 তে দ্রুত এবং কম ডেটা ব্যবহারের সাথে, এমনকি সেল ফোন ওয়াইফাই হটস্পট (এই ব্যবহারের ক্ষেত্রে আরএসসিঙ্কের
গ্যাব্রিয়েল স্ট্যাপলস

উত্তর:


28

আমি মনে করি, একাধিক পদ্ধতির আছে। আমি কেবল বর্ণনা করব, কীভাবে আমি এটি পরিচালনা করি

24/7 সার্ভার হিসাবে আমার একটি নেটবুক রয়েছে, এতে একাধিক গিট-রেপোজিটরি রয়েছে। ওখান থেকে আমি এসএসএইচ দিয়ে পরিবর্তনগুলি টানুন এবং টানছি। বাইরে থেকে অ্যাক্সেসের জন্য আমি dyndns.org ব্যবহার করি। এটি দুর্দান্ত কাজ করে, বিশেষত আমার কাছে দুটিরও বেশি সিস্টেম রয়েছে, এর জন্য কিছু সংগ্রহস্থলের অ্যাক্সেস প্রয়োজন needs

আপডেট: একটি সামান্য উদাহরণ। বলি আমার নেটবুকটিকে "নেটবুক" বলা হয়। আমি সেখানে একটি ভান্ডার তৈরি করি

$ ssh username@netbook.local
$ cd ~/git
$ mkdir newThing
$ cd newThing
$ git init --bare

আমার ডেস্কটপে আমি এর চেয়ে ক্লোন তৈরি করব। হয়তো আমি কিছু ফাইল যুক্ত করব

$ git clone username@netbook.local:/home/username/git/newThing
$ git add .
$ git commit -m "Initial"
$ git push origin master

আমার পোর্টেবলগুলিতে আমি (প্রথম) একই কাজ করব তবে দূরবর্তী অ্যাক্সেসের জন্য (আমার ল্যানের বাইরে থেকে), আমি বাহ্যিক ঠিকানাও যুক্ত করব।

$ git clone username@netbook.local:/home/username/git/newThing
$ git remote add externalName username@mydyndns.home-ip.org:/home/username/git/newThing
$ git pull externalName master

গিট (/ গিট ওয়ার্কফ্লো) এর ঠিক কাজ করে। আপনি নিজের পছন্দমতো রিমোট রিপোজিটরি যুক্ত করতে পারেন। যদি এটি দুটি বা তার বেশি একই "শারীরিক" সংগ্রহস্থলগুলিকে বোঝায় তবে তা বিবেচ্য নয়। আপনার নিজস্ব একটি স্থানীয় "সার্ভার" দরকার নেই, আপনি যে কোনও পাবলিক সার্ভার ব্যবহার করতে পারেন, যার কাছে আপনার ssh অ্যাক্সেস রয়েছে। এবং অবশ্যই আপনাকে কোনও পাবলিক সার্ভারের দরকার নেই, যদি আপনার বাইরে থেকে অ্যাক্সেস না প্রয়োজন। খালি সংগ্রহস্থলটি ডেস্কটপ সিস্টেমেও থাকতে পারে এবং তারপরে আপনি স্থানীয় ফাইল সিস্টেমের মধ্যে একটি ওয়ার্কিং-অনুলিপি-সংগ্রহস্থল তৈরি করতে পারেন।

$ mkdir myRepo; cd myRepo
$ git init --bare
$ cd /path/to/myProject
$ git remote add origin /path/to/myRepo
$ git add .; git commit -m "Initial"; git push origin master

এই উপায়টি, আমি কীভাবে এটি পরিচালনা করি এবং আমার জন্য এটি বেশ সূক্ষ্মভাবে কাজ করে (যদি নিখুঁত না হয়;))

কিছু পড়ার জন্য: http://progit.org/ সত্যিই ভাল বই.-


কেমন লাগবে, যখন আপনি রেপোতে বিভিন্ন উপায়ে ব্যবহার করবেন? আপনি কি একটি উদাহরণ দিয়ে আপনার উত্তরটি পরিষ্কার করতে চান?
জোহান

ধন্যবাদ, এই উদাহরণগুলি অনেক স্পষ্ট করে দিয়েছে :)
জোহান

6

আমি রেপোটি একটি বাক্স থেকে অন্য বাক্সে ক্লোন করব এবং তারপরে দুটি রেপো সেট আপ করব যাতে আমি git fetchঅন্য বাক্স থেকে ঠিক পারি can

রিমোটটি originঅন্য বাক্সের নামে নামকরণ করলে রিমোট শাখাগুলি পড়া সহজ হয়।

মনে রাখবেন যে কেবল ব্যবহার করে git fetch(এবং না git push), এটি নন-বেয়ার স্টোরগুলির সাথে ভাল কাজ করে:

[user@foo repo]$ git fetch -v bar

[user@bar repo]$ git fetch -v foo

5

সবচেয়ে সহজ উপায়: কেন্দ্রীয় রেপো তৈরি হয়েছে --bare(সুতরাং কোনও চেক আউট করা ফাইল নেই, কেবল .git স্টাফ) বা গিথুব

"বিতরণ" এর মতো দেখতে পাবেন:

সেটআপ:

  1. ল্যাপটপে: git remote add desktop ssh://user@desktop/home/user/repo/path
  2. ডেস্কটপে: git remote add laptop ssh://user@laptop/home/user/repo/path

সিঙ্ক হচ্ছে:

git pull laptop/desktop (নন-বেয়ার রিপোতে পুশ খুব ভাল কাজ করবে না কারণ রিমোট রেপোতে এগিয়ে যাওয়ার সময় গিট চেক আউট করা ফাইলগুলিকে সংশোধন করবে না)

অথবা, পেনড্রাইভে রেপো তৈরি করুন;)


আমি একটি --bare রেপো ব্যবহার করার চেষ্টা করেছি, কিন্তু আমি পুরো ওয়ার্কফ্লো সঠিকভাবে পেতে পারি না।
জোহান

আমি কেবল গিট দিয়েই শুরু করছি, এবং স্থানীয় গিট থেকে গিথুবে যাচ্ছি এবং আমি এখন পর্যন্ত করতে পারি, তবে কম্পিউটার-কম্পিউটার-পদ্ধতিতে আমি কাজ করতে পারি না। বোবা প্রশ্ন - আমি কোন শংসাপত্রগুলির জন্য ব্যবহার করব user? গিথুবের জন্য, আমাকে কেবল আরএসএ-পাব কী যুক্ত করতে হবে। আমি ক্লোনটির জন্য কম্পিউটারের চাহিদা পূরণকারী কম্পিউটারের জন্য আরএসএ-পাব যুক্ত করার চেষ্টা করেছি, তবে এটি কৌশলটি করেনি ...
ডেভ

ক্রমাগত কোনও দূরবর্তী সার্ভারটিতে আঘাত না করেই দুটি স্থানীয় মেশিনের মধ্যে সিঙ্ক করার জন্য এটি আমার সবচেয়ে সহজ উপায়।
জনজাচারী

1

কিভাবে সহজভাবে ব্যবহার সম্পর্কে rsync?


4
তিনটি সার্ভারের সিঙ্ক আপ করার জন্য আমি কয়েক বছর ধরে আরএসসিএনসি ব্যবহার করেছি। এটি কাজ করে কিন্তু আরএসসিএনসি সিঙ্ক হয়ে গেলে আপনাকে পরিবর্তনগুলি রোল করার কোনও উপায় দেয় না। আমি এতগুলি ফাইলও হারিয়েছি কারণ শুকনো রান চালানো আউটপুট আমি খুব কাছেই পড়িনি এবং মাস্টারটিতে উপস্থিত ছিল না এমন ফাইলগুলি মুছতে আরএসসিএন সেট করা হয়েছিল। আমি তখন থেকে গিটে স্থানান্তরিত হয়েছি এবং গুরুত্বপূর্ণ ডিরেক্টরিগুলি সিঙ্কে রাখার জন্য এটি একটি আরও নিরাপদ উপায় খুঁজে পেয়েছি।
ক্লাউডকিলার

1

আপনি কি কেবল গিটহাব, বিটবকেট বা গিটল্যাবে একটি রিমোট রিপোজিটরি তৈরি করতে পারেননি? (পরবর্তী দুটি সংস্থা সীমাহীন বিনামূল্যে ব্যক্তিগত সংগ্রহস্থল সরবরাহ করে)। আপনি যখন কাজের সময়টি শেষ করেন, কেবল ব্যবহার করুন simplygit push সময়টি তখনই আপনার পরিবর্তনগুলি দূরবর্তী রেপোতে ঠেলাতে ব্যবহার করুন। আপনি যখন বাড়ি ফিরে আসবেন, git pullকাজ থেকে নিজের পরিবর্তনগুলি আপনার বাড়ির মেশিনে টানতে কেবল করুন । এইভাবে, যখন আপনি বাড়ীতে শেষ, কি git pushএবং তারপর যখন আপনি কাজ ফিরে আসতে, কি git pull


এইভাবে এটি করার সমস্যাটি হ'ল এটি আপনাকে অসম্পূর্ণ কাজের জন্য কমিটগুলি সম্পাদন করতে বাধ্য করে (যা অঙ্গীকারের ইতিহাসে যাবে), যাতে আপনি নিজের কোডটি অন্য কোনও মেশিনে স্থানান্তর করতে পারেন। আমি এমন কিছু করার একটি উপায় সন্ধান করছি যা আপনি উল্লেখ করেছেন ঠিক সেইরকম সহজ, তবে সেইগুলি আবর্জনা তৈরি করে না, এবং ট্র্যাশ "ট্রান্সফার" কমিটগুলি ওভাররাইট করার জন্য বিপজ্জনক -fবিকল্পটি ব্যবহার করা এড়াতে চাই git push
পলসেকার

1

[2 কম্পিউটারের মধ্যে] পিছনে পিছনে গিট সংগ্রহস্থল সরানোর সহজতম উপায় কী?

দৃশ্য 1: আমি পিসি 1 তে একচেটিয়াভাবে কাজ (কোড এবং ফাইলগুলি সম্পাদনা করি) তবে পিসি 2 তেও ফাইলগুলির একটি সদৃশ অনুলিপি (উদাহরণস্বরূপ: পুরো কোড বেস তৈরি করতে চাই) রাখতে চাই।

<25 এমবি ডেটা ব্যবহার করার সময় ওয়াইফাই হটস্পটের উপর 1 মিনিটের মধ্যে পিসি 1 থেকে পিসি 2 তে সিঙ্ক করুন:

আমি যে দুর্বল কম্পিউটারের সাথে ভ্রমণ করি (ল্যাপটপ) তার সাথে কাজ করি তবে অন্য কোথাও অবস্থিত আরও শক্তিশালী কম্পিউটার তৈরি করি। আমি স্ক্রিপ্ট ব্যবহার করে আমার ল্যাপটপ থেকে অন্য কম্পিউটারে সিঙ্ক করতে সমস্ত সময় গিট ব্যবহার করি। এটি চালানোর জন্য আমি কেবল এই আদেশটি টাইপ করেছি:

sync_git_repo_from_pc1_to_pc2

এটাই! সেল ফোন ওয়াইফাই হটস্পট ব্যবহার করার সময় এবং কয়েক ডজন গিগাবাইট আকারের রেপোতে কাজ করার সময়ও এটি প্রায় 25 এমবি ডেটা এবং 30 সেকেন্ড থেকে 1 মিনিট সময় নেয় । আমি পিসি 2 এ ছিলে, তাই করি Igit log -1 সিঙ্কটি কাজ করেছে কিনা তা যাচাই করতে আমি পিসি 2 এ করি, তারপরে আমি বিল্ড কমান্ডটি চালাচ্ছি run পুরোপুরি কাজ করে। ইহাকে একটি লাথি দাও. বিস্তারিত জানার জন্য নীচের লিঙ্কগুলি দেখুন।

দ্রষ্টব্য: পিসি 2 এ ক্লোন করা রেপো নামের গিট শাখায় থাকবে somename_SYNC। স্ক্রিপ্টটি যথাযথভাবে সংশোধন করুন যদি আপনি সর্বদা "SYNC শাখা" ব্যবহার না করে একই শাখার নাম রাখতে চান। ইচ্ছা করলে নীচের পরিস্থিতি 2 এর মতো আরও একটি প্রভাব পেতে স্ক্রিপ্টটি পরিবর্তন করা সম্ভব। তবুও, পরিস্থিতি 2 ম্যানুয়ালি করা শক্ত নয়, তাই আপনি নিজে নিজে দৃশ্যপট 2 করা চালিয়ে যেতে চাইতে পারেন। এটি সিনারিও 1 যেখানে স্বয়ংক্রিয় স্ক্রিপ্টটি সর্বাধিক উপকারী এবং সময় সাশ্রয়কারী, কারণ এটি একটি সহজ এবং দ্রুত "সংশোধন, সমন্বয়, বিল্ড" কর্মপ্রবাহের অনুমতি দেয় করতে দেয় যেখানে পিসি 1 তে" সংশোধন "হয়," সিঙ্ক "পিসি 1 থেকে চালিত হয় তবে এটি প্রভাবিত করে PC2, এবং "বিল্ড" পিসি 2 এ স্থান নেয়।

লিঙ্কগুলি:

  1. এখানে সম্পূর্ণ সেটআপ এবং ইনস্টলেশন নির্দেশাবলী:
    এসএসএইচ দিয়ে Eclipse সহ একটি দূরবর্তী প্রকল্পে কাজ করুন
  2. রেডমি, ডকুমেন্টেশন, এবং রেপো এখানে: https://github.com/E લેક્ટricRCAircraftGuy/eRCaGuy_dotfiles/blob/master/useful_scriptts/README_git-sync_repo_from_pc1_to_pc2.md
  3. যথাযথ স্ক্রিপ্টটি এখানে:
    https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles/blob/master/useful_scriptts/sync_git_repo_from_pc1_to_pc2.sh

পরিস্থিতি 2: আমি একাধিক কম্পিউটারে কাজ (কোড এবং ফাইলগুলি সম্পাদনা) করি এবং বিশ্বের যে কোনও কম্পিউটার থেকে একই কোড সংগ্রহস্থল সম্পাদনা করতে সক্ষম হতে চাই:

আমি চাই গিট সংগ্রহস্থলগুলি অভিন্ন হোক, যাতে আমি অন্য কম্পিউটারে যেখানে রেখেছি সেখানে চালিয়ে যেতে পারি। আমি উভয় কম্পিউটারে আমার একই শাখা এবং ট্যাগ রয়েছে তা নিশ্চিত করতে চাই।

  1. Https://github.com এ যান এবং একটি অ্যাকাউন্ট তৈরি করুন এবং বিকল্পভাবে (প্রস্তাবিত) এসএসএস কীগুলি সেট আপ করুন

  2. একটি নতুন সংগ্রহশালা তৈরি করতে এখন তাদের ওয়েব ইন্টারফেস ব্যবহার করুন।

    1. 2020 বা তার আগের বছর হিসাবে, গিটহাব বিনামূল্যে প্রাইভেট রিপোজিটরিগুলিকেও মঞ্জুরি দেয় , তাই এটি ব্যক্তিগত, ক্লোজড-সোর্স প্রকল্পগুলির জন্যও ভাল কাজ করে works
  3. নতুন সংগ্রহস্থল ssh বা https ক্লোন URL টি সন্ধান করুন Find উদাঃ git@github.com: বৈদ্যুতিনআরসিআরসিআরক্র্যাফটগুয়ে / eRCaGuy_dotfiles.git বা https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles.git

  4. প্রজেক্টটি পিসি 1 এ ক্লোন করুন। প্রাক্তন:

     git@github.com:ElectricRCAircraftGuy/eRCaGuy_dotfiles.git
     cd eRCaGuy_dotfiles
    
  5. এবং PC2 এ একই একই ক্লোন কমান্ডটি পুনরাবৃত্তি করুন।

  6. এখন পিসি 1 তে কিছু পরিবর্তন করুন, সেগুলি প্রতিশ্রুতিবদ্ধ করুন এবং গিথুবটিতে আপনার "রিমোট" সংগ্রহস্থলের দিকে ঠেলা দিন:

     # edit some files, then do the following
     git add -A  # stage ("add") all changed files to be committed 
     git commit  # commit them
     git push    # push them to your remote github repo
    
  7. এখন পিসি 2 এ, আপনার পরিবর্তনগুলি টানুন:

     # pull all changes from github (which includes the changes
     # you just pushed from PC1) to PC2
     git pull  
    
  8. এখন আপনি পিসি 2 তে ফাইলগুলি সম্পাদনা করতে পারেন, তাদের প্রতিশ্রুতিবদ্ধ করতে পারেন এবং উপরে মাত্র 2 ধাপ উপরে প্রদর্শিত কমান্ডগুলি ব্যবহার করে গিথুবগুলিতে চাপ দিতে পারেন এবং তারপরে পিসি 1 থেকে আপনি পিসি 2 থেকে git pullএই পরিবর্তনগুলি টানতে দৌড়াতে পারেন ।

  9. এই প্রক্রিয়াটি প্রয়োজন অনুসারে চালিয়ে যান, পিসি 1 বা পিসি 2 তে কাজ করা এবং সহজেই ফাইলগুলি ভাগ করে নেওয়া এবং আপনার কাজ দুটি কম্পিউটারের মধ্যে বিভক্ত করা। কেবল মনে রাখবেন যে আপনার সমস্ত পরিবর্তনগুলি অবশ্যই প্রতিশ্রুতিবদ্ধ হতে হবে এবং একটি পিসিতে গিথুবকে ধাক্কা দেওয়ার আগে আপনি সেগুলি পরীক্ষা করে দেখার (তাদের টানতে) এবং অন্য পিসিতে কাজ চালিয়ে যেতে হবে।

  10. আপনি যদি কখনও এমন পরিস্থিতিতে পড়েন যে দুটি পিসির মধ্যে ফাইলগুলি কিছুটা সামঞ্জস্যপূর্ণ হয়, আপনাকে সম্ভবত কিছু অতিরিক্ত শাখা ব্যবহার করতে হবে, কিছু সংশ্লেষ করতে হবে, দ্বন্দ্বগুলি সমাধান করতে হবে, তারপরে, এটি কাজ করার সাথে আরও মিল হয়ে যায় Then একটি ছোট দল যেখানে আপনি সকলেই একই রেপোতে কাজ করছেন with গুগল আপনার বন্ধু। গিট খুব খুব শক্তিশালী, এবং প্রায় প্রতিটি কিছুর জন্য একটি কমান্ড, কমান্ডের সেট বা ওয়ার্কফ্লো থাকে।


0

ঠিক আছে, আপনি সম্ভাব্যভাবে সেট আপ করতে পারেন এমন সার্ভারে আপনি (গিটের মাধ্যমে) টিপতে এবং টানতে পারেন। অথবা আপনি গিটহাবে আপনার রেপো সংরক্ষণ করতে পারেন এবং এটি একটি সিঙ্কিং ব্রিজ হিসাবে ব্যবহার করতে পারেন।


0

আপনি আপনার কম্পিউটারের যেকোন একটিতে, সম্ভবত ডেস্কটপ থেকে একটিতে সংগ্রহস্থল তৈরি করতে পারেন এবং ল্যাপটপ এবং নিজে থেকেই উভয় থেকে এটিকে চাপ / টানতে পারেন।

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