كيف يمكنني نسخ نسخة من ملف واحد من بوابة فرع إلى آخر ؟

StackOverflow https://stackoverflow.com/questions/307579

سؤال

لقد حصلت على اثنين من الفروع التي اندمجت تماما معا.

ولكن بعد الدمج يتم أدرك بأن ملف واحد قد افسدت من قبل دمج (شخص آخر فعل تلقائي تنسيق جاه), وسيكون من الأسهل تغيير النسخة الجديدة في الفرع الآخر ، ومن ثم إعادة إدراج بلدي خط واحد تغيير بعد ليصل إلى فرع بلدي.

فما هي أسهل طريقة في بوابة إلى فعل هذا ؟

هل كانت مفيدة؟

المحلول

تشغيل هذا الفرع الذي تريد نقل الملف إلى نهاية المطاف:

git checkout otherbranch myfile.txt

الصيغ العامة:

git checkout <commit_hash> <relative_path_to_file_or_dir>
git checkout <remote_name>/<branch_name> <file_or_dir>

بعض الملاحظات (من التعليقات):

  • باستخدام ارتكاب تجزئة يمكنك سحب الملفات من أي ارتكاب
  • هذا يعمل عن الملفات والدلائل
  • الكتابة فوق الملف myfile.txt و mydir
  • البدل لا تعمل, ولكن المسارات النسبية لا
  • مسارات متعددة يمكن أن تكون محددة

بديل:

git show commit_id:path/to/file > path/to/file

نصائح أخرى

وانتهى بي الأمر في هذه المسألة في بحث مماثل. في حالتي أنا أبحث لاستخراج ملف من فرع آخر في دليل العمل الحالي الذي كان مختلفا من موقع الملف الأصلي. الجواب :

git show TREEISH:path/to/file >path/to/local/file

وماذا عن استخدام أمر الخروج:

  git diff --stat "$branch"
  git checkout --merge "$branch" "$file"
  git diff --stat "$branch"

وبعد الإجابة madlep ويمكنك أيضا مجرد نسخ دليل واحد من فرع آخر مع فقاعة الدليل.

git checkout other-branch app/**

وأما بالنسبة لمسألة المرجع إذا قمت بتغيير ملف واحد فقط في وجود هذا سوف تعمل بشكل جيد ^ _ ^

1) ضمان كنت في الفرع الذي كنت في حاجة الى نسخة من الملف. على سبيل المثال ل: اريد ملف فرع الفرعي في الماجستير لذلك تحتاج إلى الخروج أو ينبغي أن يكون في git checkout master سيد

2) الآن الخروج ملف معين وحده تريد من الباطن فرع في الماجستير،

git checkout sub_branch file_path/my_file.ext

وهنا sub_branch يعني حيث لديك هذا الملف يليه اسم الملف تحتاج إلى نسخ.

يرجى ملاحظة أنه في قبول الإجابة الخيار الأول مراحل الملف بأكمله من الفرع الآخر (مثل git add ... تم تنفيذ) ، أن الخيار الثاني فقط النتائج في نسخ الملف ولكن لا مرحلة التغييرات (كما لو كنت قد مجرد تحرير الملف يدويا و قد الخلافات المعلقة).

بوابة نسخ ملف من فرع آخر دون التدريج ذلك

التغييرات نظموا (مثلا ، git add filename):

$ git checkout directory/somefile.php feature-B

$ git status
On branch feature-A
Your branch is up-to-date with 'origin/feature-A'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   directory/somefile.php

التغييرات المعلقة (لا نظموا أو ارتكب):

$ git show feature-B:directory/somefile.php > directory/somefile.php

$ git status
On branch feature-A
Your branch is up-to-date with 'origin/feature-A'.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   directory/somefile.php

no changes added to commit (use "git add" and/or "git commit -a")
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top