diff --git a/README.md b/README.md index 74ea0e8..4041450 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,94 @@ # GitBaseProject2Research -Example repository to develop a research project using the git control version's philosophy. This example may be reproduced for newer repositories related to the overall project. \ No newline at end of file +This is an example guide repository to develop a research project based on the git control version's philosophy. This example repository could be reproduced for newer repositories as a guidance for related projects. + +# A Basic Git Introduction + +First of all try to install the git system for your own OS visiting and following some steps [here](https://git-scm.com/downloads). + +Git is an open source version control system to handle from small to large projects with speed and efficiency, with collaborative or private options. Git was designed by **Linus Torvalds** in 2005 for the development of the linux kernel, the system can manage large or small quantity of source code files. But, what is a git repository? + +The git flow process is shown in the next figure. + +![The three basic stages areas of git process](images/naws3.png) + +The process shows three basic stages/areas in the git flow: + +1. **The working directory.** +2. **Staging area.** +3. **Repository.** + +However, all the stages/areas are together at the same time, just a command will takes your files from one stage to another, let see a basic example. + +### working directory +First a **local git repository or local repo** is some kind supervised space in your computer that informs you what files are added, deleted or modified, this space is known as **working directory.** Thus, the git system first ask you which files would you like to **track** any change done in the files. This is done using the "`git add`" command on your OS terminal prompt; a very useful list of commands can be founded in [git cheat sheet](). In the other hand, for large projects there are some GUI (Graphic User Interface) that can be used like [smart git](https://www.syntevo.com/smartgit/) or [source tree](https://www.sourcetreeapp.com); my personal recommendation is smartgit. + +This time, as an example smart git screen shots are going to be used, then, if you install a GUI system you will see your **working directory** like this: + +![Working Directory. 1)At left: the repository name, 2)at right: the files.](images/workingDirectory.jpeg) + +then, you can see the file's status. In the example you are seeing **untracked** and **modified** files. **Untracked** means that there are new files and they are not supervised by the git system. While the **modified** ones, are files already supervised by git, and have been changed. Also you will find other status options like **rename** and **deleted**, meaning of course that those files have been renamed or deleted at the **working directory**. + +If you are using a command based git system, you can check the status of your working directory with the `git status` command: + +```console +Dir marx$ git status +``` +here we are considering that we are at the *Dir* directory. The answer of the system will be something like this: + +```console +On branch master +Your branch is up to date with 'origin/master'. + +Changes not staged for commit: + (use "git add ..." to update what will be committed) + (use "git checkout -- ..." to discard changes in working directory) + + modified: README.md + +Untracked files: + (use "git add ..." to include in what will be committed) + + introduction.txt + +no changes added to commit (use "git add" and/or "git commit -a") +``` + +as you can see, the system informs you that there are modified and untracked files. + +After this you are ready to add the new files to the **staging area**. + +### staging area + +To **stage** a file or group of files is just the preparation to finally make a commit. Suppose you are working on two options, one is ready, and the other needs more work. Then you can stage the part that is **ok** and commit it. Thus, you need to add the file with the stage button int the GUI based git: + +![Stage button.](images/stage.png) + +You have to repeat this for every file you want to add, or you can select several files at the same time. + +In the command based version, you can add an specific file with the `git add` command: + +```console +Dir marx$ git add Readme.md +``` +if you need to add all changes of your working directory it is possible by using: +``` +Dir marx$ git add * +``` + +### Commit ### + +To be able to finish the commit process must be sure to setting up a name and e-mail address, then if you've never used git before, first you need to set up both. Run the following commands to let git know your name and e-mail address. If you already did it, skip this step. + +```console +git config --global user.name "Your Name" +git config --global user.email "your_email@whatever.com" +``` +after that you also need to be sure of make a simple change on any of the tracking files like the `Rea.md` fime Rea able to make the commit about +Then terms like stage, working copy, fetch, pull, push, branch, merge, stash, tag, and remote repository will be common on the git language. However, this is a simple introduction to the git system, if you want to learn a detailed information and commands visit the [git web-page](https://git-scm.com) to find e-books, examples and useful information. + + +#### Ideas #### +- Branches +- Tags +- stash