full - integrate git bash with visual studio code




यदि शाखा पहले से ही मास्टर में विलय हो चुकी है तो मैं गिट में कैसे जान सकता हूं? (5)

आप दो शाखाओं के बीच नवीनतम आम प्रतिबद्धता खोजने के लिए git merge-base कमांड का उपयोग कर सकते हैं। यदि वह प्रतिबद्धता आपके शाखा प्रमुख के समान ही है, तो शाखा पूरी तरह से विलय हो गई है।

ध्यान दें कि git branch -d इस तरह की चीज पहले से ही करती है क्योंकि यह ऐसी शाखा को हटाने से इनकार कर देगी जो पूरी तरह से पूरी तरह से विलय नहीं हुई है।

मेरे पास कई शाखाओं के साथ एक गिट भंडार है।

मुझे कैसे पता चलेगा कि कौन सी शाखाएं मास्टर शाखा में पहले से ही विलय हो चुकी हैं?


एक ग्राफिकल इंटरफ़ेस समाधान भी है। बस टाइप करो

gitk --all

एक नई एप्लिकेशन विंडो आपके पूरे रेपो के आलेखीय प्रतिनिधित्व के साथ संकेत करेगी, जहां यह जानना बहुत आसान है कि कोई शाखा पहले ही विलय हो चुकी है या नहीं


यहां मेरी तकनीकें हैं जब मुझे यह पता लगाने की आवश्यकता है कि क्या शाखा को विलय कर दिया गया है, भले ही इसे हमारी मुख्य शाखा के साथ अद्यतित किया गया हो, जो फीचर शाखाओं के लिए एक आम परिदृश्य है।

इन दृष्टिकोणों में से कोई भी मूर्ख प्रमाण नहीं है, लेकिन मैंने उन्हें कई बार उपयोगी पाया है।

1 सभी शाखाओं के लिए लॉग दिखाएं

एक दृश्य उपकरण का उपयोग करना जैसे कि गिटक या टोर्टोइज गिट, या बस गिट लॉग - साथ, मुख्य शाखा में सभी विलय देखने के लिए इतिहास के माध्यम से जाएं। यदि यह विशेष सुविधा शाखा विलय कर दी गई है या नहीं, तो आपको यह पता लगाने में सक्षम होना चाहिए।

2 फीचर शाखा में विलय करते समय हमेशा दूरस्थ शाखा को हटा दें

यदि आप फीचर शाखा में विलय करते समय स्थानीय और रिमोट शाखा दोनों को हमेशा हटाने की अच्छी आदत रखते हैं, तो आप बस अपने अन्य कंप्यूटर पर रिमोट अपडेट और प्रिंटर कर सकते हैं और फीचर शाखाएं गायब हो जाएंगी।

ऐसा करने में मदद करने के लिए, मैं पहले से ही अपनी फीचर शाखाओं को स्थानीय रूप से बनाने और विलय करने के लिए गिट फ्लो एक्सटेंशन (एवीएच संस्करण) का उपयोग कर रहा हूं, इसलिए मैंने निम्नलिखित गिट फ्लो हुक को मुझसे पूछने के लिए जोड़ा कि क्या मैं रिमोट शाखा को स्वतः निकालना चाहता हूं।

उदाहरण फ़ीचर शाखा बनाएं / समाप्त करें

554 Andreas:MyRepo(develop)$ git flow start tmp
Switched to a new branch 'feature/tmp'

Summary of actions:
- A new branch 'feature/tmp' was created, based on 'develop'
- You are now on branch 'feature/tmp'

Now, start committing on your feature. When done, use:

     git flow feature finish tmp

555 Andreas:MyRepo(feature/tmp)$ git flow finish
Switched to branch 'develop'
Your branch is up-to-date with 'if/develop'.
Already up-to-date.

[post-flow-feature-finish] Delete remote branch? (Y/n)
Deleting remote branch: origin/feature/tmp.

Deleted branch feature/tmp (was 02a3356).

Summary of actions:
- The feature branch 'feature/tmp' was merged into 'develop'
- Feature branch 'feature/tmp' has been locally deleted
- You are now on branch 'develop'

556 Andreas:ScDesktop (develop)$

.git / हुक / उत्तर प्रवाह सुविधा खत्म

NAME=$1
ORIGIN=$2
BRANCH=$3

# Delete remote branch
# Allows us to read user input below, assigns stdin to keyboard
exec < /dev/tty

while true; do
  read -p "[post-flow-feature-finish] Delete remote branch? (Y/n) " yn
  if [ "$yn" = "" ]; then
    yn='Y'    
  fi
  case $yn in
      [Yy] ) 
        echo -e "\e[31mDeleting remote branch: $2/$3.\e[0m" || exit "$?"
        git push $2 :$3; 
        break;;
      [Nn] ) 
        echo -e "\e[32mKeeping remote branch.\e[0m" || exit "$?"
        break;;
      * ) echo "Please answer y or n for yes or no.";;
  esac
done

# Stop reading user input (close STDIN)
exec <&-
exit 0

3 प्रतिबद्ध संदेश द्वारा खोजें

यदि आप हमेशा रिमोट शाखा को नहीं हटाते हैं, तो आप अभी भी यह निर्धारित करने के लिए समान प्रतिबद्धताओं की खोज कर सकते हैं कि शाखा विलय हो गई है या नहीं। यहां का नुकसान यह है कि अगर रिमोट शाखा को पहचानने योग्य नहीं किया गया है, जैसे स्क्वैशिंग प्रतिबद्धता या प्रतिबद्ध संदेश बदलना।

  • सभी रिमोट प्राप्त करें और छेड़छाड़ करें
  • फीचर शाखा पर अंतिम प्रतिबद्धता का संदेश पाएं
  • देखें कि मास्टर शाखा पर एक ही संदेश के साथ एक प्रतिबद्धता पाई जा सकती है या नहीं

मास्टर शाखा पर उदाहरण आदेश:

gru                   
gls origin/feature/foo
glf "my message"

मेरे बैश में। प्रोफाइल कॉन्फ़िगरेशन

alias gru='git remote update -p'
alias glf=findCommitByMessage

findCommitByMessage() {
    git log -i --grep="$1"
}

git branch --merged master सूचियों मास्टर मास्टर में विलय

git branch --merged सूचीबद्ध सूची शाखाएं सिर में विलय (यानी वर्तमान शाखा की नोक)

git branch --no-merged सूचियां शाखाएं जिन्हें विलय नहीं किया गया है

डिफ़ॉल्ट रूप से यह केवल स्थानीय शाखाओं पर लागू होता है। -a ध्वज स्थानीय और दूरस्थ दोनों शाखाओं को दिखाएगा, और -r झंडा केवल रिमोट शाखाओं को दिखाता है।


रिमोट शाखाओं की सफाई के विषय पर

git branch -r | xargs -t -n 1 git branch -r --contains

यह प्रत्येक दूरस्थ शाखा को सूचीबद्ध करता है जिसके बाद उनके नवीनतम एसएचए रिमोट शाखाएं भीतर होती हैं।

यह समझने में उपयोगी है कि कौन सी रिमोट शाखाएं विलय कर दी गई हैं लेकिन हटाई नहीं गई हैं, और जिन्हें विलय नहीं किया गया है और इस तरह क्षय हो रहा है।

यदि आप 'टिग' (इसकी तरह गिटक लेकिन टर्मिनल आधारित) का उपयोग कर रहे हैं तो आप कर सकते हैं

tig origin/feature/someones-decaying-feature

चेकआउट गिट किए बिना शाखा के प्रतिबद्ध इतिहास को देखने के लिए





git