97 lines
3.9 KiB
Plaintext
97 lines
3.9 KiB
Plaintext
@c
|
|
@c Instructions on how to set up a group environment, permissions,
|
|
@c Git repository, dealing with issues etc.
|
|
@c
|
|
@c While some of the discussion may apply to more than one environment,
|
|
@c no attempt was made to untangle and split the discussion.
|
|
@c
|
|
|
|
@menu
|
|
* Setting Up Git::
|
|
* Using Git::
|
|
@end menu
|
|
|
|
@node Setting Up Git
|
|
@subsection Setting Up Git
|
|
|
|
To make your Git logs easier to read, you should set the user.name and
|
|
user.email variables in your .gitconfig file:
|
|
@verbatim
|
|
[user]
|
|
name = Firstname Surname
|
|
email = example@doc.ic.ac.uk
|
|
@end verbatim
|
|
|
|
Note that we will be checking your Git logs as part of your submission.
|
|
You should ensure that you use meaningful commit messages and make it clear
|
|
who was responsible for each commit (especially if you are using pair-programming).
|
|
|
|
To work on the source code, you must create a clone of your group's provided @file{GitLab} repository.
|
|
This can be done by running the following command:
|
|
|
|
@example
|
|
git clone @value{localgitpath}
|
|
@end example
|
|
replacing @code{<gnum>} with your group number, which can be found on the @code{Gitlab} website.
|
|
|
|
@node Using Git
|
|
@subsection Using Git
|
|
|
|
Once you've cloned the repository, you can start working in your clone
|
|
straight away. At any point you can see what files you've modified with
|
|
@samp{git status}, and check a file in greater detail with
|
|
@samp{git diff @var{filename}}. You view more detailed information using
|
|
tools such as @samp{tig}
|
|
|
|
Git uses an intermediary area between the working filesystem and the actual
|
|
repository, known as the staging area (or index). This allows you to perform
|
|
tasks such as committing only a subset of your changes, without modifying your
|
|
copy of the filesystem. Whilst the uses of the staging area are outside the
|
|
scope of this guide, it is important that you are aware of its existence.
|
|
|
|
When you want to place your modifications into the repository, you must
|
|
first update the staging area with your changes (@samp{git add @var{filename}},
|
|
and then use this to update the repository, using @samp{git commit}. Git
|
|
will open a text editor when committing, allowing you to provide a description
|
|
of your changes. This can be useful later for reviewing the repository,
|
|
so be sensible with your commit messages.
|
|
|
|
When you want to share your changes with the rest of your group you will need to
|
|
run @samp{git push} to send your commits back to the shared @file{labranch} repository.
|
|
Note that the very first time you push you will need to run the command:
|
|
|
|
@example
|
|
git push origin master
|
|
@end example
|
|
to tell Git which branch of your local repository to push to which remote repository
|
|
(in this case from branch @code{master} to the @code{origin} repository).
|
|
|
|
Sometimes your group members may make confliting changes to your repository,
|
|
which Git is unable to solve.
|
|
These problems can be solved using @samp{git mergetool},
|
|
but its use is outside the scope of this dicussion.
|
|
|
|
You can view the history of a file @var{foo} in your working directory,
|
|
including the log messages, with @samp{git log @var{foo}}.
|
|
|
|
You can give a particular set of file versions a name called a
|
|
@dfn{tag}. Simply execute @samp{git tag @var{name}}. It's best
|
|
to have no local changes in the working copy when you do this, because
|
|
the tag will not include uncommitted changes. To recover the tagged
|
|
commit later, simply execute @samp{git checkout @var{tag}}.
|
|
|
|
If you add a new file to the source tree, you'll need to add it to the
|
|
repository with @samp{git add @var{file}}. This command does not have
|
|
lasting effect until the file is committed later with @samp{git
|
|
commit}.
|
|
|
|
To remove a file from the source tree, first remove it from the file
|
|
system with @samp{git rm @var{file}}. Again, only @samp{git commit}
|
|
will make the change permanent.
|
|
|
|
To discard your local changes for a given file, without committing
|
|
them, use @samp{git checkout @var{file} -f}.
|
|
|
|
For more information, visit the @uref{https://www.git-scm.com/, , Git
|
|
home page}.
|