-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathabout-git
More file actions
309 lines (165 loc) · 4.86 KB
/
about-git
File metadata and controls
309 lines (165 loc) · 4.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
what is git
----> git is a version control system
track history
work together
it is centralized
why git
----> using git we can record changes and keep the track of files
benefits over git
free
open source
scalable
efficeint
we can revert back to previous file or previous version of the project
version control can track not only source code but also track any plain text file
time machine for your project
--------------------------------------------
commited
modified
staged --
working dir, staging area(index), git dir (repository)
uncommited changes are present in our working directory
staging area - files in this state have been modified and added to be staged in next commit
using the command line
---------------------------
---------------------------
install git on windows, linux
configure git
initialize a new git project
code hosting provider
create an account
push our git project to a code
hosting provider
commit changes from index
------------------------------
install git
configure git
git help
initialize a new git repository
push you code to cod hosting provider
------------------------------
Every day git commands
by deafulat git has a master/main branch
usually in git a branch is created towork on a new feature
once the feature is deeloped, it is merged backto mastera and the bRANCH IS DELETED
commit
--------
A commit is also names by SHA1 hash
Every commit object has a pointer to the parent commit object
from a given commit, you can traverse back by looking at the parent pointer to view the history of the commit
if a commit has multiple parent commits, then the multiple parent commit has been created by merging two branches
Head -- Head is a pointer, which always points to latest commit in the branch, whenever you make a commit, head is updated with the latest commit.
The heads of the branches are stored in
.git/refs/heads/ directory
ls -l .git/refs/heads/
cat .git/refs/heads/master
Branch
__________
every branch is referenced by HEAD, which points to latest commit in the branch. whenever you make a commit, HEAD is updated with the latest commit
---------------------------------
git reset ---->
managing history
exploring the past
fixing mistakes
git workflows
- finding your workflow
cli - most of the time
gui will implement some common scenarios
four areas of git
--------------------
--------------------
stash area
working area
index/staging - before commit
Repository
---------------------------
working area --- edit files
add files
-----------------
ls -a
ls .git/
git objects
-----------
commit tree blob
commit - immutable
they can be created/deleted cannot modified
commit - snapshot of working area
each commmit to its parent commit
each commit is a snapshot
commits are slice of project history
commits are linked together to form a history
commit can belong to multiple branches
HEAD and the current commit
Head points to current branch and that branch points to current commit
deleting branch will delete its commits
workking area -> index(staging) -> repsitory
git status
ls .git/ --> index(transition area)
git status
----------
git diff -comparing working are and index
compare index with repository --- git diff --cached
how does this command move information across the four areas
how does this command change the repository
git workflows commands
-----------------------
git diff --cached
------------------
checkout
removing files in git
how to remove files for index/staging
git rm filename
git rm --cached filename
this will undo from the staging but not from
the working directory
--------------------
git reset
reset does different things in different contexts
commands that move branches
commit
merge
rebase
pull - gets new commits from repo
-------------------------
HEAD -> MASTER
head can point to the master
git reset --hard
reset - moves the to a specific commit
git reset --hard (copies commit from repo to working area and index)
git reset --mixed ( copies commits from repo to the index)
git reset --soft(moves the branches)
reset moves the current branch and optionally copies data from the repository to the other areas
git reset --hard fbe356
git moves the current branch to the previous commit
-----------------------
i want to undo index
git rm --cached
--> git reset HEAD -->
git reset --hard HEAD
stashing data
solving conflicts
working with paths
commiting parts of a file
stash----- git stash
the data is stash doesnt change unless you do want to
git stash --include-untracked
git stash list- store some stuff
each element gets labelelled
stash@{0}
git stash apply
from stash to working dir
git add
git stash list
git stash clear
git stash list
-----------------
merge conflicts
git branch one
git checkout one
git checkout master
git merge one
git status
ls .git
cat .git/MERGE_HEAD
git show commitid
git merger origin/master