पाठ 6 · रोजमर्रा का काम
किसी बदलाव का आकलन करने से पहले तुलना पढ़ें
नायक को एक चलने योग्य स्थिर प्रोजेक्ट में बदलें, फिर कामकाजी, मंचित और रिकॉर्ड किए गए अंतरों को अलग करें। निरंतर पाठ्यक्रम इतिहास में कोई छवि प्रतिबद्धता जोड़े बिना एक अलग नियतात्मक छवि संस्करण का निरीक्षण करें।
- स्तर: शुरुआती
- 15 मिनट पढ़ा
- 5 मिनट का वीडियो
- अद्यतन किया गया
- इस पाठ से पहले: इच्छित स्नैपशॉट को स्टेज करें और अपनी पहली प्रतिबद्धता बनाएं
प्रगति इस ब्राउज़र में सहेजी गई.
चलाने से YouTube से वीडियो लोड होता है (गोपनीयता-उन्नत मोड)।
आप क्या सीखेंगे
- पाठ की तुलना के दोनों पक्षों को नाम दें और जोड़ने/हटाने की व्याख्या करें।
- बताएं कि क्यों एक अनट्रैक फ़ाइल सामान्य git अंतर से अनुपस्थित हो सकती है।
- दिखावे के बिना छवियों की दृश्य तुलना करें Git एक पाठ्य छवि पैच प्रदान करता है।
- चलाने योग्य पृष्ठ शुरू करने से पहले छोटे स्थानीय जाँच जोड़ें और सत्यापित करें।
शुरू करने से पहले
आप वहीं से शुरू करें जहां पाठ 5 समाप्त हुआ था: एक नायक प्रतिबद्धता के साथ मूल मुख्य। हेड/इंडेक्स में HTML-01 शामिल है; वर्किंग इंडेक्स.एचटीएमएल में HTML-01-वर्किंग शामिल है। कोई रिमोट मौजूद नहीं है. HTML-02 में उस सहायक-पंक्ति संपादन को सुरक्षित रखें; इसे त्यागें नहीं.
वीडियो को Git 2.52.0, नोड 22.22.0, एनपीएम 10.9.4 और GitTree 2.0 के साथ Ubuntu 24.04 पर रिकॉर्ड किया गया था: दस फाइलों को GitTree के स्वयं के संपादक में सहेजा गया था, ऐप में मंचित और प्रतिबद्ध किया गया था, और ऐप ने जो बनाया था, या स्टेजिंग से पहले और छवि के लिए राज्य के लिए अलग-अलग प्रतियों के खिलाफ टर्मिनल जांच की गई थी। नोड जाँच नोड 22 पर पारित हुई, वह संस्करण जो परियोजना घोषित करती है। macOS या Windows पर कुछ भी नहीं चलाया गया, और Ubuntu ही एकमात्र Linux सिस्टम रिकॉर्ड किया गया है। GitTree का निरीक्षण किया गया Git फ़्लोर 2.39.0 है। एक बार जब आप GitTree में साइन इन हो जाते हैं, तो स्थानीय Git मुफ़्त योजना पर होता है और उसे किसी प्रदाता या API क्रेडेंशियल की आवश्यकता नहीं होती है।
संकल्पना
एक अंतर two snapshots के बारे में एक प्रश्न का उत्तर देता है, न कि यह कि कोई फ़ाइल "अच्छी" है या नहीं। साधारण गिट अंतर सूचकांक → कार्यशील वृक्ष की तुलना करता है; git diff --cached तुलना HEAD → अनुक्रमणिका; git diff HEAD, HEAD → वर्किंग ट्री की तुलना करता है। प्लस नए साइड वाले टेक्स्ट को दर्शाता है और माइनस पुराने साइड वाले टेक्स्ट को दर्शाता है, अनुमोदन या दोष को नहीं। तुलना शब्दार्थ के लिए Git का भिन्न संदर्भ पढ़ें।
ट्रैक न की गई फ़ाइल में कोई सामान्य अनुक्रमणिका प्रविष्टि नहीं होती है. इसलिए खाली साधारण अंतर यह साबित नहीं करता है कि कोई नई फ़ाइल मौजूद नहीं है। समीक्षा स्थिति और नई जोड़ी गई फ़ाइल सामग्री भी। एक नई फ़ाइल को स्टेज करने के बाद, कैश्ड तुलना में इसके पूर्ण जोड़ की समीक्षा की जा सकती है।
इनलाइन/स्प्लिट/हंक, रैपिंग, इमेज मोड या हिडन-व्हाट्सएप डिस्प्ले बदलने से view बदलता है, फ़ाइल बाइट्स, इंडेक्स, कमिट्स या रिमोट रेफरी नहीं। स्टेजिंग से सूचकांक बदल जाता है। अंतिम सामान्य प्रतिबद्धता स्थानीय मुख्य को स्थानांतरित करती है; कोई सर्वर स्थिति नहीं बदलती.
पूर्ण चलने योग्य प्रोजेक्ट इनपुट
README-01 को अपरिवर्तित रखें। Index.html को HTML-02 से बदलें और नीचे दी गई सभी शेष फ़ाइलों को UTF-8/LF और एक अंतिम नई लाइन के साथ बनाएं। न्यूनतम .gitignore जानबूझकर है: बिल्ड आउटपुट को गलती से इस पहले चलने योग्य कमिट में दर्ज नहीं करना चाहिए। व्यापक उपेक्षा नीति बाद में आती है। ये पाठ्यक्रम-दस्तावेज़ पेलोड हैं, न कि वेब रिपॉजिटरी में स्थापित एप्लिकेशन फ़ाइलें।
Index.html - HTML-02
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>GitTree Features — course demo</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<header class="site-header">
<a href="#main">GitTree Features</a>
</header>
<main id="main">
<section class="hero" aria-labelledby="hero-title">
<p class="eyebrow">GitTree Learn demo project</p>
<h1 id="hero-title">Understand every change.</h1>
<p id="hero-copy">Choose one change, then check what Git saved.</p>
</section>
<section class="features" aria-labelledby="features-title">
<h2 id="features-title">Follow your work</h2>
<div class="cards">
<article class="feature-card">
<h3>History</h3>
<p>Read commits and branches together.</p>
</article>
<article class="feature-card">
<h3>Changes</h3>
<p>Review the exact content selected for a commit.</p>
</article>
<article class="feature-card">
<h3>Recovery</h3>
<p>Inspect the scope of a recovery point before using it.</p>
</article>
</div>
</section>
</main>
<footer><p>Built by a fictional team for GitTree Learn.</p></footer>
<script type="module" src="site.js"></script>
</body>
</html>स्टाइल्स.सीएसएस - सीएसएस-01
:root {
color-scheme: light;
--page: #f7f8fa;
--surface: #ffffff;
--text: #17212e;
--link: #154ab5;
--line: #bac4d0;
}
* {
box-sizing: border-box;
}
body {
margin: 0;
background: var(--page);
color: var(--text);
font: 1rem/1.6 system-ui, sans-serif;
}
a {
color: var(--link);
}
.site-header,
main,
footer {
width: min(68rem, 100% - 2rem);
margin-inline: auto;
}
.site-header {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
gap: 1rem;
padding-block: 1rem;
}
.hero {
max-width: 44rem;
padding-block: 3rem;
}
h1 {
font-size: clamp(2rem, 5vw, 3.5rem);
line-height: 1.2;
}
.cards {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(min(16rem, 100%), 1fr));
gap: 1rem;
}
.feature-card {
padding: 1rem;
border: 1px solid var(--line);
border-radius: 0.5rem;
background: var(--surface);
}
section {
margin-block-end: 2rem;
}
button,
input {
font: inherit;
}
button,
input {
padding: 0.5rem 0.75rem;
}
:focus-visible {
outline: 3px solid var(--link);
outline-offset: 3px;
}
form {
display: grid;
max-width: 28rem;
gap: 0.5rem;
}साइट.जेएस - जेएस-01
export function validateEmail(value) {
return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value.trim());
}
if (typeof document !== 'undefined') {
const form = document.querySelector('#signup-form');
const email = document.querySelector('#demo-email');
const result = document.querySelector('#signup-result');
const toggle = document.querySelector('#theme-toggle');
if (form && email && result) {
form.addEventListener('submit', (event) => {
event.preventDefault();
result.textContent = validateEmail(email.value)
? 'Valid format. This demo sent nothing.'
: 'Enter a complete fictional email address.';
});
}
if (toggle) {
toggle.addEventListener('click', () => {
const enabled = document.documentElement.dataset.theme !== 'dark';
document.documentElement.dataset.theme = enabled ? 'dark' : 'light';
toggle.setAttribute('aria-pressed', String(enabled));
toggle.textContent = enabled ? 'Use light mode' : 'Use dark mode';
});
}
}package.json - पैकेज-01
{
"name": "gittree-features",
"version": "0.1.0",
"private": true,
"type": "module",
"engines": {
"node": ">=22"
},
"scripts": {
"lint": "node scripts/lint.mjs",
"test": "node --test",
"build": "node scripts/build.mjs",
"start": "node scripts/serve.mjs"
}
}पैकेज-लॉक.जेसन - लॉक-01
{
"name": "gittree-features",
"version": "0.1.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "gittree-features",
"version": "0.1.0",
"engines": {
"node": ">=22"
}
}
}
}टेस्ट/साइट.टेस्ट.एमजेएस - टेस्ट-01
import assert from 'node:assert/strict';
import test from 'node:test';
import { validateEmail } from '../site.js';
test('accepts the fictional team address', () => {
assert.equal(validateEmail('maya@example.com'), true);
});
test('trims surrounding whitespace', () => {
assert.equal(validateEmail(' leo@example.com '), true);
});
test('rejects a missing domain', () => {
assert.equal(validateEmail('omar@'), false);
});
test('rejects a missing local part', () => {
assert.equal(validateEmail('@example.com'), false);
});
test('rejects spaces inside an address', () => {
assert.equal(validateEmail('sara name@example.com'), false);
});
test('rejects input without an at sign', () => {
assert.equal(validateEmail('priya.example.com'), false);
});स्क्रिप्ट्स/लिंट.एमजेएस - LINT-01
import { readFile } from 'node:fs/promises';
const files = ['index.html', 'styles.css', 'site.js'];
const problems = [];
for (const file of files) {
const source = await readFile(file, 'utf8');
if (!source.endsWith('\n')) problems.push(file + ': missing final newline');
const lines = source.split('\n');
for (const [index, line] of lines.entries()) {
if (/[\t ]+$/.test(line)) {
problems.push(file + ':' + (index + 1) + ': trailing whitespace');
}
}
}
if (problems.length > 0) {
process.stderr.write(problems.join('\n') + '\n');
process.exitCode = 1;
} else {
process.stdout.write('Source formatting checks passed.\n');
}स्क्रिप्ट्स/बिल्ड.एमजेएस - बिल्ड-01
import { copyFile, mkdir, readdir, stat } from 'node:fs/promises';
import path from 'node:path';
const output = path.resolve('dist');
const queue = ['index.html', 'styles.css', 'site.js', 'assets', 'vendor/snippets'];
await mkdir(output, { recursive: true });
while (queue.length > 0) {
const source = queue.pop();
let details;
try {
details = await stat(source);
} catch (error) {
if (error.code === 'ENOENT' && (source === 'assets' || source === 'vendor/snippets')) continue;
throw error;
}
if (details.isDirectory()) {
const entries = await readdir(source, { withFileTypes: true });
for (const entry of entries) {
if (entry.name !== '.git') queue.push(path.join(source, entry.name));
}
continue;
}
const target = path.join(output, source);
await mkdir(path.dirname(target), { recursive: true });
await copyFile(source, target);
}
process.stdout.write('Built the static site in dist/.\n');स्क्रिप्ट/सर्व.एमजेएस - सर्व-01
import { readFile, stat } from 'node:fs/promises';
import http from 'node:http';
import path from 'node:path';
const root = path.resolve('dist');
const port = Number(process.env.PORT ?? 8080);
const types = {
'.html': 'text/html; charset=utf-8',
'.css': 'text/css; charset=utf-8',
'.js': 'text/javascript; charset=utf-8',
'.bmp': 'image/bmp',
};
await stat(path.join(root, 'index.html'));
const server = http.createServer(async (request, response) => {
try {
const address = new URL(request.url, 'http://localhost');
const pathname = decodeURIComponent(address.pathname);
const target = path.resolve(root, '.' + (pathname === '/' ? '/index.html' : pathname));
const extension = path.extname(target);
if (!target.startsWith(root + path.sep) || !Object.hasOwn(types, extension)) {
response.writeHead(404).end('Not found');
return;
}
const body = await readFile(target);
response.writeHead(200, {
'Content-Type': types[extension],
'X-Content-Type-Options': 'nosniff',
}).end(body);
} catch {
response.writeHead(404).end('Not found');
}
});
server.listen(port, '127.0.0.1', () => {
process.stdout.write('Demo site: http://127.0.0.1:' + port + '\n');
});
process.on('SIGINT', () => server.close());
process.on('SIGTERM', () => server.close());.gitignore - इग्नोर-बिल्ड
dist/GitTree में
- मूल रिपॉजिटरी में, Command Palette… (कमांड/Ctrl+Shift+P) → Show Working Changes का उपयोग करें। Unstaged Files में Index.html पर क्लिक करें। इसे बदलने से पहले, पाठ 5 से बनाए गए समर्थन-पंक्ति संपादन की पहचान करें।
- Show Files (कमांड/Ctrl+Shift+E) का उपयोग करें; फ़ाइल ट्री में Index.html पर फ़ोकस करें और Enter दबाएँ। इसकी कार्यशील सामग्री को HTML-02 से बदलें, फिर Save (संपादक में Command/Ctrl+S)। सहेजे न गए संकेतक के साफ़ होने तक प्रतीक्षा करें।
- ऊपर दी गई एक-दूसरे की पूरी फ़ाइल के लिए: पैलेट New File… → Path from the project folder, सटीक रूट-सापेक्ष पथ टाइप करें → Create, अपना पूरा भाग चिपकाएँ → Save। नेस्टेड पथ अपनी लुप्त निर्देशिकाएँ बनाते हैं। मौजूदा-फ़ाइल अस्वीकृति का अर्थ है उस फ़ाइल का निरीक्षण करना, न कि अज्ञात कार्य को अधिलेखित करना।
- Back to Graph → पैलेट Show Working Changes। ट्रैक न की गई फ़ाइलों के साथ-साथ Index.html की भी समीक्षा करें। ऊपर बताए गए बिल्कुल दस बदले हुए पथों पर Stage File का उपयोग करें, डिस्ट आउटपुट उत्पन्न नहीं होगा। मौजूदा README को अछूता छोड़ दें।
- Staged Files के अंतर्गत प्रत्येक पथ पर क्लिक करें। Hunk, Inline और Split का उपयोग करें जैसा कि Diff view में उपलब्ध है। पैलेट समतुल्य हैं Show Diff as Hunks, Show Diff Inline, Show Diff Side by Side। Next change F7 है; Previous change Shift+F7 है। अरबी में भी स्प्लिट में पुराना बाएँ और नया दाएँ रहता है।
- Ignore whitespace / पैलेट Ignore Whitespace in Diffs का निरीक्षण करें, फिर इसे पुनर्स्थापित करें। छिपा हुआ रिक्त स्थान अनुपस्थित सामग्री नहीं है; रिक्त स्थान परिवर्तन छिपे होने पर आंशिक चयन अनुपलब्ध हो सकता है। स्वच्छ सूचकांक के प्रमाण के रूप में डिस्प्ले फ़िल्टर का उपयोग न करें।
- मूल फ़ोल्डर में नीचे मूल चेक चलाएँ। फिर सारांश
feat: add styling and local project checksदर्ज करें, संशोधन/पुश/खाली/स्किप-हुक बंद रखें, और Commit Changes to 10 Files चुनें। Command/Ctrl+Enter एक वैकल्पिक सबमिशन है, दूसरा चरण नहीं। दो कमिट सत्यापित करें और ट्रैक की गई स्थिति साफ़ करें।
टर्मिनल में
input चेकपॉइंट पर, यह रीड-ओनली क्वेरी अभी भी अप्रतिबद्ध पाठ 5 संपादन को कैप्चर करती है:
git diff -- index.htmlपूर्ण आउटपुट देखा गया:
diff --git a/index.html b/index.html
index 5470374..27f8718 100644
--- a/index.html
+++ b/index.html
@@ -13,7 +13,7 @@
<section class="hero" aria-labelledby="hero-title">
<p class="eyebrow">GitTree Learn demo project</p>
<h1 id="hero-title">Understand every change.</h1>
- <p id="hero-copy">A clear view of Git history.</p>
+ <p id="hero-copy">Choose one change, then check what Git saved.</p>
</section>
</main>
<footer><p>Built by a fictional team for GitTree Learn.</p></footer>सभी पेलोड को सहेजने के बाद, स्टेजिंग से पहले:
git status --short M index.html
?? .gitignore
?? package-lock.json
?? package.json
?? scripts/
?? site.js
?? styles.css
?? tests/निर्देशिका प्रविष्टियाँ स्क्रिप्ट/ और परीक्षण/ को अनट्रैक स्थिति में समूहीकृत किया गया है, यह इस बात का प्रमाण नहीं है कि उनके फ़ाइल निकायों की समीक्षा की गई थी।
जाँच चलाएँ; किसी निर्भरता स्थापना या नेटवर्क की आवश्यकता नहीं है क्योंकि ये स्क्रिप्ट केवल नोड बिल्ट-इन का उपयोग करती हैं:
npm run --silent lint
npm test -- --test-reporter=tap
npm run --silent build
git check-ignore dist/index.htmlदेखा गया लिंट आउटपुट:
Source formatting checks passed.प्रति-परीक्षण समय को छोड़कर, अवलोकन किया गया test-summary excerpt:
# tests 6
# suites 0
# pass 6
# fail 0
# cancelled 0
# skipped 0
# todo 0आउटपुट का अवलोकन किया गया और उसे अनदेखा किया गया, प्रत्येक एक आदेश:
Built the static site in dist/.
dist/index.htmlलिखित एनपीएम स्टार्ट स्क्रिप्ट लूपबैक को बांधती है और डिस्टर्ब करती है। यह लंबे समय तक चलने वाला है; सर्वर प्रक्रिया को उत्तीर्ण परीक्षा के साथ भ्रमित न करें। इसके लाइव HTTP व्यवहार को अभी भी रिकॉर्डिंग-पर्यावरण जांच की आवश्यकता है; यहां कोई सर्वर लेने का दावा नहीं किया गया है।
मूल चरण/प्रतिबद्ध विकल्प, केवल तभी जब ऐप ने पहले से ही उन उत्परिवर्तनों को निष्पादित नहीं किया हो:
git add -- .gitignore index.html styles.css site.js package.json package-lock.json tests/site.test.mjs scripts/lint.mjs scripts/build.mjs scripts/serve.mjs
git diff --cached --stat
git commit --quiet -m "feat: add styling and local project checks"
git rev-list --count HEAD
git status --shortशांत प्रतिबद्धता चुपचाप सफल हुई; प्रिंटों की गिनती करें 2, और अंतिम संक्षिप्त स्थिति खाली है। स्टेट एक समीक्षा सहायता है, सभी दस फ़ाइल निकायों को पढ़ने का विकल्प नहीं। dist को नजरअंदाज किया गया है, प्रतिबद्ध नहीं; कोई रिमोट नहीं जोड़ा गया.
अलग छवि-तुलना संस्करण
एक पृथक copy of this same GitTree Features checkpoint तैयार करें, कभी भी दूसरा असंबद्ध उदाहरण या सतत मूल उदाहरण न बनाएं। पहले बाइट्स के साथ एसेट/diff-card.png जोड़ें, एक स्पष्ट रूप से लेबल किए गए फ़िक्स्चर-ओनली कमिट बनाएं, फिर इसके कार्यशील बाइट्स को बाद में बदलें। इन मार्कडाउन फ़ाइलों द्वारा कोई छवि फ़ाइल या अंतिम मीडिया वितरित नहीं किया जाता है।
दोनों पीएनजी में नीला बायां आधा हिस्सा है। पहले एक सफेद दाहिना आधा भाग है; इसके बाद हरे रंग का निचला दाहिना भाग है। सटीक पूर्ण बाइट्स:
| संस्करण | आयाम | बाइट्स | SHA-256 |
|---|---|---|---|
| पहले | 64 × 64 | 162 | 9a09ba97c890da0d542166ba17882bea8f7bf9b9bd4f5ec068a156f6b7256773 |
| के बाद | 64 × 64 | 171 | 2ddabb4b9859aa53ff9c433a48cb7db0213e184b425a86fef20d8502eed8974f |
before — full PNG Base64 bytes
iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAaUlEQVR4nO3QAQkAAAjAMEtYyr7m0xgi7PACi6yey68LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4D/AAqNletEZdhfWAAAAAElFTkSuQmCCafter — full PNG Base64 bytes
iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAcklEQVR4nO3QQQ0AIBAEsTOBA9QQ1OANfaCC7INOMgZabeyTPF0BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ7f14wOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfABwAT8dDllEqFx1AAAAAElFTkSuQmCCएक रिकॉर्डिंग ऑपरेटर पृथक प्रतिलिपि में एक समय में एक पेलोड को डीकोड कर सकता है:
node --input-type=module -e "import {mkdirSync,writeFileSync} from 'node:fs'; mkdirSync('assets',{recursive:true}); writeFileSync('assets/diff-card.png',Buffer.from('<selected-full-base64>','base64'));"एंगल-ब्रैकेट प्लेसहोल्डर को ब्रैकेट के बिना, एक पूर्ण पेलोड से बदलें। पहले डिकोड करें, फिक्स्चर को स्टेज/कमिट करें, फिर स्टेजिंग के बिना डिकोड करें। आपूर्ति की गई बाइट गणना/डाइजेस्ट प्रत्येक स्थिति की पहचान करती है; कभी भी मनगढ़ंत छवि स्क्रीनशॉट का दोबारा उपयोग न करें।
उस संस्करण में, मूल:
git diff --numstat -- assets/diff-card.pngबाइनरी जांच में देखा गया:
- - assets/diff-card.pngडैश का मतलब है कि Git बाइनरी डेटा रिपोर्ट करता है, शून्य परिवर्तित पिक्सेल नहीं।
वास्तविक ऐप में: Show Working Changes → अनस्टेज्ड फाइलों में एसेट्स/डिफ-कार्ड.पीएनजी पर क्लिक करें → Side by side → Swipe, तीर कुंजियों के साथ Swipe position ले जाएं → Onion skin, बदलें After image opacity। पैलेट समकक्ष: Show Image Changes Side by Side, Show Image Changes with a Swipe, Show Image Changes as Onion Skin। दोनों पक्षों को वास्तव में डिकोड करना होगा; अनुपस्थित/बहुत बड़ी/छवि न होना एक अलग वैध स्थिति है, छवि को नकली बनाने का कोई कारण नहीं है। स्रोत पीएनजी/जेपीईजी/जीआईएफ/वेबपी को पहचानता है, not BMP; बाद के एलएफएस बीएमपी फिक्स्चर को इस छवि दृश्य का वादा नहीं किया जाना चाहिए।
अगले पाठ के लिए मूल, चौकी पर लौटें। छवि संस्करण की अतिरिक्त प्रतिबद्धता/परिसंपत्तियाँ कभी भी विहित इतिहास में दर्ज नहीं होती हैं।
नतीजा
मुख्य पर दो प्रतिबद्धताएँ; README प्लस दस घोषित इनपुट ट्रैक किए गए; अनुक्रमणिका/कार्यशील फ़ाइलें HEAD से सहमत हैं; जेनरेटेड डिस्ट मौजूद हो सकता है लेकिन इसे नजरअंदाज कर दिया जाता है। कैनोनिकल ट्री में कोई छवि फिक्स्चर या रिमोट नहीं है।
सामान्य गलतियाँ
- नई फ़ाइलें अनट्रैक होने पर सामान्य अंतर खाली करें: स्थिति और चरणबद्ध परिवर्धन का निरीक्षण करें।
- --stat को शुद्धता के रूप में पढ़ना: वास्तविक सामग्री और दोनों तुलना समापन बिंदुओं का निरीक्षण करें।
- रिक्त स्थान को छिपाने को रिक्त स्थान को हटाने के समान मानना: यह केवल एक दृश्य है।
- कमिटिंग डिस्ट या छवि-पक्ष स्थिरता: सटीक विहित सूची को चरणबद्ध करें।
अगर कुछ गलत होता है
एक असफल लिंट/परीक्षण/बिल्ड एक वास्तविक संकेत है; इसके आउटपुट को बनाए रखें और केवल बताए गए डेमो इनपुट को ठीक करें। चेक न छोड़ें या अज्ञात फ़ोल्डर न हटाएं। एक अवरुद्ध/असमर्थित छवि तब तक एक ईमानदार बाइनरी/आकार सूचना बनी रहनी चाहिए जब तक कि उसका वास्तविक प्रारूप/आकार मेल न खा जाए। पुराने आंशिक-चयन अनुरोध को रद्द करें और पैच को बाध्य करने के बजाय वर्तमान अंतर को पुनः लोड करें।
अपनी समझ की जाँच करें
प्रत्येक प्रश्न का उत्तर दें, फिर क्यों पढ़ें। "आवश्यक" चिह्नित प्रश्न पाठ को पूरा करने में गिने जाते हैं।
6 में से 0 सही
पाठ को पूरा करने के लिए आवश्यक प्रश्नों के सही उत्तर दें।
इस ब्राउज़र में चेक किया गया.
अभ्यास करें
मूल में, गिनती 2, खाली कार्यशील/कैश्ड अंतर और उपेक्षित जिले को सत्यापित करें। अलग छवि संस्करण में, नाम बताएं कि कौन सा चतुर्थांश बदला है और मूल न्यूमस्टैट रिपोर्ट डैश क्यों करती है। परिवर्तित इनपुट: यदि कोई नई फ़ाइल चरणबद्ध होने के बजाय अनट्रैक रहती है, तो अनुमान लगाएं कि सामान्य अंतर अभी भी इसे छोड़ सकता है।
आपकी अपनी पुष्टि: साइट आपका कंप्यूटर नहीं देख सकती।
पाठ को पूरा करने के लिए आवश्यक प्रश्नों के सही उत्तर दें और व्यावहारिक अभ्यास की पुष्टि करें।
पुनर्कथन
- अंतर पढ़ने से पहले दोनों समापन बिंदुओं को नाम दें।
- टेक्स्ट, बाइनरी और डिकोडेड छवि दृश्य अलग-अलग साक्ष्य प्रदान करते हैं।
- जाँच और सटीक स्टेजिंग चलने योग्य चेकपॉइंट की सुरक्षा करती है।
संबंधित
शब्दावली शब्द प्रस्तुत किये गये
डिफ - فروق; हंक - كتلة; सूचकांक - الفهرس; काम करने वाला पेड़ - مجلد العمل; बाइनरी - ثنائي; अनट्रैक्ड - غير مُتتبَّع.
वीडियो प्रतिलेख
वीडियो का वर्णन, संकेत दर संकेत।
प्रतिलिपि दिखाएँ
- तुलना पढ़ें परिवर्तन का आकलन करने से पहले.
- बाद की हीरो लाइन अभी भी है कामकाजी सामग्री, कोई नई प्रतिबद्धता नहीं।
- साधारण और मंचित में अंतर है विभिन्न स्नैपशॉट की तुलना करें.
- रखते हुए, पूर्ण चलने योग्य इनपुट जोड़ें मौजूदा सपोर्टिंग-लाइन संपादित करें।
- नई फ़ाइलें सामान्य से गायब हो सकती हैं जब तक वे सूचकांक में प्रवेश नहीं करते तब तक अंतर होता है।
- घोषित इनपुट को चरणबद्ध करें, बिल्ड आउटपुट उत्पन्न नहीं हुआ।
- लेआउट आपका बदलता है देखें, तुलना किए गए बाइट्स नहीं।
- पहले आसपास के पाठ का अनुसरण करें जोड़ने या हटाने की व्याख्या करना।
- रिक्त स्थान छिपाना नहीं है रिक्त स्थान परिवर्तन को हटाना।
- स्थानीय स्वरूपण चलाएँ प्रतिबद्ध होने से पहले जांच लें.
- सभी छह इनपुट-सत्यापन इस स्थिरता में परीक्षण पास हो जाते हैं।
- बिल्ड आउटपुट में शामिल है उपेक्षित निर्देशिका, प्रतिबद्धता नहीं।
- समीक्षा करें स्थानीय स्तर पर चलाने योग्य परियोजना।
- दो कमिट सत्यापित करें और नहीं शेष ट्रैक किया गया अंतर।
- छवि तुलना के लिए एक अलग प्रति का उपयोग करें, सतत चौकी नहीं.
- दो सटीक पीएनजी पेलोड छवि स्थितियों की पहचान करें.
- नामित पक्षों की तुलना करें और उनके वास्तविक आयाम.
- डिवाइडर को बिना हटाएं किसी भी फ़ाइल को बदलना।
- अपारदर्शिता तुलना को बदल देती है, सहेजे गए पिक्सेल नहीं.
- Git का बाइनरी सारांश नहीं है परिवर्तित पिक्सेल की गिनती.
- एक असमर्थित या बड़े आकार की फ़ाइल इसकी ईमानदार सूचना अवश्य रखनी चाहिए।
- छवि स्थिरता रखें विहित इतिहास के बाहर.
- भविष्यवाणी करें कि कौन सी तुलना एक नई चरणबद्ध फ़ाइल दिखाता है।
- इसके बाद, हंक्स और लाइन्स का चयन करें अन्य कार्य को छोड़े बिना.