68 lines
1.5 KiB
Markdown
68 lines
1.5 KiB
Markdown
# git pull & push & diff
|
|
|
|
## Goal
|
|
Work with a remote, push and pull changes, and compare differences.
|
|
|
|
## Set Up a Local "Remote" (Offline-Friendly)
|
|
We'll simulate a remote using a bare repository.
|
|
```bash
|
|
cd ~/lab-git-essentials
|
|
git init --bare remote.git
|
|
```
|
|
|
|
## Connect Your Repo to the Remote
|
|
```bash
|
|
cd ~/lab-git-essentials/my-first-repo
|
|
git remote add origin file://$HOME/lab-git-essentials/remote.git
|
|
git remote -v
|
|
```
|
|
|
|
## Push Your Main Branch
|
|
```bash
|
|
git checkout main
|
|
git push -u origin main
|
|
```
|
|
|
|
## Simulate a Collaborator and Pull
|
|
Create a second local clone, make a change, push it, then pull it back.
|
|
```bash
|
|
cd ~/lab-git-essentials
|
|
git clone file://$HOME/lab-git-essentials/remote.git collaborator
|
|
cd collaborator
|
|
echo "Edit from collaborator" >> collab.txt
|
|
git add collab.txt
|
|
git commit -m "Collaborator adds a file"
|
|
git push origin HEAD:main
|
|
|
|
# Back in your original repo, pull the change
|
|
cd ~/lab-git-essentials/my-first-repo
|
|
git pull
|
|
ls
|
|
```
|
|
|
|
## View Differences
|
|
```bash
|
|
# Compare working tree vs last commit
|
|
echo "temp edit" >> notes.txt
|
|
git diff
|
|
|
|
# Compare staged vs last commit
|
|
git add notes.txt
|
|
git diff --staged
|
|
|
|
# Compare two commits (use your own SHAs)
|
|
git log --oneline -n 2
|
|
git diff HEAD~1 HEAD
|
|
```
|
|
|
|
## (Optional) Use a Hosted Remote
|
|
If you have GitHub/GitLab:
|
|
```bash
|
|
git remote set-url origin https://github.com/<you>/<repo>.git
|
|
git push -u origin main
|
|
git pull --rebase
|
|
```
|
|
|
|
## Outcome
|
|
You can push to and pull from a remote, and use `git diff` to compare changes.
|