Git-and-github Basic Discussion

  • Uploaded by: saju
  • 0
  • 0
  • January 2021
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Git-and-github Basic Discussion as PDF for free.

More details

  • Words: 4,136
  • Pages: 11
Loading documents preview...
n06|10

GIT & GITHUB BASIC DISCUSSION

What is Git? Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.

What is GitHub? GitHub is a web-based hosting service for version control using Git. It is mostly used for computer code. It offers all of the distributed version control and source code management (SCM) functionality of Git as well as adding its own features.

 Read more on git and git hub Some Basic Terminology       

     

Repository: A Git Repository, or a repo, is a folder that you’ve told Git to help you track file changes. Branch: A branch is an independent line of development. You can think of it as a brand new working directory. Fork: A fork is a personal copy of another user’s repository that lives on your account. Clone: A clone is simply a copy of a repository that lives on your computer instead of on a server. Commit: A commit is a set of one or more changes to a file (or a set of files). Every time you save, it creates a unique ID(“hash”) which helps it keep track of the history. Master: The default development branch. Whenever you create a git repo, a branch named “master is created which becomes the default active branch. SSH Key: Secure Shell (SSH) is a cryptographic network protocol for operating network services securely over an unsecured network. Using the SSH protocol, you can connect and authenticate to remote servers and services. Pull Request: Pull requests let you tell others about changes you've pushed to a branch in a repository on GitHub. Stash: Store (something) safely in a hidden or secret place. Git Pull: Incorporates changes from a remote repository into the current branch. Git Fetch: The git fetch command downloads commits, files, and refs from a remote repository into your local repo. Fetching is what you do when you want to see what everybody else has been working on. Git Checkout: In Git terms, a "checkout" is the act of switching between different versions of a target entity. The git checkout command operates upon three distinct entities: files, commits, and branches. Git Merge: The git merge command lets you take the independent lines of development created by git branch and integrate them into a single branch.

Mainly We’ll Discuss Here:      

pg. 1

Commit Pull Clone Fetch Merge Diff

* SSH Key Generation * Branching * Stash * Git GUI

* Fork * Pull Request * gitignore

2

Git & Github Basic Discussion

Git ও GitHub এর পার্থক্যঃ C++ ক্রার জন্য অনন্নক্ Dev-C++ বা codeblocks ইত্যাদি ইউজ ক্নর দক্ন্তু মেইন্ ইদিন্ দিনেনব দক্ন্তু gcc + compiler ক্াজ ক্নর। এরক্েভানব GitHub দিট দিনেই ক্াজ ক্নর দক্ন্তু দিটিাব online repository provide ক্নর। দন্নের দেত্র মিদ ঃ

More Terminology & Explanation Work Directory: মে দিনরক্টরীনত্ মরানজক্টটা রা লাে মেটা। Repository: Working Directory মত্া জাস্ট এক্টা ম াল্ডার, এর োনর্ ে ন্ দিটনক্ মোি ক্নর দিব/ integrate ক্রা িে ত্া িে repository. Local Repository: মলাক্াল ম াল্ডানর ে ন্ দিটনক্ integrate ক্রা িে ত্া local repository. Remote Repository: Local repository মক্ ে ন্ মক্ান্ োভথানর আপনলাি ক্রব মেেন্ github বা gitlab ত্ ন্ মেটা remote repository. Staging Area: Work Directory মর্নক্ এনন্ এ ানন্ োোই বাছাই ক্রা িে। দক্ছু দজদন্ে বাি মিো িে। মক্ান্ দক্ছু দেদেিং র্াক্নল এি ক্রা িে ইত্যাদি। এ ান্ মর্নক্ final ক্রার পর local repository মত্ রাদ । এরপর এই local repository মর্নক্ remote repository মত্ আন্া িে। git add: Work Directory মর্নক্ Staging Area মত্ ে ন্ মক্ান্ দক্ছু like মক্ানির মেিনক্ পাঠানত্ োইনব ত্ ন্ এই ক্োন্ড। git commit: Staging Area মর্নক্ ে ন্ local repository মত্ মেন্ড ক্রনত্ োব ত্ ন্ মেটা ক্দর ত্া িল git commit. অনন্ক্গুনলা দজদন্ে এক্বানর ক্দেট ন্া ক্নর, এক্টা এক্টা ক্রা মেনত্ পানর। git commit এর েযানেনজর োধ্যনে রনত্যক্টা মেিনক্ দেদিত্ ক্নর রাদ ।

3

Git & Github Basic Discussion

git push: local repository মর্নক্ remote repository মত্ send ক্দর git push ক্োন্ড বযবিার ক্নর। git fetch: ে ন্ remote repository মর্নক্ local repository মত্ দক্ছু ন্াোনত্ োই ত্া িল git fetch. git chone/ git pull: suppose remote repository মর্নক্ দিনরক্ট মলান্ ক্নর মক্ান্ এক্টা মরানজক্ট আোনির working directory মত্ দন্নে আেনত্ োই মেনেনত্র এই ক্োন্ড। আবার অন্যনক্উ আোর আপনলাি ক্রা মরানজনক্ট ক্াজ ক্রনত্ োইনল git clone বা git pull ক্োনন্ডর োধ্যনে মরানজক্ট দন্নে আনে এরপর ক্াজ ক্নর। clone project টা ক্দপ ক্নর এক্টা ম াল্ডানর মরন মিওোটানক্ বনল মলান্। pull partner ত্ার directory মত্ পরবদত্থনত্ দক্ছু মেি ক্নর এরপর remote repo মত্ আপ দিনেনছ। মেটানক্ আোর working directory মত্ েরােদর দন্নে আোর জন্য এই ১

pull. git fetch ও মেে ক্াজ ক্নর। অর্থাৎ আপনিট ক্নর, দক্ন্তু fetch শুধ্ু local repository-এই মলনভনল মরন মিে। নল এটা মে , ক্ারন্ আপনিট ক্রার পনরও আদে মে

াইলটাে ক্াজ ক্রদছ মেটাে মক্ান্ মেি আেনছ ন্া। পনর এই

মেি local repo মর্নক্ working directory মত্ আন্া োনব। ex: suppose, আদে working directory মত্ মোি ক্রার মক্াি দিনেদছ। আোর পাটথন্ার মেে মরানজনক্ট মেি ক্নর গুণ ক্রার মক্াি দলন remote repo মত্ push ক্নর দিল। ত্াই আদে ে ন্ fetch ক্রব- মেই গুনণর মক্ািদট েরােদর আোর মরানজনক্ট ন্া এনে locally just মেভ িনব। আদে পনর ইচ্ছা ক্রনল এ ান্ মর্নক্ আোর ক্দপনত্ এি ক্রনত্ পারনবা। দক্ন্তু pull ক্রনল মেি গুলা েরােদর আোর ক্দপনত্ update িনে োনব। ভুল র্াক্নল ভুলও আদে মেক্ ক্রা ছাড়া আোর মক্ানি এি ক্নর দিদচ্ছ। git diff: work directory মত্ মে মক্াি আনছ ত্ার োনর্ staging area মত্ মে মক্াি আনছ এর েনধ্য পার্থক্য মি নত্ োইনল command- git diff git diff HEAD: local repository আর working directory এই িু ইটার মক্ানির েনধ্য পার্থক্য মি নত্। HEAD র্াক্ার ক্ারন্- working directory মক্ head-ও বলনত্ পাদর। git merge: work directory ও local repository এর মক্াি merge ক্রনত্ এই ক্োন্ড। git checkout: local repo মত্ দক্ছু মক্াি পাদঠনেদছ। এ ন্ োদচ্ছ এ ান্ মর্নক্ েদরনে আবার working directory মত্ দন্নে আেব। এজন্য git checkout ইউজ ক্রব। এটা local repo মর্নক্ working directory মত্ দিনরক্ট ক্াজ ক্নরstaging area মত্ আেনব ন্া। track: working directory মত্ মে মক্ান্ মেি git ধ্রনত্ পানর, এটাই track.

A lish Of Git Commands 1. First of all config git by using command in gitbash. We open an account in github and assaign same name and email in gitbash. By command2: > git config --global user.name "user name" > git config --global user.email "user email"

১(Git pull Vs Git Fetch)

২ েব ক্োনন্ডর আনি > দেম্বলদট বযবিার ক্রা িনেনছ বু ঝার েু দবধ্ানর্থ। ত্াই ক্োন্ড মিোর েেে > দেম্বলেি দল া োনব ন্া।

4

Git & Github Basic Discussion

a. এক্াদধ্ক্ দিট ইউজার ক্রনত্ িনল global ন্া দলন , এভানব ক্োন্ড দিনত্ িনবঃ > git config user.name “name” এক্ইভানব ইনেইল। b. মক্ান্ ইউজার/ইনেইল দিট-এ মেট ক্রা আনছ ত্া মি নত্ িনলঃ > git config –list এই দলনস্টর দন্নের দিনক্ user.name ও user.email-এ ন্াে ইনেইল মি ানব। 2. Now initialize git: in the folder “git bash here” > git init .git will be created if it the working directory first time initialized. a. Changing directory by command: cd/e

(change directory to e)

ls

(list)

cd code/

(change directory to folder code)

b. দিট বযাশ ু ল িনে মিনল দলোর ক্রার ক্োন্ডঃ > clear 3. > git status ু ব গুরুত্বপূ ণথ ক্োন্ড। track ক্রা ম াল্ডানর মক্ান্ মেি এনেনছ দক্ন্া,

াইল ক্দেট ক্রার েনত্া আনছ

দক্ন্া/untracked file show ক্রনব। 4. Stage ক্রা জন্য োনপাজ addition.c++ মক্ working directory মর্নক্ staging area মত্ দন্ব এজন্যঃ > git add addition.c++ a. Staging area মত্ এনেনছ দক্ন্া মেটা মেক্ ক্রনত্ আবার ক্োন্ড > git status দিলাে, বলনবNo commits yet

New file: addition.c++

এক্ই োনর্ untracked files র্াক্নল মেদটও মি ানব এর দন্নে। b. এভানব রদত্বার এক্টা এক্টা এি ক্রাটা বড় মরানজনক্টর মেনত্র ু ব ঝানেলার িনে োে। ত্াই > git add -- all অর্বা > git add . ত্ািনল ন্ত্ুন্ েবদক্ছু staging area মত্ েনল োনব। untracked দক্ছু র্াক্নব ন্া। 5. Staging ক্রার পর আেরা commit ক্রনত্ োইনবা, মেন্ মেটা staging area মর্নক্ local repository মত্ েনল োে। এজন্য > git commit ত্ািনল ন্ত্ুন্ terminal ওনপন্ িল, মেটা মি ানব মক্ান্টা মক্ান্টা ক্দেট িনচ্ছ। এরপর I বাটন্ মরে ক্রলাে, ত্ািনল দন্নে এক্টা দল া আেনব- insert. ত্ািনল এই ক্দেটটা মে েযানেজ দিনে মেভ ক্রনবা মেটা দল নবা। দল লােঃ core code and text added, এরপর Esc মরে ক্রলাে, এরপর :x দল লাে। এন্টার। মি ানব 2 file changed. এ ন্ > git status দিনল মি ানব nothing to commit অর্থযাৎ েবদক্ছু ই working repo মত্ েনল মিনছ।

5

Git & Github Basic Discussion

a. শটক্াট ওনেনত্ ক্দেটঃ > git commit -m “message” or may be > git commit --message message এর জােিাে রনোজন্ীে েযানেজ দিনে এক্ লাইনন্ ক্দেট ক্রা োনব। আোনির এক্সাম্পনল এবার git status মিবার পর বলনত্নছ—your branch is ahead of ‘origin/master’ by 2 commits, use ‘git push’ to publish your local commits. 6. দক্ দক্ commit ক্রা িনেনছ ত্া মি নত্ > git log মি ানব আোনির মে িু দট ক্দেট ক্নরদছলাে, ওগুলার েযানেজগুনলা আর িযাশ ন্াম্বার। ক্দেট এজন্য অবশযই েযানেজ দিনে ক্রনত্ িে। আোনির মটস্ট রনজনক্টর জন্য অবশয দত্ন্দট ক্দেট মি ানচ্ছ- ক্ারণ রর্েবার github –এ দরপু তত্রী ক্নর মে ান্ মর্নক্ িাওন্নলাি ক্নরদছলাে। লাস্ট মেি েবার আনি র্াক্নব। a. েদি অনন্ক্নবদশ ক্দেট র্ানক্ ত্ািনল এভানব মশা ক্রা ইদ দেনেন্ট ন্া। শটথ নেথ ক্দেট মি নত্ োইনলঃ > git log –oneline 7. File modify ক্রাঃ suppose new.txt াইনল এক্টা ন্ত্ুন্ লাইন্ এি ক্রলাে। এরপর > git status দিনল মি ানব new.txt has been modified. এনক্ এ ন্ আবার staging ক্রনত্ িনব, এরপর commit ক্রনত্ িনব। > git add. > git commit -m “new2.txt modified” 8. আনির commit-এ বযাক্ ক্রাঃ new.txt- এ মে মটক্সটুক্ু দলন ক্দেট ক্নরদছ এ ন্ োদচ্ছ আবার আনির অবস্থাে দ নর মেনত্ বা মেিটুক্ু বাি দিনত্। ত্ািনল ক্োন্ড দিলােঃ > git log --oneline

মে দলস্ট

আেল এ ানন্র ‘new2.txt modified’ এনক্ বাি দিনে এর আনির ক্দেট ‘text-2 added’ –এ মেনত্ োই। ত্ািনল দলস্ট মিন - ‘text-2 added’ এর মে hash number আনছ ত্া ক্দপ ক্নর এরপর ক্োন্ড দিলােঃ > git checkout 691f05 এ ানন্ 691f05 িল আোনির ক্দপ ক্রা ন্াম্বারদট। এই ক্োন্ড মিওোর পর েবদক্ছু আনি (নটক্সট ২ এি ক্রার েেে) মেেন্ দছল মত্েন্ অবস্থাে েনল োনব। অর্থাৎ আোনির উিািরনণর মেনত্র, new.txt োনব। উনে য শুধ্ু এক্টা

াক্া িনে

াইল ন্া, পুনরা ম াল্ডারটাই আনির ক্নন্টন্ট র্াক্া অবস্থাে েনল োনব। এভানব মক্ান্

মরানজনক্ট ন্ত্ুন্ দ োর এি ক্রার পর েদি ত্া ভাল ন্া লানি ত্ািনল আনির অবস্থাে দ নর মেনত্ পাদর। a. এ ন্ েদি directory এর দিনক্ ত্াক্াই ত্ািনল মি নবা মে লানস্ট এক্টা hash ন্াম্বার রনেনছ মেটা েূ লত্ আনির লাস্ট ক্দেট এর ন্াম্বার- মেটা আেরা দরেুভ ক্নর এক্ বা এক্াদধ্ক্ ক্দেট আনি দ নর মিদছ। এ ন্ েদি ক্োন্ড মিই> git checkout master ত্ািনল আবার োস্টার ব্রানে দ নর আেলাে। অর্থাৎ এ ন্ আবার new.text ওনপন্ ক্রনল মটক্সট মি নত্ পানবা। এভানব এক্বার ক্দেট ক্রার পনরও আবার আনির মেনক্ান্ মস্টনজ দ নর মেনত্ পারনবা। আবার মে ান্ মর্নক্ দ নর আেনত্ পারনবা মে ান্ মর্নক্ আনির মস্টনজ দিনেদছলাে। Last commit git checkout ***

git checkout master

First commit

6

Git & Github Basic Discussion

রনত্যক্বার লাস্ট ক্দেটটাই োস্টার ব্রাে দিনেনব বাড়নত্ র্ানক্। (শুধ্ু লাস্ট ক্দেট মর্নক্ মেনক্ান্ এক্টা আনির ক্দেনট দ নর দিনে আবার আনির জােিাে দ নর আো ন্ে, লাস্ট মর্নক্ মেনক্ান্ এক্টা ক্দেট আনি দিনে মে ান্ মর্নক্ আবার আনির মক্ান্ ক্দেনট দিনে এভানব

াস্টথ ক্দেনট দিনে আবার লাস্ট

ক্দেনট বা মেনক্ান্ মেদশ াে জােিাে েনল আো োনব আর এদট ক্রনত্ দিনে লানস্ট োস্টার ব্রাে-এ ন্া র্াক্নল অন্য মক্ান্ ব্রানে আদছ ত্া উপনর মেদশ াই িনে র্াক্নব) 9. show what has changed: text2.txt

াইনল দক্ছু দছল ন্া। মে ানন্ দল লাে “line number one” এ ন্

ক্োন্ড > git status দিনল মি ানব েদি াইি

াইলদট। এরপর > git diff দিনল েবুজ লাইনন্

মি ানব দক্ দক্ শব্দ এি ক্রা িনেনছ। এনেনত্র ন্ত্ুন্ শুধ্ু line number one ই দছল। মেদটই মি ানব। আবার েদি new.txt এদটনত্ও এক্টা লাইন্ এি ক্দর “line two” ত্ািনল > git diff দিনল ন্ত্ুন্ িু ইটা লাইন্ই মি ানব িু দট

াইনলর। েদি এ ন্ new.txt

াইনল দিনে এনক্ আনির েনত্া ক্নর মিই অর্থাৎ ন্ত্ুন্ লাইটা মক্নট

মিই, ত্ািনল git status দিনল মি ানব শুধ্ু text2.txt েদি াইি। অর্থাৎ পার্থক্য ক্রার ক্াজগুনলা িে আনির ক্দেনটর োনপনে ওটার োনর্ ত্ুলন্া ক্নর। 10. মেনক্ান্ commit এর মেিগুনলা মি নত্ঃ > git log –oneline দলন োনপাজ core code আর text 2 added- এ (এক্ দেদরোনলর ২টা) মেিগুলা মি নত্ text2.txt এর িযাশ ন্াম্বার ক্দপ ক্নর ক্োন্ড দিলােঃ > git show 6901f04 ত্ািনল েবুজ অেনর মক্ািটা মি ানব আর diff……new.txt মি ানচ্ছ অর্থাৎ new.txt ন্ত্ুন্ ক্নর এি ক্রা িনেদছল। (দক্ন্তু new.txt এনত্ মক্ান্ দক্ছু দছল ন্া, াক্া াইল)। োনিাক্, new.txt এ পেথানে ক্দেট ক্রলােঃ > git add. > git commit –m “text 2 changed” a. মেনক্ান্ ২ টা commit এর পার্থক্য মি াঃ এ পেথানে, text2.txt এ আনরক্টা ন্ত্ুন্ লাইন্ “line number two” দলন ক্দেট ক্রলাে। এ ন্ > git log –oneline দল নল মি নত্ পাদচ্ছ লানস্টর িু ইটা ক্দেটঃ (1) Line two added to text 2 (2) text 2 changed. এই িু ইটার পার্থক্য মি নত্ োইনল > git diff number2 number 1 এ ানন্ number 2 number1 িল আনির commit এর hash number ও এরপর পনরর ক্দেনটর (লাস্ট ক্দেট) িযাশ ন্াম্বার। ত্ািনল আনিরটার োনপনে পনররটাে দক্ দক্ মেি িনেনছ ত্া মি ানব। োইনল উলনটাটাও ক্রা োে, অর্থাৎ পনররটার োনপনে আনিরটার মেি মি া। উনে য, এ ানন্ > git show এরপর number 1 এই িযাশ ন্াম্বারটা দল নলও মেে মরজাল্ট আনে। অর্থাৎ মেনিত্ু number1 ও number2 পরপর িু ইটা ক্দেট এ ানন্ পনররটা দিট মশা ক্রনলও আনিরটার োনপনে মি ানব মেিগুলা। আর মেনক্ান্ িু ইটা েম্পূ ণথ আলািা ক্দেট এর পার্থক্য মি নত্ োইনল > git diff number 2 number 1 এভানব মি া োনব। b. > git diff – এই ক্োন্ডরটা েব

াইল stage ক্রার পর ক্াজ ক্রনব ন্া। শুধ্ু unstaged

পার্থক্য দেখতে ব্যব্হার ক্রা হয়। এজন্য > git diff -- staged ক্োন্ড ইউজ ক্রনল লানস্ট মে file টা staged ক্নরদছ মে ার পার্থক্য মি ানব আনিরটার োনপনে।

7

Git & Github Basic Discussion

11. File delete: Working directory মর্নক্ মক্ান্ দক্ছু delete ক্নর দিনল মেটা শুধ্ু ঐ stage এর জন্য দিদলট িনব, দক্ন্তু আনির stage এ মর্নক্ োনব (নেনিত্ু আনি ক্দেট ক্রা িনেদছল)। permanently remove ক্রার জন্য > git ram hot.txt (file name with extension) এ ন্ working directory মর্নক্

াইলটা দরেুভ িনে োনব। এ ন্ > git

status দিনল মি ানব- deleted: hot.txt অর্থাৎ এ ন্ও ওই

াইলটানক্ track ক্রা িনচ্ছ। এ ান্ মর্নক্ মবর

ক্নর দিনত্ োইনল > git reseat HEAD hot.txt

এ ন্ > git status দিনল মি নব মে,

াইলটা আর staging area মত্ও মন্ই। লাল অেনর মি ানচ্ছ মে এটা দিনলট িনে মিনছ। এ ন্ এই মেিটা আোনির ক্দেট ক্রনত্ িনব- > git commit - m “hot.text is deleted” 12. Push to Github: a.

Github-এ এক্টা repository তত্রী ক্রনত্ িনব। ত্ািনল মে ানন্ এক্টা ক্োন্ড মি নব- > git remote add origin http:……… এটা ক্দপ ক্নর মে ম াল্ডানরর

াইলগুনলা এি ক্রনবা

মে ানন্ দিনে দিট বযাশ ওনপন্ ক্নর মপস্ট ক্রনবা। এন্টার মরে ক্রনল ক্মান্ড এক্সিক্সক্উট হতয় ন্েুন্ আতরক্ক্সট ক্মান্ড অতটা এড হতব্ > git push –u origin master (অর্থাৎ এদট দিটিানবর োস্টার ব্রানে এি িনচ্ছ- এ ানন্ োইনল মেনক্ন্ডারী ব্রানেও এি ক্রা োে)। এন্টার মরে ক্রনল দিটিানবর log in টাদেথন্াল আেনব। েদঠক্ভানব লি ইনন্র পর েব

াইল মলাক্াল দরপু মর্নক্ দরনোট

দরপুনত্ েনল োনব। পাশাপাদশ ক্দেটগুনলাও েনল আেনব। b. উপনর মি লাে দিটিানব পুশ ক্রনত্ মিনল রনত্যক্বার লি ইন্ মপজ আনছ মেটা এক্টা ঝানেলা। প্লাে অন্যনক্উ এনে ক্দিদবউট ক্রনত্ োইনলও পারনব ন্া মেনিত্ু ত্ার ক্ানছ পােওোিথ র্াক্নব ন্া, এজন্য SSH key generate ক্নর github-এ এি ক্রনল বারবার clone/push ক্রনত্ োইনল user name আর password দিনত্ িনব ন্া। এরজন্য আনি email দিনে মেটা ক্ানন্ক্ট ক্নরদছলাে মেটা দিেক্ানন্নক্টি ক্রনত্ িনব। এজন্য ওনপন্ ক্রলাে, Credential Manager (search by cortena) Then: Windows Credential> git:github…>remove এ ন্ ন্ত্ুন্ এক্টা ম াল্ডানর ১ টা মরানজক্ট ক্রলাে- git tuto, এখন্ ক্সিট ব্যাশ-এঃ > git init এক্টা sample file “student” তত্রী ক্রলাে। এ ন্ >git add . ত্ারপর >git commit -m “commit”

এ ন্ ক্ী মজন্ানরশনন্র জন্যঃ >ssh-keygen –t rsa –b 4096

–c “[email protected]” এন্টার মরনের পর ssh key এর এক্টা ন্াে োইনবদিলাে git_keys ত্ারপর এক্টা পােওোিথ োইনব, এরপর মেটার দরদপট। পােওোিথ মেট ক্রার পর মি নবা git_keys ন্ানে িু দট

াইল ওোদক্থিং দিনরক্টরীনত্ মোি িনেনছ। এরপর ক্োন্ডঃ > eval

$ (ssh-agent -s) ত্ািনল এক্টা এনজন্ট আইদিঃ agent pid 12808 এরক্ে এক্টা আইদি মপনে মিলাে। এরপর > ssh-add ~/.ssh/id_rsa এন্টার মরনের পর মেই password টা টাইপ ক্রনত্ িনব। েবথনশষ এইনে ক্ী মজন্ানরট ক্রলাে এটা ক্দপ ক্নর github-এ রা নত্ িনব। ক্োন্ড দিনে এই ক্দপর ক্াজটা ক্রার জন্যঃ > clip < ~/.ssh/id_rsa.pub এ ন্ github এর এক্াউনন্ট মিলাে। উপনরর অপশন্ মর্নক্ settings>SSH and GPG key>New

8

Git & Github Basic Discussion

SSH Key ত্ারপর এক্টা Title দিনে Key paste ক্রনবা (ক্োনন্ডর মক্ািদট- ক্নন্টাল+দভ)। Then add SSH key  done. এ ন্ git tuto এই মরানজক্ট SSH Key এর োধ্যনে Push ক্রনবা। এজন্য github-এ ন্ত্ুন্ এক্দট repo ু ললাে। ু লনল িু দট অপশন্ পানবা- HTPS/SSH, আেরা SSH দেনলক্ট ক্নর মে ানন্ মে মক্াি আনছ এদট ক্দপ ক্রনবা- > git remote add origin [email protected].... এ ন্ এদট রর্নে Terminal এ মপস্ট ক্রার পর, দিটিানবর মেনক্ন্ড ক্োন্ড দিনবা > git push –u origin master েবার মশনষ yes দলন এন্টার িান্। ইউজার মন্ে পােওোিথ ছাড়া পুশ ক্রা িনে মিল। 13. Git clone: এ ন্ মিদ দক্ভানব দিটিানব র্াক্া মক্ান্ মরানজক্টনক্ মলান্ ক্নর দপদেনত্ দন্নে আো োে। এদট ক্নেক্ভানব ক্রা োে। িাওন্নলানি দলক্ ক্নর দজপ আক্ানর িাওন্নলাি ক্রা িল েবনেনে েিজ উপাে। দক্ন্তু এনত্ েেেযা িনলা এনত্ শুধ্ু োত্র মেনক্ান্ এক্টা ব্রানের মেিগুনলা িাওন্নলাি িনব। োদল্টপল ব্রানের োদল্টপল মেি এভানব Zip এ িাওন্নলাি িনব ন্া। এজন্য ভাল উপাে িনচ্ছ > git clone. এদট ক্রনত্ িাওন্নলানি দলক্ ক্রনল মে এনেেদট পাব ত্া ক্দপ ক্নর- মে ানন্ রা নত্ োই মে ানন্ দিট বযাশ ওনপন্ ক্নর ক্োন্ডঃ > git clone address এ ানন্ এনেনের জােিাে ক্দপ ক্রা এনেেদট মপস্ট ক্রনবা। a. িাওন্নলাি ক্রা

াইলদট আবার োইনল আলািা ন্ানে রা নত্ পারনবা। এজন্য ক্োন্ডঃ > git

clone address name এ ানন্ মন্নের জােিাে পছন্দেনত্া ন্াে। 14. Fetch & pull: Github-এ র্াক্া git_tuto মরানজক্টদট আেরা github মর্নক্ই এদিট ক্নর ক্দেট ক্রলাে। বাস্তনব অন্য োরা এই এক্ই মরানজনক্ট ক্াজ ক্রনছ ত্ারাও এদট ক্রনত্ পানর। োনপাজ আোনির মরানজক্টদটনত্ এদিট ক্নর এক্দট লাইন্ “line one” এি ক্রা িল ত্ািনল, মলাক্াল দিনরক্টরীনত্ দক্ন্তু োনর্ োনর্ মক্ান্ মেি আেনব ন্া। ন্ত্ুন্ এই আপনিট দপদেনত্ আন্নত্ ক্োন্ডঃ > git fetch এরপর মেনিত্ু এই মরানজক্ট ক্রনত্ ssh key মিওো িনেদছল ত্াই মেেেে মে পােওোিথ মেট ক্নরদছলাে মেদট আবার দিনত্ িনব। এ ন্ েদি > git status রান্ ক্দর ত্ািনল মি ানবঃ Your branch is behind by 1 commit. দক্ন্তু student াইলটা ওনপন্ ক্রনল মক্ান্ মেি মি নত্ পানবা ন্া। git fetch এর ক্াজ শুধ্ু মলাক্াল েযাদশন্নক্ জান্ানন্া আপনিট েম্পনক্থ। এই আপনিট মেইন্ মক্ানি দন্নে আোর জন্য দল নবা > git pull এরপর ssh এর পােওোিথ। এ ন্ student

াইল ওনপন্ ক্রনল line one এদট মি নত্ পারনবা। অর্থাৎ pull েরােদর github

মর্নক্ মেি মক্ানি দন্নে আনে। 15. Git branch: আেরা এ ন্ git-tuto এই মরানজক্ট এর জন্য ন্ত্ুন্ এক্দট ব্রাে তত্রী ক্রব। এজন্য ক্োন্ড > git branch idbranch এ ানন্ idbranch এর জােিাে পছন্দেনত্া ব্রানের ন্াে। আেরা মক্ান্ ব্রানে আদছ ত্া দিটবযাশ-এ মি ানচ্ছ (নে ানন্ ক্োন্ড দিদচ্ছ মেই লাইনন্) মে আেরা োস্টার ব্রানে আদছ। ত্ািনল ন্ত্ুন্ ব্রােদট তত্রী িল দক্ন্া মেদট মি নত্ঃ > git branch ত্ািনল মি ানব িু দট ব্রাে 1. Master branch* 2. id branch এ ানন্ োস্টার ব্রানে * র্াক্ার অর্থ আেরা এ ন্ এই ব্রানে আদছ। ন্ত্ুন্ ব্রানে েু ইে িনত্ঃ > git checkout idbranch শটথক্ানট ন্ত্ুন্ ব্রাে ু নল োনর্োনর্ মেই ব্রানে েু ইেি িনত্ ক্োন্ডঃ > git checkout -b home_branch এ ানন্ home_branch িল আোনির ন্ত্ুন্ ব্রাে। এ ন্ োনপাজ মিােব্রানে এক্টা

াইল তত্রী ক্নর মে ানন্ দক্ছু মক্াি ক্নর ক্দেট ক্রলাে >git add. এরপর

>git commit -m “home” এ ন্ মিােব্রাে মর্নক্ োস্টার ব্রানে বযাক্ ক্রনবাঃ > git checkout

9

Git & Github Basic Discussion

master ত্ািনল মি নবা মে ন্ত্ুন্ ব্রানের

াইল িু দট আর মন্ই, অর্থাৎ আনির অবস্থাে েনল এনেদছ। োনপাজ মিাে

াইলগুনলা আোনির ভাল মলনিনছ আর এদট োস্টার ব্রানের োনর্ এি ক্রনত্ োদচ্ছ। ত্ািনল master

branch এ র্াক্া অবস্থাে ক্োন্ডঃ > git marge home-branch আব্ার এখন্ idbranch আোনির িরক্ার মন্ই। ত্ািনলঃ > git branch –D idbranch এ ন্ েদি রান্ ক্দর > git branch ত্ািনল িু দট ব্রাে মি ানব- অর্থাৎ idbranch দট দিনলট িনে মিনছ। 16. Git stash: োনপাজ, আেরা এক্টা মক্ানি ক্াজ ক্রদছ এবিং দক্ছু অিংশ মক্াি দলন দছ। এবিং মক্াি ক্রার পর েনন্ িল এর মর্নক্ ভাল েদলউশন্ েম্ভব, আবার মেটা দল নত্ মেনে এ ন্ক্ার মক্ািটাও িারানত্ োদচ্ছ ন্া, মেন্ োইনল পনর এ ানন্ও দ নর আো োে। এরজন্য আেরা বযবিার ক্দর git stash. অন্যভানব বলনল git stash িনলা এক্টা temporary folder এবিং এ ানন্ আেরা মেই মক্ািগুনলা রা নবা মেগুলা আর বযবিার ক্রদছ ন্া, দক্ন্তু োইনল পনর ক্ানজ লািানত্ পারনবা। ex: এক্টা ম াল্ডার বান্াই stash, এনত্ এক্টা code.txt ক্দর। এ ন্ঃ >git init , >git add .

াইল েু ক্ত

, >git commit –m “init commit” এ ন্

এই code.txt এনত্ দক্ছু মেি আন্নবা- এ ানন্ এক্টা দেম্পল লাইন্ “1st code” এি ক্রলাে। এ ন্

>

git status দিনল মি ানব code.txt is modified. দক্ন্তু এটা এ ন্ই ক্দেট ক্রনবান্া। ক্ারন্ এটা এভানব বযবিার ক্রনত্ োদচ্ছ ন্া বরিং stage ক্নর মরন দিনত্ োদচ্ছ মেন্ পনর অন্যনক্ািদট ক্ানজ ন্া লািনল এদট দন্নে আো োে। এজন্যঃ > git stash এ ন্ code.txt ওনপন্ ক্রনল মি নবা এক্টু আনি মে লাইন্টা দছল এটা আর ন্াই, অর্থাৎ আনির অবস্থাে েনল মিনছ। আবার দন্নে আেনত্ োইনল > git stash pop োনর্ োনর্ code1 েনল আেল code.txt মত্। োনপাজ আরও এক্দট মক্াি code 2 এি ক্রলাে code 1 এর পনর। এ ন্ এটানক্ও stash ক্রলাে। > git stash এ ন্ আবার ওনপন্ ক্রনল মি নবা

াক্া অর্থাৎ রর্েবার মেেন্

দছল। এ ন্ আবার > git stash pop ক্রলাে। ত্ািনল code 1 code 2 এদট আেনব

াইনল। অর্থাৎ

লানস্টর stash. (উনে য এ ানন্ pop এর বিনল > git stash apply ক্রনলও মেে ক্াজ ক্রনব। োদল্টপল

াইল stash ক্রা র্াক্নল, আর দবদভন্ন stash (আোনির িু দট) এর েনধ্য েু ইে ক্রনত্ োইনল > git

stash list মি ানচ্ছ িু দট stash file- stash@ {0} আর stash@ {1} এ ন্ রর্ে stash ক্রা

াইনল

মেনত্ োইনলঃ > git stash pop stash @ {0} 17. Git clean: এ ন্ ওই stash মরানজনক্টর েনধ্য আরও িু ইটা status দিনল এই আন্নেক্ি ক্রা

াইল এি ক্রলােঃ 1.txt & 2.txt ত্ািনল >git

াইল িু দট মি ানব। Untracked

াইল দরেুভ ক্রনত্ োইনলঃ >git

clean -f এনেনত্র েত্ক্থত্া অবলম্বণ ক্রনত্ িনব- ক্ারণ এনত্ ক্নর untracked ক্রা েবদক্ছু ই এনক্বানর দিদলট িনে োনব। ত্াই রর্ে েদি মিইঃ > git clean -f -n ত্ািনল বনল দিনচ্ছঃ would remove 1.txt would remove 2.txt েদি এ ন্ ন্াে মিন দশউর িই মে এগুলার রনোজন্ মন্ই ত্ািনলঃ > git clean -f দল নল েবগুনলা (এইনেনত্র িু দট) untracked file দিদলট িনে োনব। 18. git ignore: মে

াইলগুলা বা মে টাইনপর

াইল git ignore এর দভত্নর দলন রা নবা- মেই

ক্দেট িনব ন্া বা ক্দেনটর জন্য োনজস্ট িনব ন্া। োনপাজ, stash রনজনক্টর দভত্র এক্টা .psd ক্রলাে মেটা শুধ্ু দন্নজর মি ার েু দবধ্ানর্থ। এ ন্ োদচ্ছ .psd এর েব status রান্ ক্রনল মি ানব আোনির psd

াইলগুলা আর াইল এি

াইল ignore ক্রনত্। রর্নে >git

াইলটানক্ দিনটক্ট ক্রনছ বা োক্ ক্রনছ। এ ন্ ক্োন্ড দিলােঃ

10

Git & Github Basic Discussion

>touch .gitignore এ ন্ লেযক্দর ম াল্ডানরর দভত্র এক্টা .gitignore

াইল তত্রী িনেনছ মেটা

ওনপন্ ক্নর দল লাে *.psd  save এ ন্ >git status রান্ ক্রনল আর 2.psd এই ক্রনছ ন্া। এভানব মেনক্ান্ টানপর এ ন্ আবার .gitignore

াইল বা মেদশদ ক্

াইলটানক্ আর দিনটক্ট

াইল (দন্নজ োই ক্দর) ইিনন্ার ক্রা োে। (উনে য

াইলটানক্ দিনটক্ট ক্রনছ দিট মস্টটাে মর্নক্, এটানক্ ক্দেট ক্রার জন্য)

19. git fork: অন্য এক্জনন্র github মরানজক্টনক্ দন্নজর দিট দরপুনত্ fork ক্নর আন্া োে। ত্ািনল মেই মরানজক্টটানক্ দন্নজর মরানজনক্টর েনত্া ক্নর েদি াই আপনিট ইত্যাদি ক্রনত্ পারনবা। োনপাজ এক্টা দিট মরানজক্ট Demo মক্ দেনলক্ট ক্নর উপনরর fork অপশনন্ দলক্ ক্রলাে, ত্ািনল এ ন্ আোর দরপুনত্ মেই মরানজক্টটা মি নত্ পারনবা। এ ন্ এই Demo মরানজক্টটানত্ মেি এনন্ অনন্ক্গুনলা ক্াজ ক্রা োে োর এক্দট িল pull request. পুল দরক্ুনেস্ট ক্রার জন্য- ওই মরানজনক্ট এক্টা ন্ত্ুন্

াইল এি ক্রলাে – new.txt, োরপর

ক্ক্সমট ক্রলাম new file added, ন্ত্ুন্ এক্টা ব্রাে তত্রী ক্রলাে দন্নজর বাটনন্ দলক্ ক্নর। (উনে য োস্টার ব্রানে এি ক্রনল মেটা pull request িনব ন্া)। branch এর ন্াে দিলাে new file. অর্থাৎ মে মরানজক্টটা fork ক্নরদছলাে মেটাে ন্ত্ুন্ এক্টা

াইল তত্রী ক্নর ন্ত্ুন্ এক্টা আপনিট ব্রাে propose ক্রনত্ োদচ্ছ মেন্ মেটা

েূ ল মক্ািার review ক্নরন্। এই পেথানে propose new file এ দলক্ ক্রনল ন্ত্ুন্ এক্টা মপজ আেনব েযানেজ বক্স েিংেু ক্ত মেন্ মে ানন্ েূ ল মক্ািারনক্ এক্টা েযানেজ দিনে পুল দরক্ুনেস্ট ক্রনত্ পাদর। Then create pull request done. এভানব এক্টা pull request তত্রী ক্নর Discussion ক্নর ন্ত্ুন্ দ োর এি ক্রনত্ পারনবা বা মরানজক্টটা আপনিট ক্রনত্ পারনবা। More To See:

Tutorial1

Blog1 END OF DISCUSSION

Related Documents

Discussion
January 2021 1
Discussion Starters
February 2021 0
Natres Discussion
February 2021 0
Bod Discussion
February 2021 0

More Documents from "albemart"