|
|
Line 155: |
Line 155: |
| |} | | |} |
| | | |
− | == Update Files in the Repository == | + | == Undo File Modifications (uncommitted) in the Repository == |
− | This will make updates to the learningGit repositories.
| + | In the end, this has no affect on the learningGit repositories. |
| | | |
| {| border="1" | | {| border="1" |
Line 205: |
Line 205: |
| === Undo the Modifications === | | === Undo the Modifications === |
| This step undoes the modifications to README.txt. | | This step undoes the modifications to README.txt. |
| + | |
| + | Your modifications are lost, since they were never stored in the database. |
| | | |
| # Look at README.txt | | # Look at README.txt |
Line 218: |
Line 220: |
| | | |
| |[[Image:GitUndoMod.png]] | | |[[Image:GitUndoMod.png]] |
| + | |} |
| + | |
| + | |
| + | == Remove a File from the Repository == |
| + | This will remove a file from the learningGit repositories. |
| + | |
| + | {| border="1" |
| + | |valign="top"| |
| + | === Remove the File === |
| + | These steps removes README1.txt from ~/code/learnGit/learningGit/. |
| + | |
| + | # Look at the current status to see nothing. |
| + | # Remove README.txt |
| + | # Look at the git status to see the removed file. |
| + | # Look at the changes. |
| + | git status |
| + | ls |
| + | rm README1.txt |
| + | git status |
| + | git diff |
| + | |
| + | |[[Image:GitRemoveFile.png]] |
| + | |- |
| + | |valign="top"| |
| + | ===Stage the File Removal === |
| + | This step stages the removal of README1.txt in ~/code/learnGit/learningGit/. |
| + | |
| + | # Stage the file |
| + | # Look at the git status to see the staged file. |
| + | # Look at the diffs, there are no differences |
| + | git rm README.txt |
| + | git status |
| + | git diff |
| + | |
| + | |[[Image:GitStagedRemoval.png]] |
| + | |- |
| + | |valign="top"| |
| + | === Commit the File Removal === |
| + | This step commits the removal of README1.txt. |
| + | |
| + | # Commit the file removal |
| + | # Look at the git status to see no modified files |
| + | git commit -m "Remove unnecessary file, README1.txt." |
| + | git status |
| + | |
| + | |[[Image:GItCommitFileRemoval.png]] |
| + | |- |
| + | |valign="top"| |
| + | === Push & Pull the File Removal === |
| + | This step pushes the removal of README1.txt to the main repository and pulls it into learningGit2. |
| + | |
| + | # Push the file removal to the origin repository |
| + | # Move to learningGit2 |
| + | # See what files are there |
| + | # Check the status |
| + | # Pull the latest changes |
| + | # See what files are there |
| + | # Check the log |
| + | git push |
| + | cd ~/code/learnGit/learningGit2 |
| + | ls |
| + | git status |
| + | git pull |
| + | ls |
| + | git log |
| + | |
| + | |[[Image:GitPushFileRemoval.png]] |
| |} | | |} |
Create new Bare Repository
These steps will create a new bare repository called learningGit in ~/code/learnGit/bareRepo/.
- Create the containing directory
- Go to the correct directory
- Create a new bare repository
- Move into the new repository
- Look at the contents of the bare repository
mkdir -p ~/code/learnGit/bareRepo/
cd ~/code/learnGit/bareRepo/
git init --bare --shared learningGit
cd learningGit
ls
|
|
Create Working Repositories
For this example, we are going to create 2 working repositories.
This is so you can see how changes don't affect the other repositories unless pushes & pulls are done.
Create a Working Repository
These steps will create a new working repository called learningGit in ~/code/learnGit/ that is a clone of ~/code/learnGit/bareRepo/learningGit.
- Move to the appropriate directory
- Clone the initial repository
- Move into the working directory
- Look at the contents (Note: learningGit has not yet had any files added to it)
cd ~/code/learnGit
git clone ~/code/learnGit/bareRepo/learningGit
cd learningGit
ls -a
|
|
Create a Second Working Repository
These steps will create a second working repository called learningGit2 in ~/code/learnGit/ that is a clone of ~/code/learnGit/bareRepo/learningGit.
- Move to the appropriate directory
- Clone the initial repository
- Move into the working directory
- Look at the contents (Note: learningGit has not yet had any files added to it)
cd ~/code/learnGit
git clone ~/code/learnGit/bareRepo/learningGit learningGit2
cd learningGit2
ls -a
|
|
Add Files to the Repository
This will create a couple of files in the learningGit repository.
Create the New Files
These steps create README.txt and README1.txt in ~/code/learnGit/learningGit/.
The files will not show up in ~/code/learnGit/learningGit2/.
- Move to the ~/code/learnGit/learningGit
- Look at the current status to see nothing.
- Create README.txt
- Create README1.txt
- Look at the git status to see 2 untracked files.
- Move to the learningGit2 directory
- Check that the files are not there
- Check the status in learningGit2
cd ~/code/learnGit/learningGit
git status
echo This repo is for Learning Git. > README.txt
echo Another file in the repository > README1.txt
git status
Note: the files are not yet stored in the repository.
|
|
Stage the files
This step stages the addition of README.txt and README1.txt in ~/code/learnGit/learningGit/.
The files will not show up in ~/code/learnGit/learningGit2/.
- Move back to the learningGit directory
- Stage the files
- Look at the git status to see 2 staged files.
- Move back to the learningGit2 directory
- Try to pull files
- Check the contents of learningGit2 to verify the files are NOT there.
cd ../learningGit
git add .
git status
cd ../learningGit2
git pull
ls
Note: the files are staged, but not yet stored in the ~/code/learnGit/learningGit repository.
|
|
Commit the Files
This step stores README.txt and README1.txt in the local repository.
The files will not show up in ~/code/learnGit/learningGit2/.
- Move back to the learningGit directory
- Commit the files
- Look at the git status to see no uncommitted changes.
- Move back to the learningGit2 directory
- Try to pull files
- Check the contents of learningGit2 to verify the files are NOT there.
cd ../learningGit
git commit -m "Add the first files"
git status
cd ../learningGit2
git pull
ls
Note: the files are stored in the ~/code/learnGit/learningGit repository, but are not yet in the bare repository.
|
|
Push the files to the bare repository
This step pushes the files to the bare repository.
The files will show up in ~/code/learnGit/learningGit2/.
- Move back to the learningGit directory
- Push the files without specifying the remote or branch (fails)
- Push the files specifying the remote and the branch (succeeds)
- Look at the git status to see no uncommitted changes.
- Move back to the learningGit2 directory
- Try to pull files
- Check the contents of learningGit2 to verify the files are there.
cd ../learningGit
git push
git push origin master
git status
cd ../learningGit2
git pull
ls
The files are now stored in the bare repository, so any new repositories that are clone from it will see the files.
|
|
Undo File Modifications (uncommitted) in the Repository
In the end, this has no affect on the learningGit repositories.
Modify the Files
These steps update README.txt in ~/code/learnGit/learningGit/.
- Move to the ~/code/learnGit/learningGit
- Look at the current status to see nothing.
- Modify README.txt
- Look at the git status to see the changed file.
- Look at the changes.
cd ~/code/learnGit/learningGit
git status
echo AccidentallyOverwrote > README.txt
git status
git diff
|
|
Stage the Modified File
This step stages the modification of README.txt in ~/code/learnGit/learningGit/.
- Stage the file
- Look at the git status to see the staged file.
- Look at the diffs, there are no differences
git add README.txt
git status
git diff
|
|
Unstage the File
This step unstages the modification to README.txt.
- Unstage the file
- Look at the git status to see the unstaged file
- Look at the diffs (they are back).
git reset HEAD README.txt
git status
git diff
|
|
Undo the Modifications
This step undoes the modifications to README.txt.
Your modifications are lost, since they were never stored in the database.
- Look at README.txt
- Undo the modification
- Check the status
- Check the diffs
- Look at README.txt
cat README.txt
git checkout -- README.txt
git status
git diff
cat README.txt
|
|
Remove a File from the Repository
This will remove a file from the learningGit repositories.
Remove the File
These steps removes README1.txt from ~/code/learnGit/learningGit/.
- Look at the current status to see nothing.
- Remove README.txt
- Look at the git status to see the removed file.
- Look at the changes.
git status
ls
rm README1.txt
git status
git diff
|
|
Stage the File Removal
This step stages the removal of README1.txt in ~/code/learnGit/learningGit/.
- Stage the file
- Look at the git status to see the staged file.
- Look at the diffs, there are no differences
git rm README.txt
git status
git diff
|
File:GitStagedRemoval.png
|
Commit the File Removal
This step commits the removal of README1.txt.
- Commit the file removal
- Look at the git status to see no modified files
git commit -m "Remove unnecessary file, README1.txt."
git status
|
|
Push & Pull the File Removal
This step pushes the removal of README1.txt to the main repository and pulls it into learningGit2.
- Push the file removal to the origin repository
- Move to learningGit2
- See what files are there
- Check the status
- Pull the latest changes
- See what files are there
- Check the log
git push
cd ~/code/learnGit/learningGit2
ls
git status
git pull
ls
git log
|
|