Due Date: Monday Sep 18, 2017 9:00 AM. This homework aims at giving you some experience on how to create Git branches, develop your project on multiple branches, merge them, resolve potential conflicts between different branches upon merging, and finally how to delete them. It also gives you some experience with using other commonly-used Git commands.

First, use the following Markdown language references, or any other reference that you find or prefer, to design a Github-interpretable README file for each of folders in your project for this course, and a Github web-page for your project.

Write your code sections of your answer in Markdown syntax. For example,
```bash
$ git branch -d test
error: Cannot delete branch 'test' checked out at 'C:/Users/Amir/git/foo'
```

will display the following text highlighted as bash code, in your readme.md file.

$ git branch -d test
error: Cannot delete branch 'test' checked out at 'C:/Users/Amir/git/foo'





1. Include the following information with the following format and information in your main directory readme.md file:

Beginning of the README file’s content



ICP2017F - Introduction to Computer Programming (Fall 2017)


Name: <first name> <last name>
UT EID: <your UT EID>
Email: <your email>
Department: Department of Aerospace Engineering and Engineering Mechanics
University: The University of Texas at Austin
Level: Undergraduate - <Freshman(1st year) / Sophomore(2nd year) / Junior(3rd year) / Senior(4th year)>
ICP Class Position: Student
Course Webpage: https://www.cdslab.org/ICP2017F/
Photo:

Amir Shahmoradi

Description of the project’s content


This repository contains my homework, quizzes, and virtually every effort that I have made for ICP2017F class. The structure of the project is the following:

  • homework: (the homework hyperlink should take the reader to the homework folder)
    This directory contains all my homework submissions, each of which is a folder properly named with homework number, containing the homework submission.

  • quiz: (the quiz hyperlink should take the reader to the quizzes folder)
    This directory contains all my quiz submissions, each of which is a folder properly named with quiz number, containing the quiz submission.

  • exam: (the exam hyperlink should take the reader to the exams folder)
    This directory contains all my exam submissions, each of which is a folder properly named with exam name or number, containing the exam submission.

For questions and troubleshooting, please contact:

<your name>
<your email>
<any other contact or signature information that you would like to add>

I have not failed. I’ve just found 10,000 ways that won’t work.
Thomas A. Edison



End of the README file’s content





2.  Create two additional test branches in your project, each of which is branched directly from master. For each of the following cases, write the command and the corresponding output message of Git, in Markdown language in a readme.md file inside your homework/1/ folder in your master branch. If you don’t have this folder in your project, then create the folder and then place your initial readme.md file in this folder with your signature as the content of the file. Then stage and commit this file together with homework-1 folder to your local repository. Throughout the rest of this homework, you will fill this readme.md file with your answers.

(A) Create two branches, both from your master branch, with names test1 and test2.




(B) Now checkout the test1 branch and create a new text file named test.txt in the homework/1/ directory of this branch.




(C) Inside test.txt in test1 branch write this message: This is some example text for branch test1, and save it.




(D) Now stage and commit test.txt file to branch test1.




(E) Checkout the branch test2. Do you still see test.txt that you just created in your homework/1/ directory? You can search for it by the bash command ls. Explain why you see/don’t see the file in your working directory anymore.




(F) Create a new text file named test.txt in the homework/1/ directory of this branch as well, and add This is some example text for branch test2 to its content.




(G) Now try to checkout test1. What error/warning message do you get? Fix the source of error and then checkout test1 branch.




(H) Now merge the content of test1 with master branch. (Hint: Note from which branch you doing this merge!)




(I) Now what do you see as the content of master branch? (Hint: Use ls bash command, to list the files in the working directory.)




(J) Now merge the content of test2 with master branch. What error/warning message do you get? Why does this error arise?




(K) Now checkout test2. What error/warning message do you get?




(L) Run the Git command git status. Why does such a conflict exist, as mentioned in git status output?




(M) At this stage, you have two options: Either 1. stage and commit the combined conlifting test.txt file to Git repository (but this is not recommended), or, 2. open the file test.txt using vim editor on the command line and reslve the conflict by editing the content of the file to only this sentence: . Then save and quit *vim.




(N) Now, run git status, then stage and commit your conflict-resolved file. Then checkout test2 branch.




(O) Now, try deleting branch test1, while on branch test2. What error/warning message do you get?




(P) Now, switch back to master branch. Now, try deleting branch test1, while on master branch. What message do you get from Git? List all the existing branches using git branch command.




(Q) Why is there such a difference in Git messages between when you tried deleting test1 branch from test2 branch, and when you tried deleting test1 branch from master branch?




(R) Now checkout test2 branch. While on test2, try to delete branch test2. What error/message do you get?




(S) Switch back to master and delete test2 branch. List all your project branches by the appropriate Git command.




(T) Stage and commit all the changes (including the file test.txt) to your project’s master branch. Now push it all to the remote repository by Wednesday Feb 15 2017, 9:00 a.m. CDT.





3.  (Bonus, not mandatory) Design a simple Github page for your project, using the main directory’s readme.md file. Submit the link to the page as your answer. Note that you don’t need to add anything extra to your readme file.





4.  (Bonus, not mandatory) Create a gh-pages branch for your project from master branch, such that your project is accessible through its web address based on the content of gh-pages branch, not based on the content of master branch.


Comments