diff options
Diffstat (limited to 'usth/ICT2.7/P1L4 Version Control Subtitles/12 - GIT Workflow - lang_en_vs5.srt')
-rw-r--r-- | usth/ICT2.7/P1L4 Version Control Subtitles/12 - GIT Workflow - lang_en_vs5.srt | 507 |
1 files changed, 0 insertions, 507 deletions
diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/12 - GIT Workflow - lang_en_vs5.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/12 - GIT Workflow - lang_en_vs5.srt deleted file mode 100644 index 84f0f2e..0000000 --- a/usth/ICT2.7/P1L4 Version Control Subtitles/12 - GIT Workflow - lang_en_vs5.srt +++ /dev/null @@ -1,507 +0,0 @@ -1 -00:00:00,070 --> 00:00:02,100 -But before jumping into the demo I would like - -2 -00:00:02,100 --> 00:00:05,370 -to give a high level overview of the GIT workflow, - -3 -00:00:05,370 --> 00:00:08,420 -which will help you better, following the demo. So let - -4 -00:00:08,420 --> 00:00:12,480 -me start by representing four fundamental elements in the GIT - -5 -00:00:12,480 --> 00:00:15,640 -workflow which are these four: the workspace which is your - -6 -00:00:15,640 --> 00:00:19,980 -local directory. The index, also called the stage, and we'll - -7 -00:00:19,980 --> 00:00:22,470 -see in a minute what the index is. Then, we - -8 -00:00:22,470 --> 00:00:25,380 -have the local repository. We'll also refer to this as - -9 -00:00:25,380 --> 00:00:27,910 -HEAD in the, when we explain the different commands - -10 -00:00:27,910 --> 00:00:31,340 -and then, the word flow. And finally, the remote repository. - -11 -00:00:31,340 --> 00:00:34,600 -If you consider a file in your work space it - -12 -00:00:34,600 --> 00:00:37,860 -can be in three possible states. It can be committed - -13 -00:00:37,860 --> 00:00:40,170 -which means that the data, the latest changes to the - -14 -00:00:40,170 --> 00:00:45,030 -file are safely stored here. It could be modified, which - -15 -00:00:45,030 --> 00:00:47,840 -is the case of the file being changed and no, - -16 -00:00:47,840 --> 00:00:50,710 -none of these changes being saved to the local repository - -17 -00:00:50,710 --> 00:00:54,440 -so locally modified or it can be staged. And - -18 -00:00:54,440 --> 00:00:58,270 -stage means that the file is basically part of this - -19 -00:00:58,270 --> 00:01:01,620 -index. And what that means, that it's been tagged - -20 -00:01:01,620 --> 00:01:04,890 -to be considered in the next commit. And I know - -21 -00:01:04,890 --> 00:01:08,070 -that this is not all 100% intuitive, so let's - -22 -00:01:08,070 --> 00:01:10,860 -look at that again by considering the actual workflow and - -23 -00:01:10,860 --> 00:01:12,680 -let's see what happens when you issue the different - -24 -00:01:12,680 --> 00:01:16,060 -commands in git. So the first command that you normally - -25 -00:01:16,060 --> 00:01:18,520 -run in case you, you're getting access to a remote - -26 -00:01:18,520 --> 00:01:21,940 -repository, is the git clone command. And the git clone, - -27 -00:01:21,940 --> 00:01:24,880 -followed by the url for that repository, will create a - -28 -00:01:24,880 --> 00:01:28,580 -local copy of the repository in your workspace. And of - -29 -00:01:28,580 --> 00:01:30,310 -course, you don't have to do this step if you're - -30 -00:01:30,310 --> 00:01:34,380 -creating the repository yourself. The next command that we already - -31 -00:01:34,380 --> 00:01:38,170 -saw is the command add. And what the command add - -32 -00:01:38,170 --> 00:01:41,130 -does is to add a file that is in the - -33 -00:01:41,130 --> 00:01:44,630 -workspace to this index. And we say that after that, the - -34 -00:01:44,630 --> 00:01:48,700 -file is staged. So it's marked to be committed, but not - -35 -00:01:48,700 --> 00:01:53,350 -yet committed. And here I'm just mentioning this minus u option. - -36 -00:01:53,350 --> 00:01:56,330 -If you specify the minus u option, you will also consider deleted - -37 -00:01:56,330 --> 00:01:58,820 -files File, but let's not get there for now, we'll talk - -38 -00:01:58,820 --> 00:02:01,240 -about that when we do the demo. As I said, if you - -39 -00:02:01,240 --> 00:02:03,720 -add the file, it just gets added to this index but - -40 -00:02:03,720 --> 00:02:06,430 -is not actually committed, so what you need to do, is to - -41 -00:02:06,430 --> 00:02:10,389 -commit the file, so when you execute git commit, all the - -42 -00:02:10,389 --> 00:02:13,970 -files that are staged, that are released it here, their changes - -43 -00:02:13,970 --> 00:02:17,080 -will be committed to the local repository. So your files, as - -44 -00:02:17,080 --> 00:02:18,970 -I was saying, they can be in three states. They will - -45 -00:02:18,970 --> 00:02:21,820 -go from the modified state to the stage state when you - -46 -00:02:21,820 --> 00:02:24,200 -execute the app. And then from the stage state to the - -47 -00:02:24,200 --> 00:02:27,510 -committed state when you perform a GIT Commit. Okay, so at - -48 -00:02:27,510 --> 00:02:31,780 -this point your changes are safely stored in the local repository. - -49 -00:02:31,780 --> 00:02:34,370 -Notice that you can also perform these two steps at - -50 -00:02:34,370 --> 00:02:38,150 -once by executing a Commit -a. So if you have - -51 -00:02:38,150 --> 00:02:40,920 -a set of modified files, and all these files are - -52 -00:02:40,920 --> 00:02:44,550 -already part of the repository, so they're already known to diversion - -53 -00:02:44,550 --> 00:02:47,540 -control system, you can simply execute a commit -a. - -54 -00:02:47,540 --> 00:02:50,040 -And what the commit -a command will do, it - -55 -00:02:50,040 --> 00:02:53,080 -will stage your file and then commit them. All at - -56 -00:02:53,080 --> 00:02:56,650 -once. So it's a convenient shortcut. Of course, as I said, - -57 -00:02:56,650 --> 00:02:58,710 -this will not work if the file is a new file. - -58 -00:02:58,710 --> 00:03:00,730 -So if a file is a new file, you have to manually add - -59 -00:03:00,730 --> 00:03:04,620 -it. Otherwise commit -a will just stage and commit at once. - -60 -00:03:04,620 --> 00:03:07,400 -As we discussed when we looked at the diffence between centralized - -61 -00:03:07,400 --> 00:03:10,520 -and decentralized version console system. We saw that in the case - -62 -00:03:10,520 --> 00:03:13,930 -of the decentralized, there is a local repository which is this one. - -63 -00:03:13,930 --> 00:03:17,190 -And then you have to explicitly push your changes to a remote - -64 -00:03:17,190 --> 00:03:21,850 -repository, and this is exactly what the git push command does. It pushes - -65 -00:03:21,850 --> 00:03:25,930 -your changes that are in the local repository to the remote repository - -66 -00:03:25,930 --> 00:03:28,160 -so at this point all of your changes will be - -67 -00:03:28,160 --> 00:03:31,680 -visible to anyone who has access to the remote repository. - -68 -00:03:31,680 --> 00:03:33,710 -Now, let's see the opposite flow so how does it - -69 -00:03:33,710 --> 00:03:36,640 -work when you're actually getting files from the repository instead - -70 -00:03:36,640 --> 00:03:39,650 -of committing files to the repository. So the first command - -71 -00:03:39,650 --> 00:03:43,280 -I want to mention is the get fetch command and - -72 -00:03:43,280 --> 00:03:46,900 -what the get fetch command does is to get files from - -73 -00:03:46,900 --> 00:03:50,680 -the remote repositories to your local repository, but not yet to - -74 -00:03:50,680 --> 00:03:53,890 -your working directory. And we will see what is the usefullness of - -75 -00:03:53,890 --> 00:03:56,900 -doing this operation. Of having the files all in the local respository, - -76 -00:03:56,900 --> 00:03:59,380 -but not in your local directory. So, what that means, just to - -77 -00:03:59,380 --> 00:04:01,360 -make sure that we're on the same page. Is that you - -78 -00:04:01,360 --> 00:04:05,620 -will not see these files when you workspace. You will still have - -79 -00:04:05,620 --> 00:04:09,030 -your local files here. So this is sort of a physical distinction. - -80 -00:04:09,030 --> 00:04:12,060 -In order to get your data files from the local repositories to - -81 -00:04:12,060 --> 00:04:14,470 -your workspace you have to issue another command. Which is - -82 -00:04:14,470 --> 00:04:18,250 -the command git merge. Git merge will take the changes in - -83 -00:04:18,250 --> 00:04:21,870 -local repository and get them to your local workspace. So at - -84 -00:04:21,870 --> 00:04:25,460 -this point your files will be updated. To what is in - -85 -00:04:25,460 --> 00:04:27,730 -the remote reposity. Or at least what was in the - -86 -00:04:27,730 --> 00:04:30,810 -remote reposity at the time of the fetch. SImilarly to what - -87 -00:04:30,810 --> 00:04:34,340 -happened for the add and commit. There's a shortcut which is - -88 -00:04:34,340 --> 00:04:37,230 -the command git pull. So in case you want to get - -89 -00:04:37,230 --> 00:04:40,590 -the changes directly. To your work space with a single - -90 -00:04:40,590 --> 00:04:44,120 -command, you can issue a git pull command and what will - -91 -00:04:44,120 --> 00:04:46,560 -happen, is that the changes will get collected from the - -92 -00:04:46,560 --> 00:04:49,810 -remote repository and they will go to your local repository and - -93 -00:04:49,810 --> 00:04:51,990 -to your work space, at once. So this has the - -94 -00:04:51,990 --> 00:04:55,820 -same affect as performing a git fetch and a git merge. - -95 -00:04:55,820 --> 00:04:59,160 -So if we can do everything in one command, why, - -96 -00:04:59,160 --> 00:05:03,290 -why we want to fetch and berch as two separate operations? - -97 -00:05:03,290 --> 00:05:05,920 -So one of the reason is because this allows us - -98 -00:05:05,920 --> 00:05:09,410 -to compare files before we actually get the latest version - -99 -00:05:09,410 --> 00:05:12,600 -of the files. In particular, I can run the command - -100 -00:05:12,600 --> 00:05:17,310 -git diff head to get the difference between my local files, - -101 -00:05:17,310 --> 00:05:20,330 -the files in my working directory, and the files in - -102 -00:05:20,330 --> 00:05:22,800 -my local repository. So what I can do, I can - -103 -00:05:22,800 --> 00:05:25,550 -fetch the files from the remote repository, and once I - -104 -00:05:25,550 --> 00:05:29,260 -fetch these files. I can run a git diff head and - -105 -00:05:29,260 --> 00:05:32,620 -check what the differences are. And based on the differences decide - -106 -00:05:32,620 --> 00:05:35,554 -whether I want to merge or not. So while we are talking about - -107 -00:05:35,554 --> 00:05:37,890 -git diff, there is something else that you can use with the - -108 -00:05:37,890 --> 00:05:41,060 -diff command. So what you can do, you can run git diff - -109 -00:05:41,060 --> 00:05:44,930 -without further specifying head. In this case, what the command tell you - -110 -00:05:44,930 --> 00:05:48,310 -is the difference between the files that you have in your work - -111 -00:05:48,310 --> 00:05:51,780 -space and the ones that are staged for a commit. So basically, - -112 -00:05:51,780 --> 00:05:54,630 -what it will be telling you, is that what you could still - -113 -00:05:54,630 --> 00:05:58,300 -add to the stage for the further commit, and that you - -114 -00:05:58,300 --> 00:06:01,230 -haven't already. So what local changes will not make it to the - -115 -00:06:01,230 --> 00:06:04,440 -next commit, basically. And this you can use, for example, as - -116 -00:06:04,440 --> 00:06:07,450 -a sanity check before doing a commit to make sure all the - -117 -00:06:07,450 --> 00:06:09,980 -local changes that you have, and that you want to commit, - -118 -00:06:09,980 --> 00:06:13,230 -are actually staged and therefore will be considered. So now we will - -119 -00:06:13,230 --> 00:06:16,930 -cover all of the commands that we saw here. In our practical - -120 -00:06:16,930 --> 00:06:20,560 -demo. But please feel free to refer back to this Git Workflow - -121 -00:06:20,560 --> 00:06:23,570 -to get a kind of a high level vision. Or maybe you want to keep it next to - -122 -00:06:23,570 --> 00:06:26,110 -you, because this really gives you the overall structure - -123 -00:06:26,110 --> 00:06:28,450 -and the overall view of what happens when you - -124 -00:06:28,450 --> 00:06:31,160 -run the different commands. And it also helps you - -125 -00:06:31,160 --> 00:06:34,840 -visualize The different elements that are relevant when you're - -126 -00:06:34,840 --> 00:06:37,970 -using GIT. So the workspace, once more, the index - -127 -00:06:37,970 --> 00:06:40,790 -or stage, the local repository, and the remote repository. |