উইন্ডোজে গিট সিমলিংকস


246

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

আমার এটির ( আপডেট হওয়া ) সমাধানটি হ'ল:

  • একটি পোস্ট-চেকআউট স্ক্রিপ্ট লিখুন যা পুনরাবৃত্তভাবে "syMLink" পাঠ্য ফাইলগুলি সন্ধান করবে।
  • এগুলিকে উইন্ডোজ সিমলিংক (mklink ব্যবহার করে) এর সাথে একই নাম এবং এক্সটেনশানটি ডামি "syMLink" হিসাবে প্রতিস্থাপন করুন
  • .Git / তথ্য / বাদ না দিয়ে প্রবেশ করে এই উইন্ডোজ সিমলিংকটি উপেক্ষা করুন

আমি এটি বাস্তবায়ন করি নি, তবে আমি বিশ্বাস করি এটি এই সমস্যার দৃ to় পন্থা।

প্রশ্নাবলী:

  1. এই পদ্ধতির দিকে কি আপনি যদি কোন ডাউনসাইডস দেখেন?
  2. এই পোস্ট-চেকআউট স্ক্রিপ্টটি কি কার্যকর? অর্থাত্ আমি কি পুনরাবৃত্তভাবে গিটটি তৈরি করে ডামি "সিএমলিংক" ফাইলগুলি সন্ধান করতে পারি?
  3. ইতিমধ্যে কেউ কি এরকম স্ক্রিপ্টে কাজ করেছেন?

3
যদিও গিট সিমলিংকগুলিকে সমর্থন করে তবে আমি তাদের আপনার সংগ্রহস্থলের লিঙ্ক হিসাবে সংরক্ষণের বিরুদ্ধে দৃ strongly়তার সাথে সুপারিশ করব, বিশেষত যদি আপনি উইন্ডোজেও সেই কোডটি নিয়ে কাজ করছেন।
গ্রেগ হিউগিল 21

2
@ গ্রেগ হিউগিল - আমি আপনার সাথে পুরোপুরি একমত দুর্ভাগ্যক্রমে, আমাদের কোড বেসের প্রকৃতির জন্য সিমলিংক প্রয়োজন ... সুতরাং এগুলি অপসারণ করা আমাদের পক্ষে বিকল্প নয়।
কেন হিরাকাওয়া

12
আপনি এমএসজিজিট মেলিং তালিকায়ও জানতে চাইতে পারেন যে তারা কেন এটিকে প্রথম স্থানে প্রয়োগ করেনি।
মেঘের '

8
@ গ্রেগ হিউগিল কেন না? উইন্ডোজ প্রতীকী লিঙ্ক এবং জংশন উভয়ই সমর্থন করে - এটি আমার কাছে
গিতের

6
উইন্ডোজ 10 এ "বিকাশকারী মোড" সক্ষম করে সিমলিঙ্ক তৈরি করতে প্রশাসকের অধিকারের প্রয়োজন হয় না! (অন্যদের স্বল্প-ভোট উত্তরের উপর যতটা মন্তব্য, কিন্তু আমি তাদের দেখতে পাইনি প্রত্যাশী এই মন্তব্যটি ভবিষ্যতের পাঠকদের জন্য আরও দৃশ্যমান।।)
ডেভ পাসকুয়া

উত্তর:


105

120000সম্ভবত এই কমান্ডের সাহায্যে একটি মোড রয়েছে এমন ফাইলগুলি সন্ধান করে আপনি সিমলিংকগুলি খুঁজে পেতে পারেন :

git ls-files -s | awk '/120000/{print $4}'

একবার আপনি লিঙ্কগুলি প্রতিস্থাপন করলে, আমি তাদের git update-index --assume-unchangedতালিকাভুক্ত না করে এটিকে অপরিবর্তিত হিসাবে চিহ্নিত করার পরামর্শ দেব .git/info/exclude


2
এমএসজিগিতের জন্য আমাকে গাক দিয়ে বিশ্রী প্রতিস্থাপন করতে হয়েছিল, তবে অন্যথায় এটি পুরোপুরি কার্যকর হয়েছিল। ধন্যবাদ!
কেন হিরাকাওয়া

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

6
এখানে একটি পাওয়ারশেল যা আমি কেবল একসাথে রেখেছি
gist.github.com/ferventcoder/7995025

3
@ ফ্লুংগো জিএনইউ অ্যাজকে ব্যবহার করার চেয়ে চতুর্থ কলামটি প্রিন্ট করার আরও পোর্টেবল উপায় রয়েছে। উদাহরণস্বরূপ: git ls-files -s | grep '^12' | cut -f2(দ্বিতীয় ট্যাব-
বিস্মৃত

1
সমস্ত সিমলিংক অপরিবর্তিত হিসাবে চিহ্নিত করতে for f in `git ls-files -s | awk '/120000/{print $4}'`; do git update-index --assume-unchanged $f; done
সাইগউইন

187

আমি এই একই একই প্রশ্নটি কিছুক্ষণ আগে জিজ্ঞাসা করছিলাম (এখানে নয়, কেবল সাধারণভাবে) এবং শেষ পর্যন্ত ওপি'র প্রস্তাবের অনুরূপ সমাধান পেয়ে এসেছি। প্রথমে আমি 1 2 এবং 3 প্রশ্নের সরাসরি উত্তর সরবরাহ করব এবং তারপরে আমি যে সমাধানটি ব্যবহার করে শেষ করেছি তা পোস্ট করব।

  1. প্রস্তাবিত সমাধানটির প্রকৃতপক্ষে কয়েকটি ডাউনসাইড রয়েছে, মূলত সংগ্রহস্থল দূষণের বর্ধিত সম্ভাবনা সম্পর্কিত, বা দুর্ঘটনাক্রমে নকল ফাইলগুলি যুক্ত করা হয় যখন তারা তাদের "উইন্ডোজ সিমলিংক" অবস্থায় থাকে। (নীচে "সীমাবদ্ধতা" এর অধীনে আরও এটি More)
  2. হ্যাঁ, একটি পোস্ট-চেকআউট স্ক্রিপ্ট বাস্তবায়নযোগ্য! আক্ষরিক পোস্ট- git checkoutপদক্ষেপ হিসাবে নাও হতে পারে , তবে নীচের সমাধানটি আমার প্রয়োজনীয়তাগুলি যথেষ্টভাবে পূরণ করেছে যে আক্ষরিক পোস্ট-চেকআউট স্ক্রিপ্টের প্রয়োজন ছিল না।
  3. হ্যাঁ!

সমাধান:

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

সত্য যে Git বিশেষ filemode সঙ্গে symlinks করে ইশারা জন্য জোশ লি ধন্যবাদ 120000। এই তথ্যের সাহায্যে কয়েকটি গিট এলিয়াস যুক্ত করা সম্ভব যা উইন্ডোজ হোস্টগুলিতে গিট সিমলিংক তৈরি এবং হেরফেরের জন্য অনুমতি দেয়।

  1. উইন্ডোজে গিট সিমলিংক তৈরি করা হচ্ছে

    git config --global alias.add-symlink '!'"$(cat <<'ETX'
    __git_add_symlink() {
      if [ $# -ne 2 ] || [ "$1" = "-h" ]; then
        printf '%b\n' \
            'usage: git add-symlink <source_file_or_dir> <target_symlink>\n' \
            'Create a symlink in a git repository on a Windows host.\n' \
            'Note: source MUST be a path relative to the location of target'
        [ "$1" = "-h" ] && return 0 || return 2
      fi
    
      source_file_or_dir=${1#./}
      source_file_or_dir=${source_file_or_dir%/}
    
      target_symlink=${2#./}
      target_symlink=${target_symlink%/}
      target_symlink="${GIT_PREFIX}${target_symlink}"
      target_symlink=${target_symlink%/.}
      : "${target_symlink:=.}"
    
      if [ -d "$target_symlink" ]; then
        target_symlink="${target_symlink%/}/${source_file_or_dir##*/}"
      fi
    
      case "$target_symlink" in
        (*/*) target_dir=${target_symlink%/*} ;;
        (*) target_dir=$GIT_PREFIX ;;
      esac
    
      target_dir=$(cd "$target_dir" && pwd)
    
      if [ ! -e "${target_dir}/${source_file_or_dir}" ]; then
        printf 'error: git-add-symlink: %s: No such file or directory\n' \
            "${target_dir}/${source_file_or_dir}" >&2
        printf '(Source MUST be a path relative to the location of target!)\n' >&2
        return 2
      fi
    
      git update-index --add --cacheinfo 120000 \
          "$(printf '%s' "$source_file_or_dir" | git hash-object -w --stdin)" \
          "${target_symlink}" \
        && git checkout -- "$target_symlink" \
        && printf '%s -> %s\n' "${target_symlink#$GIT_PREFIX}" "$source_file_or_dir" \
        || return $?
    }
    __git_add_symlink
    ETX
    )"
    

    ব্যবহার: git add-symlink <source_file_or_dir> <target_symlink>যেখানে উত্স ফাইল বা ডিরেক্টরি সম্পর্কিত আর্গুমেন্ট অবশ্যই লক্ষ্য সিমিলিংকের সাথে সম্পর্কিত একটি পথের রূপ নিতে হবে আপনি সাধারণত এইরূপে একইভাবে ব্যবহার করতে পারেন ln

    যেমন, ভান্ডার গাছ:

    dir/
    dir/foo/
    dir/foo/bar/
    dir/foo/bar/baz      (file containing "I am baz")
    dir/foo/bar/lnk_file (symlink to ../../../file)
    file                 (file containing "I am file")
    lnk_bar              (symlink to dir/foo/bar/)
    

    নিম্নলিখিত হিসাবে উইন্ডোজ তৈরি করা যেতে পারে:

    git init
    mkdir -p dir/foo/bar/
    echo "I am baz" > dir/foo/bar/baz
    echo "I am file" > file
    git add -A
    git commit -m "Add files"
    git add-symlink ../../../file dir/foo/bar/lnk_file
    git add-symlink dir/foo/bar/ lnk_bar
    git commit -m "Add symlinks"
    
  2. এনটিএফএস হার্ডলিংক + জংশনের সাথে গিট সিমলিঙ্কগুলি প্রতিস্থাপন

    git config --global alias.rm-symlinks '!'"$(cat <<'ETX'
    __git_rm_symlinks() {
      case "$1" in (-h)
        printf 'usage: git rm-symlinks [symlink] [symlink] [...]\n'
        return 0
      esac
      ppid=$$
      case $# in
        (0) git ls-files -s | grep -E '^120000' | cut -f2 ;;
        (*) printf '%s\n' "$@" ;;
      esac | while IFS= read -r symlink; do
        case "$symlink" in
          (*/*) symdir=${symlink%/*} ;;
          (*) symdir=. ;;
        esac
    
        git checkout -- "$symlink"
        src="${symdir}/$(cat "$symlink")"
    
        posix_to_dos_sed='s_^/\([A-Za-z]\)_\1:_;s_/_\\\\_g'
        doslnk=$(printf '%s\n' "$symlink" | sed "$posix_to_dos_sed")
        dossrc=$(printf '%s\n' "$src" | sed "$posix_to_dos_sed")
    
        if [ -f "$src" ]; then
          rm -f "$symlink"
          cmd //C mklink //H "$doslnk" "$dossrc"
        elif [ -d "$src" ]; then
          rm -f "$symlink"
          cmd //C mklink //J "$doslnk" "$dossrc"
        else
          printf 'error: git-rm-symlink: Not a valid source\n' >&2
          printf '%s =/=> %s  (%s =/=> %s)...\n' \
              "$symlink" "$src" "$doslnk" "$dossrc" >&2
          false
        fi || printf 'ESC[%d]: %d\n' "$ppid" "$?"
    
        git update-index --assume-unchanged "$symlink"
      done | awk '
        BEGIN { status_code = 0 }
        /^ESC\['"$ppid"'\]: / { status_code = $2 ; next }
        { print }
        END { exit status_code }
      '
    }
    __git_rm_symlinks
    ETX
    )"
    
    git config --global alias.rm-symlink '!git rm-symlinks'  # for back-compat.
    

    ব্যবহার:

    git rm-symlinks [symlink] [symlink] [...]
    

    এই এলিফ গিট সিমলিংকগুলি একের পর এক মুছে ফেলতে পারে বা একবারে একবারে ঝাপটায় পড়ে যায়। সিমলিংকগুলি এনটিএফএস হার্ডলিঙ্কগুলি (ফাইলগুলির ক্ষেত্রে) বা এনটিএফএস জংশন (ডিরেক্টরিগুলির ক্ষেত্রে) দিয়ে প্রতিস্থাপন করা হবে। "সত্য" এনটিএফএস সিমলিংকের উপর হার্ডলিঙ্কগুলি + জংশনগুলি ব্যবহার করার সুবিধাটি হ'ল এগুলি তৈরির জন্য উচ্চতর ইউএসি অনুমতি প্রয়োজন হয় না।

    সাবমডিউলগুলি থেকে সিমলিংকগুলি সরাতে, কেবল তাদের উপর পুনরাবৃত্তি করার জন্য গিটের অন্তর্নির্মিত সমর্থনটি ব্যবহার করুন:

    git submodule foreach --recursive git rm-symlinks
    

    তবে, এর মতো প্রতিটি কঠোর ক্রিয়াকলাপের জন্য, বিপরীতটি ভাল লাগলে ...

  3. উইন্ডোজে গিট সিমলিংক পুনরুদ্ধার করা হচ্ছে

    git config --global alias.checkout-symlinks '!'"$(cat <<'ETX'
    __git_checkout_symlinks() {
      case "$1" in (-h)
        printf 'usage: git checkout-symlinks [symlink] [symlink] [...]\n'
        return 0
      esac
      case $# in
        (0) git ls-files -s | grep -E '^120000' | cut -f2 ;;
        (*) printf '%s\n' "$@" ;;
      esac | while IFS= read -r symlink; do
        git update-index --no-assume-unchanged "$symlink"
        rmdir "$symlink" >/dev/null 2>&1
        git checkout -- "$symlink"
        printf 'Restored git symlink: %s -> %s\n' "$symlink" "$(cat "$symlink")"
      done
    }
    __git_checkout_symlinks
    ETX
    )"
    
    git config --global alias.co-symlinks '!git checkout-symlinks'
    

    ব্যবহার: git checkout-symlinks [symlink] [symlink] [...]যা পূর্বাবস্থায় ফিরিয়ে আনে git rm-symlinksকার্যকরভাবে (আপনার পরিবর্তনগুলি, যার জন্য ব্যতীত তার প্রাকৃতিক অবস্থায় সংগ্রহস্থলের পুনরূদ্ধার, উচিত অক্ষত থাকার)।

    এবং সাবমডিউলগুলির জন্য:

    git submodule foreach --recursive git checkout-symlinks
    
  4. সীমাবদ্ধতা:

    • তাদের পাথের ফাঁকা জায়গাগুলি সহ ডিরেক্টরি / ফাইল / প্রতীকগুলি কাজ করা উচিত। তবে ট্যাব না নিউলাইন? ওয়াইএমএমভি ... (এর অর্থ এই: এটি করবেন না কারণ এটি কার্যকর হবে না ))

    • যদি আপনি বা অন্যরা git checkout-symlinksসম্ভাব্য প্রশস্ত-পরিচ্ছন্ন পরিণতি যেমন কিছু করার আগে ভুলে যান git add -Aতবে স্থানীয় সংগ্রহস্থল দূষিত অবস্থায় শেষ হতে পারে

      আগে থেকে আমাদের "উদাহরণ রেপো" ব্যবহার করে:

      echo "I am nuthafile" > dir/foo/bar/nuthafile
      echo "Updating file" >> file
      git add -A
      git status
      # On branch master
      # Changes to be committed:
      #   (use "git reset HEAD <file>..." to unstage)
      #
      #       new file:   dir/foo/bar/nuthafile
      #       modified:   file
      #       deleted:    lnk_bar           # POLLUTION
      #       new file:   lnk_bar/baz       # POLLUTION
      #       new file:   lnk_bar/lnk_file  # POLLUTION
      #       new file:   lnk_bar/nuthafile # POLLUTION
      #
      

      উপস ...

      এই কারণে, চেকআউট বা ধাক্কা দেওয়ার আগে, প্রোজেক্ট তৈরির আগে-পরে-পরে উইন্ডোজ ব্যবহারকারীদের জন্য সঞ্চালনের পদক্ষেপ হিসাবে এই এলিয়াসগুলি অন্তর্ভুক্ত করা ভাল। তবে প্রতিটি পরিস্থিতি আলাদা। এই উপনামগুলি আমার পক্ষে যথেষ্ট কার্যকর হয়েছে যে সত্য পোস্ট-চেকআউট সমাধানের প্রয়োজন হয় নি।

আশা করি এইটি কাজ করবে!

তথ্যসূত্র:

http://git-scm.com/book/en/Git-Internals-Git-Objects

http://technet.microsoft.com/en-us/library/cc753194

শেষ আপডেট: 2019-03-13

  • পসিক্স সম্মতি ( mklinkঅবশ্যই, সেই কলগুলি বাদে অবশ্যই) - আর কোনও বাশিমিশ !
  • এগুলির ফাঁকা জায়গা সহ ডিরেক্টরি এবং ফাইলগুলি সমর্থিত are
  • শূন্য এবং শূন্য-বহির্গমন স্থিতি কোডগুলি (যথাক্রমে অনুরোধ করা কমান্ডের সাফল্য / ব্যর্থতার যোগাযোগের জন্য) এখন সঠিকভাবে সংরক্ষণ / ফিরিয়ে দেওয়া হয়েছে।
  • add-symlinkওরফে এখন আরো ভালো কাজ করে LN (1) এবং সংগ্রহস্থলের মধ্যে যে কোনো ডিরেক্টরির, শুধু সংগ্রহস্থলের রুট ডিরেক্টরি থেকে ব্যবহার করা যাবে।
  • rm-symlinkওরফে (একবচন) দ্বারা বাতিল করা হয়েছে rm-symlinksবেছে বেছে এনটিএফএস hardlinks + + সংযোগস্থলের মধ্যে Git symlinks রূপান্তর জন্য ওরফে (বহুবচন), যা এখন একাধিক আর্গুমেন্ট গ্রহণ (অথবা আদৌ কোন যুক্তি, যা সংগ্রহস্থলের সর্বত্র symlinks সব খুঁজে বের করে, আগে হিসাবে) ।
  • checkout-symlinksওরফে এছাড়াও একাধিক আর্গুমেন্ট গ্রহণ আপডেট করা হয়েছে (সমস্ত বা কেউ না, == সবকিছু) উপরোক্ত রূপান্তরের নির্বাচনী উলটাপালটা জন্য।

চূড়ান্ত দ্রষ্টব্য: আমি যে কোনও কারণের জন্য এখনও এই প্রাচীন সংস্করণটিতে আটকে থাকতে পারি তাদের জন্য বাশ ৩.২ (এবং এমনকি ৩.১) ব্যবহার করে এই উপকরণগুলি লোডিং এবং চালানোর সময়, সচেতন থাকুন যে এগুলির মতো পুরানো সংস্করণগুলি তাদের পার্সারের জন্য কুখ্যাত বাগ। আপনি যদি এই এলিয়াসগুলির যে কোনও ইনস্টল করার চেষ্টা করার সময় সমস্যার সম্মুখীন হন তবে আপনার প্রথমে আপনার শেলটি আপগ্রেড করা উচিত (বাশের জন্য, সিটিআরএল + এক্স, সিটিআরএল + ভি সহ সংস্করণটি পরীক্ষা করুন)। বিকল্পভাবে, আপনি যদি আপনার টার্মিনাল এমুলেটরে তাদের আটকানোর মাধ্যমে এগুলি ইনস্টল করার চেষ্টা করছেন, তবে আপনার ভাগ্য আরও বেশি ভাগ্যবান হতে পারে এগুলি একটি ফাইলের মধ্যে আটকানো এবং পরিবর্তে এটি উত্সাহিত করা, যেমন

. ./git-win-symlinks.sh

শুভকামনা!


আপনি কি দয়া করে এখানে এটি একবার দেখুন? stackoverflow.com/questions/21403772/…
বোকা

এটি একটি দুর্দান্ত এবং দুর্দান্ত স্ক্রিপ্ট, তবে গিট অ্যাড-সিমিলিংক দিয়ে তৈরি করা আমার কিছু ফাইলের শেষে এলোমেলোভাবে "গিট" শব্দটি সংযুক্ত করার কোনও কারণ আছে কি?
পিটার টার্নার 21

এছাড়াও, যদি আপনার ফাইলের নামটিতে "-h" থাকে তবে আপনি এটি ব্যবহার করতে পারেন। এখনও খুব দরকারী স্ক্রিপ্ট!
পিটার টার্নার

আপনার git add-symlinkরেসিপিটি আমার জন্য দুর্দান্তভাবে মূল্যবান। অনেক ধন্যবাদ.
ড্যান লেন্সকি 21

1
এই স্ক্রিপ্টগুলি হুক ব্যবহার করে স্বয়ংক্রিয়ভাবে কার্যকর করার কোনও উপায় আছে কি?
এআরএফ

74

গিট স্কেমের সবচেয়ে সাম্প্রতিক সংস্করণ (টেস্টেট 2.11.1) প্রতীকী লিঙ্কগুলি সক্ষম করতে দেয়। তবে আপনাকে আবার সিমলিংকের সাহায্যে সংগ্রহস্থলটি ক্লোন করতে হবে git clone -c core.symlinks=true <URL>। প্রশাসকের অধিকার নিয়ে আপনার এই কমান্ডটি চালানো দরকার। উইন্ডোতে এমক্লিংক দিয়ে সিমলিংক তৈরি করাও সম্ভব। পরীক্ষা করে দেখুন উইকি

এখানে চিত্র বর্ণনা লিখুন


1
এটি আমার পক্ষে কাজ করে না। আমি উইন্ডোজের জন্য গিটটি পুনরায় ইনস্টল করেছি, সিমলিংক চেকবক্সটি পরীক্ষা করে দেখুন এবং আমার প্রকল্পটি আবার ক্লোন করে ফেলুন। আমার tslint.jsonফাইলটি পিতামাতার ডিরেক্টরিতে ফাইল উল্লেখ করে এখনও রয়েছে ../tslint.json। করুণা, কারণ এটি সেখানে প্রস্তাবিত সমাধানগুলির মধ্যে সবচেয়ে সহজ দেখায়।
জান আগারার্ড

8
@ জনআগার্ড আপনাকে এটিকে ক্লোন করতে হবে: git clone -c core.symlinks=true <URL> এবং উইন্ডোজ এ আপনাকে প্রশাসকের অধিকার দিয়ে চালাতে হবে।
sirlunchalot

6
@ এআরএফ "জিপিডিট.এমএসসি (অর্থাত্ গ্রুপ পলিসি সম্পাদক) প্রবর্তন করুন এবং কম্পিউটার কনফিগারেশন \ উইন্ডোজ সেটিং \ সুরক্ষা সেটিংস \ স্থানীয় নীতিমালা Rights ব্যবহারকারীর অধিকার নির্ধারণ symbol প্রতীকী লিঙ্কগুলি তৈরি করুন (অ্যাকাউন্টগুলি) (
sirlunchalot

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

9
উইন্ডোজ 10 ক্রিয়েটর আপডেটে "বিকাশকারী মোড" এ প্রশাসনিক অধিকারগুলি প্রয়োজনীয় নয় । ধন্যবাদ @ এডনিস তার মন্তব্যে
ডোমিনিক

16

এটি এমএসসিগিতে প্রয়োগ করা উচিত, তবে দুটি ডাউনসাইড রয়েছে:

  • সিম্বলিক লিঙ্কগুলি কেবল উইন্ডোজ ভিস্তার এবং পরে (২০১১-তে কোনও সমস্যা হওয়া উচিত নয়), কারণ পুরানো সংস্করণগুলি কেবল ডিরেক্টরি জংশনকে সমর্থন করে।
  • (বড় একটি) মাইক্রোসফ্ট প্রতীকী লিঙ্কগুলিকে একটি সুরক্ষা ঝুঁকি বিবেচনা করে এবং তাই কেবল প্রশাসকরা সেগুলি ডিফল্টরূপে তৈরি করতে পারেন। আপনার কাজ করা প্রতিটি মেশিনে এই আচরণটি পরিবর্তন করতে আপনার গিট প্রক্রিয়াটির বিশেষাধিকার উন্নত করতে হবে বা fstool ব্যবহার করতে হবে।

আমি একটি দ্রুত অনুসন্ধান করেছি এবং এটি নিয়ে সক্রিয়ভাবে কাজ চলছে, 224 সংখ্যা দেখুন ।


2
আপডেট: উপরের কারণে সমস্যাটি wontfix হিসাবে বন্ধ ছিল closed আলোচনাটি ইঙ্গিত দেয় যে প্যাচটিতে আরও কিছু কাজ করার সাথে একটি স্থিরতা গ্রহণ করা যেতে পারে (বলুন, তারা যদি কাজ করে তবেই সিমলিংক ব্যবহার করে)।
ব্লেজারব্লেড

2
এ।) বর্তমানে এমএসজিগিট একেবারেই সিমলিংককে সমর্থন করে না - তবে এটি কেন খুঁজে পাওয়া যাবে না "ওহে আপনি এনটিএফএসের সাথে ভিস্টায় আছেন আমাকে সিমলিংকগুলি ব্যবহার করতে দিন" বা "ওহ, আপনি এমন কোনও ওএসে আছেন যা এনটিএফএসের সাথে জংশন সমর্থন করে, আমাকে সেগুলি ", বা" ওহ, আপনি উইন্ডোজ 98 / ফ্যাট 32 এ ব্যবহার করতে দিন, আমাকে কেবল এই বৈশিষ্ট্যটি না রেখে এবং পরিবর্তে আপনাকে একটি সতর্কতা দেওয়ার জন্য ফ্যালব্যাক দিন! " এবং তারপরে বি) মাইক্রোসফ্টের সমস্ত ডিভ অনেক সুন্দর। সরঞ্জামগুলি ঠিক মতো কাজ করে না (কমপক্ষে তাদের সমস্ত বৈশিষ্ট্যের জন্য নয়) যদি আপনি এগুলি প্রশাসক হিসাবে চালনা করেন না - আইটি-তে প্রত্যেকেই জানেন যে বিকাশকারীদের তাদের নিজস্ব বাক্সে প্রশাসক হওয়া দরকার।
BrainSlugs83

1
আমি অ্যাডমিন অ্যাকাউন্টে কিছু নির্দিষ্ট মেশিন চালিত থাকাকালীন আমি আমার বিকাশ মেশিনে সেই দর্শন অনুসরণ করি না। আমি সর্বদা ইউএসি-সক্ষম থাকা হিসাবে নিয়মিত ব্যবহারকারী হিসাবে চালাই। আমি ক্রিয়াকলাপগুলির জন্য পৃথক কনসোল খোলা রাখি যার জন্য উন্নততর সুবিধাগুলি প্রয়োজন। এটি বাস্তবায়িত হওয়ার ক্ষেত্রে, এটি কারওর কাছে নেমে আসে (আপনার মত) এটি বাস্তবায়নের জন্য স্বেচ্ছাসেবক। Msysgit ডেভেলপারদের দাতব্য জন্য পরিচিত না হয় ...
DJs

@djs একজন ব্যবহারকারীকে "প্রশাসক হিসাবে চালান" সহ একটি কমান্ড প্রম্পট খুলতে হবে। অ্যাডমিনিস্ট্রেটর ব্যবহারকারী হিসাবে এটি প্রায় বেশ আক্ষরিকভাবে চলমান যা পরিবেশকে পুরোপুরি পরিবর্তন করে। অ্যাডমিন গ্রুপে থাকা একজন ব্যবহারকারী হিসাবে 'mklink / d' চালানোর কোনও উপায় নেই। এটি ইউএসি প্রম্পট করবে না। এটা সর্বদা ব্যর্থ হবে। এটি কেবল দুটি উপায় কাজ করে: আক্ষরিকভাবে প্রশাসক ব্যবহারকারী হিসাবে (রানআস ভার্ভ), বা গোষ্ঠী নীতি পরিবর্তন সহ একটি প্রশাসনিক নন। জংশনগুলি ডিফল্ট হওয়া উচিত এবং সমস্ত সরঞ্জাম দ্বারা স্বীকৃত হওয়া উচিত। 'সুরক্ষা ঝুঁকি' হ'ল উইন্ডোজের প্রতীকগুলি এসএমবি'র শেয়ারগুলি 'পুনর্নির্দেশ' করতে পারে। এটি একটি ব্যথা এবং নিষ্ঠুর।
অ্যান্ড্রু টি ফিনেল

8
ডিসেম্বর 2016 এর ঘোষিত, উইন্ডোজ 10-এ সিমলিংকগুলি এখন প্রশাসকের কোনও পদক্ষেপ নয়। ব্লগস.উইন্ডজস
ডেনিস

16

জিআইটির সাথে জিনিসগুলি পরিবর্তিত হয়েছে যেহেতু এই উত্তরগুলির অনেকগুলি এখানে পোস্ট করা হয়েছিল তাই উইন্ডোজগুলিতে সিমলিঙ্কগুলি সঠিকভাবে কাজ করার জন্য সঠিক নির্দেশাবলী

আগস্ট 2018


1. নিশ্চিত করুন যে গিটটি সিমলিংক সমর্থন সহ ইনস্টল করা আছে

উইন্ডোজ গিট ইনস্টল করার সময়

২. বাশকে সিমলিঙ্কগুলির পরিবর্তে হার্ডলিঙ্ক তৈরি করতে বলুন

সম্পাদনা - (গিট ফোল্ডার) /etc/bash.bashrc

নীচে যোগ করুন - MSYS=winsymlinks:nativestrict

3. সিটলিঙ্কগুলি ব্যবহার করার জন্য গিট কনফিগারেশন সেট করুন

git config core.symlinks true

অথবা

git clone -c core.symlinks=true <URL>

দ্রষ্টব্য: আমি এটি গ্লোবাল গিট কনফিগারেশনে যুক্ত করার চেষ্টা করেছি এবং এই মুহূর্তে এটি আমার পক্ষে কাজ করছে না তাই আমি প্রতিটি রেপোতে এটি যুক্ত করার পরামর্শ দিচ্ছি ...

4. রেপো টানুন

দ্রষ্টব্য: আপনি যদি উইন্ডোজ 10 এর সর্বশেষতম সংস্করণে বিকাশকারী মোড সক্ষম না করে থাকেন, সিমলিঙ্কগুলি তৈরি করতে আপনাকে প্রশাসক হিসাবে ব্যাশ চালানো দরকার

৫. সমস্ত সিমলিংক রিসেট করুন ( alচ্ছিক ) আপনার যদি বিদ্যমান রেপো থাকে বা আপনি সাবমডিউল ব্যবহার করছেন আপনি দেখতে পাচ্ছেন যে সিপলিকগুলি সঠিকভাবে তৈরি হচ্ছে না তাই রেপোর সমস্ত সিমলিংক রিফ্রেশ করার জন্য আপনি এই আদেশগুলি চালাতে পারেন।

find -type l -delete
git reset --hard

দ্রষ্টব্য: এটি সর্বশেষ প্রতিশ্রুতিবদ্ধ হওয়ার পরে যে কোনও পরিবর্তন পুনরায় সেট করবে তাই নিশ্চিত হয়ে নিন যে আপনি প্রথম প্রতিশ্রুতিবদ্ধ


15

সংক্ষিপ্ত উত্তর: আপনি এখন বিকাশকারী মোড সক্ষম করতে পারলে এগুলি এখন দুর্দান্তভাবে সমর্থিত।

Https://blogs.windows.com/buildingapps/2016/12/02/symlinks-windows-10/ থেকে

উইন্ডোজ 10 ক্রিয়েটার্স আপডেটে, কোনও ব্যবহারকারী (অ্যাডমিন অধিকার সহ) প্রথমে বিকাশকারী মোড সক্ষম করতে পারে এবং তারপরে মেশিনের যে কোনও ব্যবহারকারী কমান্ড-লাইন কনসোলকে উন্নত না করেই mklink কমান্ড চালাতে পারে।

কি এই পরিবর্তন এড়ানো? আধুনিক বিকাশকারীদের কাছে সিমলিংকের উপলব্ধতা এবং ব্যবহার একটি বড় বিষয়:

এনপিএমের মতো গিট এবং প্যাকেজ ম্যানেজারের মতো অনেক জনপ্রিয় বিকাশ সরঞ্জাম যথাক্রমে রেপো বা প্যাকেজ তৈরি করার সময় সিমলিংকগুলি সনাক্ত করে এবং বজায় রাখে। এরপরে যখন সেই repos বা প্যাকেজগুলি অন্য কোথাও পুনরুদ্ধার করা হয়, তখন ডিস্কের স্থান (এবং ব্যবহারকারীর সময়) নষ্ট হয় না তা নিশ্চিত করে সিমলিংকগুলিও পুনরুদ্ধার করা হয়।

"স্রষ্টার আপডেট" এর অন্যান্য সমস্ত ঘোষণার সাথে উপেক্ষা করা সহজ তবে আপনি যদি বিকাশকারী মোড সক্ষম করেন তবে আপনি উন্নত সুবিধাগুলি ছাড়াই সিমলিংক তৈরি করতে পারেন। আপনাকে গিটটি পুনরায় ইনস্টল করতে হবে এবং নিশ্চিত করতে হবে যে সিমলিংক সমর্থন সক্ষম হয়েছে, এটি ডিফল্টরূপে নয়।

প্রতীকী লিঙ্কগুলি ডিফল্টরূপে সক্ষম হয় না


1
gpedit.msc-> Local Computer Policy-> Computer Configuration-> Windows Settings-> Security Settings-> Local Policies-> যুগে যুগে User Rights Assignmentব্যবহারকারীর অধিকার SeCreateSymbolicLinkএবং বন্ধুকে অধিকার প্রদানের এক সাধারণ উপায় । অন্য ntrights.exeরিসোর্স কিট বা PowerShell ... থেকে
0xC0000022L

11

2020 উত্তর

  1. উইন্ডোজ 10-এ "বিকাশকারী মোড" সক্ষম করুন - mklinkঅনুমতি দেয়
  2. নিশ্চিত করুন যে সিমলিংকগুলি গিটে সক্ষম রয়েছে
    • git config --global core.symlinks true
    • অথবা এমএসসিজিট ইনস্টল করার সময় চেকবক্সটি চেক করুন

শাখাগুলি স্যুইচ করা নিখোঁজ সিমলিংকের বিনোদনকে বাধ্য করবে।

সতর্কতা অবলম্বন করুন, উইন্ডোতে সিমলিংকের জন্য অন্য কয়েকটি গিট ক্লায়েন্টের সমর্থন সমর্থন সম্পূর্ণ নয়। উল্লেখযোগ্যভাবে গিটক্রাকেন।


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

@ গ্রাভিডটহটস আপনি কোন গিট ক্লায়েন্ট (গুলি) ইনস্টল করেছেন? হয়তো কিছু টুলিং এটি করছে? এটি কি তাজা ক্লোনটিতে সত্য?
ক্যামেরন ট্যাকলাইন্ড

10

আমি আপনাকে পরামর্শ দিচ্ছি যে আপনি রেপোতে সিমলিংক ব্যবহার করবেন না। রিপোর অভ্যন্তরে প্রকৃত সামগ্রী সংরক্ষণ করুন এবং তারপরে রেপোর পাশের প্রতিলিপি রাখুন 'যা সামগ্রীতে নির্দেশ করে।

সুতরাং আসুন আমরা বলি যে আপনি আপনার ওয়েবসাইটকে * নিক্সে হোস্টিংয়ের সাথে জয়ের সাথে তুলনা করতে একটি রেপো ব্যবহার করছেন। আপনার রেপোতে সামগ্রী সংরক্ষণ করুন, বলুন /httpRepoContentএবং এটির c:\httpRepoContentসাথে ফোল্ডারটি যা জিআইটি, এসভিএন ইত্যাদির মাধ্যমে সিঙ্ক হয় etc.

তারপরে, আপনার ওয়েব সার্ভারের কন্টেন্ট ফোল্ডারটি ( /var/wwwএবং c:\program files\web server\www{নামগুলি আসলে কিছু যায় আসে না, আপনার রেপোতে থাকা সামগ্রীর প্রতীকী লিঙ্কের সাথে সম্পাদনা করুন edit) প্রতিস্থাপন করুন । ওয়েব সার্ভারগুলি সামগ্রীটি 'ডান' জায়গায় আসলে দেখতে পাবে, তবে আপনি নিজের উত্স নিয়ন্ত্রণটি ব্যবহার করতে পারেন।

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

সাধারণ উত্স নিয়ন্ত্রণগুলির জন্য এই স্ক্রিপ্টগুলি কীভাবে করতে হয় তা শেখার জন্য যদি কেউ ভাল জায়গা জানে, এসভিএন জিআইটি এমজি, তবে দয়া করে একটি মন্তব্য যুক্ত করুন।


শেষ পর্যন্ত, আমি এই পন্থাটি একটি সিমিলিংক-আউট ফোল্ডার তৈরি করতে এবং মূল ফাইলটি যেখানে ব্যবহৃত হত সেখানে প্রতীকী লিঙ্কগুলি তৈরি করতে বেছে নিয়েছি। আমি .git / কনফিগারেশন সেটিং কোর.সাইমলিংক = সত্য পরিবর্তনের পরেও অন্য পদ্ধতির কাজ হয়নি। কেবলমাত্র প্রতীকী লিঙ্ক ফাইলটি ডেপোতে নয়, রেপোতে সংরক্ষণ করা হয়েছিল। প্রতীকী লিঙ্কে ফোল্ডার টাইমস্ট্যাম্পগুলির সাথেও সমস্যা ছিল তাই ফোল্ডারের মধ্যে কোনও ফাইল পরিবর্তিত হলে গিট ব্যাশ কখনই দেখেনি।
ডিম

@ এগ্রিজ আপনি যা দেখতে পেয়েছেন, আমার ধারণা, লিঙ্কটি রেপোর মধ্যে ছিল এবং তাই গিট এটি সরল করে দিয়েছিল। যদিও সমস্যাটি হ'ল লক্ষ্যটি রেপোর বাইরে ছিল এবং গিটটি লক্ষ্যযুক্ত ডেটার লিঙ্কটি অনুসরণ করে না। লিনাক্সে আপনার কাছে এক ধরণের লিঙ্ক রয়েছে যা এটির জন্য কার্যকর হবে, এটি মূলত আসুন আপনার সাথে একইভাবে ডেটাতে সঞ্চিত একই ডেটার দুটি পথ রয়েছে; আমার মনে হচ্ছে নতুন এক উইন্ডোজ এখন এটি করতে পারে। যাইহোক যাইহোক, এখনও আমি ভাবি না যে এটি লোকেরা যা চায় তা করবে।
thecoshman

@ থেকোশম্যান এটি কোনও সমাধান নয়, বরং একটি কর্মচঞ্চল। তবে, কখনও কখনও এটি কোনও বিকল্প নয় is প্রতীকী লিঙ্কগুলির কারণে আমার এর সমস্ত স্থাপত্য কাজ গিট-এনেক্সের সাথে আমার কাছে একটি সংগ্রহস্থল রয়েছে।
marcelo.guedes

8

যারা ভিস্টা, উইন 7 বা তার উপরে সাইগউইন ব্যবহার করেন তাদের জন্য স্থানীয় gitকমান্ডটি "যথাযথ" সিমলিংক তৈরি করতে পারে যা অ্যান্ড্রয়েড স্টুডিওর মতো উইন্ডোজ অ্যাপ্লিকেশন দ্বারা স্বীকৃত । আপনার CYGWINঅন্তর্ভুক্ত করতে winsymlinks:nativeবা winsymlinks:nativestrictযেমন পরিবেশের পরিবর্তনশীল সেট করতে হবে :

export CYGWIN="$CYGWIN winsymlinks:native"

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

ব্যক্তিগতভাবে, আমি এটি কেবলমাত্র যুক্ত সিমলিংকের জন্য ব্যবহার করি যা এই অতিরিক্ত অসুবিধার কারণে উইন্ডোজ অ্যাপ্লিকেশনগুলি (যেমন নন-সাইগউইন) নেভিগেট করা হয়।

এই বিকল্প সম্পর্কে আরও তথ্যের জন্য, এই এসও প্রশ্নটি দেখুন: উইন্ডোজ 7-এ সাইগউইনের সাথে কীভাবে প্রতীকী লিঙ্ক তৈরি করা যায়


6

জোশ লির উত্তরের উপর ভিত্তি করে কেবল ফাইলগুলির জন্য, সংগ্রহশালায় সিমলিঙ্কগুলি রূপান্তর করার জন্য এখানে একটি ব্যাচের স্ক্রিপ্ট রয়েছে। প্রশাসকের অধিকারের জন্য অতিরিক্ত অতিরিক্ত চেক সহ স্ক্রিপ্টটি https://gist.github.com/Quazistax/8daf09080bf54b4c7641 এ রয়েছে

@echo off
pushd "%~dp0"
setlocal EnableDelayedExpansion

for /f "tokens=3,*" %%e in ('git ls-files -s ^| findstr /R /C:"^120000"') do (
     call :processFirstLine %%f
)
REM pause
goto :eof

:processFirstLine
@echo.
@echo FILE:    %1

dir "%~f1" | find "<SYMLINK>" >NUL && (
  @echo FILE already is a symlink
  goto :eof
)

for /f "usebackq tokens=*" %%l in ("%~f1") do (
  @echo LINK TO: %%l

  del "%~f1"
  if not !ERRORLEVEL! == 0 (
    @echo FAILED: del
    goto :eof
  )

  setlocal
  call :expandRelative linkto "%1" "%%l"
  mklink "%~f1" "!linkto!"
  endlocal
  if not !ERRORLEVEL! == 0 (
    @echo FAILED: mklink
    @echo reverting deletion...
    git checkout -- "%~f1"
    goto :eof
  )

  git update-index --assume-unchanged "%1"
  if not !ERRORLEVEL! == 0 (
    @echo FAILED: git update-index --assume-unchanged
    goto :eof
  )
  @echo SUCCESS
  goto :eof
)
goto :eof

:: param1 = result variable
:: param2 = reference path from which relative will be resolved
:: param3 = relative path
:expandRelative
  pushd .
  cd "%~dp2"
  set %1=%~f3
  popd
goto :eof

ইতিমধ্যে যখন এই ধরণের দীর্ঘ এবং ভার্ভোজের উত্তর উপস্থিত থাকে তখন একটি অনির্ধারিত উত্তর আসলেই খুব বেশি ব্যবহার হয় না।
Xennex81

4

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

>mklink /j <location(path) of link> <source of link>

উদাহরণ স্বরূপ:

>mklink /j c:\gitRepos\Posts C:\Bitnami\wamp\apache2\htdocs\Posts


2
উইন্ডোজ এক্সপ্লোরার এবং জংশনগুলির সাথে খুব সতর্কতা অবলম্বন করুন; এটি বেস অবস্থান থেকে জংশনগুলিকে পৃথক করে না এবং একটি মুছা লক্ষ্যতে পুনরাবৃত্তি হবে এবং এর সামগ্রীগুলি মুছবে, অন্যদিকে একটি সিমিলিংক মোছার ফলে সিমলিংকটি মুছে যাবে। অযত্নের জন্য কেবল একটি ফাঁদ।
লরেন্স ডল

5
প্রকৃতপক্ষে, উইন্ডোজ 7 এর সর্বশেষতমটিতে এটি সবেমাত্র পরীক্ষা করা হয়েছে এবং এটি আর তা করে না, তাই গত কয়েক বছরে জংশনগুলি পরিচালনা করা কোনও সময়ের উন্নত হয়েছে।
লরেন্স ডল

3

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

git config --global alias.rm-symlinks '!__git_rm_symlinks(){
for symlink in $(git ls-files -s | egrep "^120000" | cut -f2); do
    *if [ -d "$symlink" ]; then
      continue
    fi*
    git rm-symlink "$symlink"
    git update-index --assume-unchanged "$symlink"
done
}; __git_rm_symlinksenter 

2

একটি সহজ কৌশল যা আমরা ব্যবহার করি তা হ'ল একটানা git add --allদুবার কল করা।

উদাহরণস্বরূপ, আমাদের উইন্ডোজ 7 কমিট স্ক্রিপ্ট কল:

$ git add --all
$ git add --all

প্রথম যুক্তটি লিঙ্কটিকে পাঠ্য হিসাবে বিবেচনা করে এবং মোছার জন্য ফোল্ডার যুক্ত করে।

দ্বিতীয় সংযোজনটি লিঙ্কটিকে সঠিকভাবে অতিক্রম করে এবং ফাইলগুলি পুনরুদ্ধার করে মুছে ফেলার কাজটিকে পূর্বাবস্থায় ফিরিয়ে দেয়।

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

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