2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
सम्बन्धित विषयः १.
git reuse recorded resolution
(rerere
) परस्परविरोधिनः Git संस्करणाः विलीनाः कुर्वन्तुOrphan branches
)यदि git
पुस्तकालयः स्थानीयः अस्ति, दूरतः कोडं साझां कर्तुं आवश्यकता नास्ति चेदपि स्थानीयशाखायाः प्रबन्धनं गोदामवत् कर्तुं शक्यते यस्याः दूरतः साझेदारी आवश्यकी भवति यथा अस्मिन् उदाहरणे दर्शितं, भवद्भिः प्रथमं स्थानीयक्षेत्रे गोदामस्य प्रतिलिपिः कर्तव्या, यस्य अर्थः अस्ति यत् दूरस्थं पुस्तकालयः अस्ति ।
# clone the jgit repository to match
$ git clone https://git.eclipse.org/r/jgit/jgit
$ cd jgit
# Whenever you start working on a bug fix or a new
# feature in your project, you should create a branch
$ git branch newBugFix
$ git branch
* master
newBugFix
# The newBugFix branch points to the current HEAD
# to verify this:
$ git log -1 newBugFix --format=format:%H
25fe20b2dbb20cac8aa43c5ad64494ef8ea64ffc
# edit branch description
$ git branch --edit-description newBugFix
# Add description in a newly opened editor
Refactoring the Hydro controller
The hydro controller code is currently horrible needs to be refactored.
# Show the description
$ git config --get branch.newBugFix.description
Refactoring the Hydro controller
The hydro controller code is currently horrible and needs to be refactored.
# Show the commit hash the new branch based on
$ cat .git/refs/heads/newBugFix
25fe20b2dbb20cac8aa43c5ad64494ef8ea64ffc
द्रष्टुं शक्यते यत्... ID
वर्तमानेन सहHEAD
इत्यस्यID
सङ्गत।
नोटः- नूतनशाखायाः निर्माणानन्तरं भवद्भिः अस्याः शाखायाः कृते परिवर्तनं करणीयम्:git checkout -b <newBranch>
विस्तार: यदि त्वं न अनुसरसि HEAD
नूतनं शाखां रचयन्तु, परन्तु निश्चितं commit ID (979e346
), अस्मिन् समये अस्मिन् संस्करणे आधारितं प्रस्तुतीकरणं लिखितुं शक्यते यत् :
# new branch from commit ID
$ git branch anotherBugFix 979e346
$ git log -1 anotherBugFix --format=format:%h
979e346
$ git log -1 anotherBugFix --format=format:%H
979e3467112618cc787e161097986212eaaa4533
# checkout new branch
$ git checkout -b lastBugFix 979e346
शाखासूचनाः पश्यन्तु : १.
git branch
: शाखानाम एवgit branch -v
: टिप्पणीकृतं सरलं च आधारितं 1 SHA-1
git branch -vv
: 2 इत्यस्य आधारेण दूरस्थनिरीक्षणशाखानामानि प्रदर्शयन्तु$ git branch -v
anotherBugFix 979e346 Interactive Rebase: Do actions if
* lastBugFix 979e346 Interactive Rebase: Do actions if
master 25fe20b Add missing package import for jg
newBugFix 25fe20b Add missing package import for jg
$ git branch -vv
anotherBugFix 979e346 Interactive Rebase: Do actions if e
* lastBugFix 979e346 Interactive Rebase: Do actions if e
master 25fe20b [origin/master] Add missing package
newBugFix 25fe20b Add missing package import for g
कदाचित्, अन्यस्य कोड-आधारस्य क्लोन-तः देशी-सङ्केतः उत्पन्नः भवितुम् अर्हति ।अस्मिन् क्षणे स्थानीयसङ्केते दूरस्थः गोदामः अस्ति, यः प्रायः उच्यतेorigin
स्रोतः।Git इत्यस्य दूरस्थसङ्केतमूलस्य च अवगमनाय भवान् आरभ्यतुं शक्नोतिgit status
आदेशः आरभ्यते :
$ git checkout -b remoteBugFix --track origin/stable-3.2
Switched to a new branch 'remoteBugFix'
Branch 'remoteBugFix' set up to track remote branch 'stable-3.2' from 'origin'.
दृश्यमानः, २.remoteBugFix
शाखायाः दूरस्थनिरीक्षणशाखा अस्तिorigin/stable-3.2
.अस्मिन् समयेgit status
परिणामेषु स्थानीयं दृश्यतेHEAD
दूरस्थेन सहHEAD
स्थानीयशाखां दूरस्थशाखां प्रति शीघ्रं अग्रे प्रेषयितुं शक्यते वा। उदाहरणानि यथा- १.
# Find a commit on remote branch
$ git log -10 origin/stable-3.2 --oneline
# Checkout specific SHA-1
$ git reset --hard 2e0d178
HEAD is now at 2e0d17885 Add recursive variant of Config.getNames() methods
# Use 'git status' to see the free benefit of Git
$ git status
On branch remoteBugFix
Your branch is behind 'origin/stable-3.2' by 9 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
nothing to commit, working tree clean
सूचना:
fast-forward
, इत्यस्य अर्थः अस्ति यत् गिट् विलयं कर्तुं शक्नोति HEAD
नवीनतमसंस्करणं प्रति गच्छन्तु;git pull
आदेशः वस्तुतः द्वयोः आदेशयोः संयोजनम् अस्ति ।git fetch
git merge
(दूरस्थनिरीक्षणशाखायाः स्थानीयशाखायाम् विलीनीकरणं कुर्वन्तु)उपर्युक्तं निष्पादयन्तु git status
आदेशस्य उपयोगः स्थानीयनिष्पादनस्य अनुकरणार्थं भवतिgit fetch
तदनन्तरं दूरस्थशाखायां नूतना सामग्री स्थानीयनिरीक्षणशाखायां आकृष्टा अस्तिorigin/stable-3.2
स्थितिः। विलयं निरन्तरं कृत्वा वास्तवतः स्थानीयशाखायाः समन्वयः भविष्यति:
$ git merge origin/stable-3.2
Updating 2e0d17885..f839d383e
Fast-forward
.../org/eclipse/jgit/api/RebaseCommandTest.java | 213 +++++++++++++++++----
.../src/org/eclipse/jgit/api/RebaseCommand.java | 31 +--
.../jgit/errors/IllegalTodoFileModification.java | 59 ++++++
.../eclipse/jgit/lib/BaseRepositoryBuilder.java | 2 +-
.../src/org/eclipse/jgit/lib/Config.java | 2 +
.../src/org/eclipse/jgit/lib/RebaseTodoLine.java | 16 +-
6 files changed, 266 insertions(+), 57 deletions(-)
create mode 100644 org.eclipse.jgit/src/org/eclipse/jgit/errors/IllegalTodoFileModification.java
निष्पादनपरिणामानुसारं यथा git status
यथा प्रॉम्प्ट् मध्ये उक्तं, एषः विलयः द्रुत-अग्रे विलयः (fast-forward merge
)
स्थानीयशाखायाः निर्माणकाले उपयोगस्य अतिरिक्तं --track
दूरस्थनिरीक्षणशाखां निर्दिशन्तु, .git
विद्यमानशाखासु दूरस्थशाखाः निर्दिष्टुं समर्थनम् अपि अस्ति । यदि भवान् पूर्वमेव स्थानीयशाखां निर्माय दूरस्थशाखां सम्बद्धं कर्तुं विस्मरति तर्हिgit
इदं विलम्बितबन्धनविशेषता कार्ये आगच्छति:
# Checkout a new branch without relating to its remote tracking branch
$ git checkout -b remoteBugFix2 2e0d17
Switched to a new branch 'remoteBugFix2'
# Set the tracking branch manually by using -u or --set-upstream-to
$ git branch --set-upstream-to origin/stable-3.2
Branch remoteBugFix2 set up to track remote branch stable-3.2 from origin.
# Validate current status
$ git status
On branch remoteBugFix2
Your branch is behind 'origin/stable-3.2' by 9 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
nothing to commit, working directory clean
# Same as the previous demo as expected.
# Update the branch (also a fast-forward merge with origin/stable-3.2)
$ git pull
Updating 2e0d17885..f839d383e
Fast-forward
.../org/eclipse/jgit/api/RebaseCommandTest.java | 213 +++++++++++++++++----
.../src/org/eclipse/jgit/api/RebaseCommand.java | 31 +--
.../jgit/errors/IllegalTodoFileModification.java | 59 ++++++
.../eclipse/jgit/lib/BaseRepositoryBuilder.java | 2 +-
.../src/org/eclipse/jgit/lib/Config.java | 2 +
.../src/org/eclipse/jgit/lib/RebaseTodoLine.java | 16 +-
6 files changed, 266 insertions(+), 57 deletions(-)
create mode 100644 org.eclipse.jgit/src/org/eclipse/jgit/errors/IllegalTodoFileModification.java
# The output is still the same as previous one as expected.
# Validate the current HEAD with origin/stable-3.2
$ git log -1 origin/stable-3.2 --format=format:%h
f839d383e
# Still the same.
एतत् पुस्तकं पठितुं पूर्वं भवान् सॉफ्टवेयरवितरणशृङ्खलानां शाखाकरणप्रतिमानानाम् अपि अनेकानि उदाहरणानि दृष्टवान् स्यात्, केवलं एतत् ज्ञातुं यत् एकवारं साधनं विशिष्टं कार्यप्रवाहं समर्थयति चेत्, तस्य पूर्णतया कार्यान्वयनम् कठिनं भवति अनुप्रयोगपरिदृश्यानि भवन्तः इच्छन्ति। तथा च Git प्रायः सर्वाणि कार्यप्रवाहपरिदृश्यानि समर्थयति । एकः सामान्यः आवश्यकता अस्ति यत् कस्यापि विशेषतायाः विलयसमये विलयप्रतिबद्धतां जनयितुं शक्नुयात् (यद्यपि नूतनानि विशेषतानि द्रुत-अग्रे-विधाने समावेशितुं शक्यन्ते) । एतादृशी आवश्यकता प्रायः कश्चन विशेषता विलीनः इति सूचयितुं उपयुज्यते, भवान् इच्छति यत् एतत् विलयक्रिया स्पष्टतया गोदामे संगृहीतं भवतु
संकेता
यदर्थे
Git
सर्वाणि प्रस्तुतीकरणसूचनाः प्राप्तुं सुलभं द्रुतं च मार्गं प्रदाति,Git
पुस्तकालयस्य उपयोगः वस्तुतः यथावृत्त, न केवलं स्रोतसङ्केतः backup इति。
निम्नलिखित उदाहरणं बलात् विलयप्रतिबद्धतां जनयिष्यति:
# Checkout branch stable-3.1 as remoteOldBugFix for use
$ git checkout -b remoteOldBugFix --track origin/stable-3.1
# force a merge commit
$ git merge origin/stable-3.2 --no-ff --edit --quiet
टिप्पणी, प्रयोग --edit
पैरामीटर्स् सेट् कृत्वा, भवान् उद्घाटिते सम्पादके पूर्वनिर्धारितं merge commit comment information परिवर्तयितुं शक्नोति ।उदाहरणे--no-ff
द्रुत अग्रे मोडं निष्क्रियं कर्तुं सूचयति;--quiet
स्क्रीन आउटपुट् सामग्रीं सरलीकर्तुं प्रयुक्तम् । अन्तिमः प्रभावः चित्रे दर्शितः अस्ति : १.
सामान्यमार्गेण सह तुलनायै विलयनं कुर्वन् विलोपयन्तु --no-ff
पैरामीटर् आइटम्स् : १.
# Reset to initial status
$ git reset --hard remotes/origin/stable-3.1
# Merge with fast forward by default
$ git merge origin/stable-3.2 --quiet
प्रभावः यथा- १.
पूर्णविलयनस्य अतिरिक्तं Git उपयोक्तृभ्यः विलयितसामग्रीषु हस्तक्षेपं कर्तुं स्वतन्त्रतया निर्णयं कर्तुं च अनुमतिं ददाति यत् विलयने का सामग्री समाविष्टा अस्तिउपयुञ्जताम्--no-commit
पैरामीटर्, २.git
विलयप्रतिबद्धतायाः पूर्वं प्रक्रियां बाधयिष्यति, यत् उपयोक्तारं अन्तिमप्रतिबद्धतायाः पूर्वं सञ्चिकाः परिवर्तयितुं वा योजयितुं वा शक्नोति । यथा, परियोजनायाः विशेषताशाखायां परियोजनासंस्करणसङ्ख्या परिवर्तिता भवति, परन्तु मुख्यशाखा परिवर्तिता नास्ति । पूर्वनिर्धारितविलयनक्रिया संस्करणसङ्ख्यां विशेषताशाखायां संस्करणसङ्ख्यायां अद्यतनं करिष्यति, परन्तु भवान् वस्तुतः संस्करणसङ्ख्यां परिवर्तयितुम् न इच्छति ।एतस्य समयस्य उपयोगं कुर्वन्तु--no-commit
परिहर्तुं शक्यते।
निम्नलिखित उदाहरणं उपयोक्तृहस्तक्षेपेण सह विलयनक्रियां दर्शयति । विलयकाले, भवान् तत् प्रतिबद्धं स्वहस्तेन बहिष्कृतुं इच्छति यत् अनुज्ञापत्रसञ्चिकां अद्यतनं कृतवान्:
# Clone repo into demo
$ git clone https://github.com/PacktPublishing/Git-Version-Control-Cookbook-Second-Edition_hello_world_flow_model.git demo
$ cd demo
# Checkout remote branch
$ git checkout -b remotePartlyMerge --track origin/release/1.0
Branch remotePartlyMerge set up to track remote branch release/1.0 from origin.
Switched to a new branch 'remotePartlyMerge'
# Force a merge commit with --no-commit flag
$ git merge origin/master --no-ff --no-commit
Automatic merge went well; stopped before committing as requested
# Exclude LICENSE file
$ git reset LICENSE
# Resume merging
$ git commit -m "Merging without LICENSE"
[remotePartlyMerge 1202b0e] Merging without LICENSE
# Check status (only LICENSE file remain untracked)
$ git status
On branch remotePartlyMerge
Your branch is ahead of 'origin/release/1.0' by 6 commits.
(use "git push" to publish your local commits)
Untracked files:
(use "git add <file>..." to include in what will be committed)
LICENSE
nothing added to commit but untracked files present (use "git add" to track)
# check difference excluding LICENSE file (only on Linux)
$ git diff origin/master !(LICENSE)
जालवेगस्य समस्यां विचार्य नमूनाभण्डारः अभवत् Git-Version-Control-Cookbook-Second-Edition_hello_world_flow_model.git
अस्मिन् शिक्षणपुस्तकालये योजयन्तु (repos/ex3.3-no-commit-repo.rar
)