Sharing Git Branches on Different Workstations
Goal
Work on code changes on multiple workstations without pushing changes to central GitHub repo.
Workflow
Create a localized distribution that can be seen by the various workstations.
//myserver/develop/path/to/repo
This Git repo must be "bare" in order to accept pushes.[1]
> git clone --bare -l https://github.com/username/myrepo.git myrepo
Windows
Now on a separate windows workstation create a remote for that local hub:
> git remote add remotehubname x:\path\to\myrepo > git push remotehubname master
Mac
Mount the shared directory where the hub repo is located.
# optionally create a remote for the local hub $ git push /Volumnes/sharename/path/to/myrepo master
Migrating changes from a Mac workstation to a Windows workstation
sshto the mac:ssh user@mac-name.local- (optional) Mount the shared network directory hosting the local git hub repo, if it is not already mounted.
sudo mount -t smbfs //user:password@server/share_name path/to/mount- The mount point must be an existing directory. It's necessary to create the directory before executing
mountif the directory does not exist. - Working with the convention of creating mount points in the
~/remote/directory.
cdto git repo directory- (optional) Create a remote for the local git hub if one does not already exist.
- Check the existing remotes with
git remote -v - Create remote with
git remote add remote_alias path/to/remote/repo
- Check the existing remotes with
- Add any modified files to a branch that is not
master. - Commit the branch.
- Push the branch to the hub repo on the local network:
git push remote_alias branch_name - Now on the Windows workstation it's possible to pull the changes in the working branch.
cdto the local git repo on the Windows workstation.- Sync up the master branch:
git pull origin master - (optional) View the branches on the local network hub:
git remote show remote_alias - Create the working branch on the Windows workstation if it doesn't already exist.
- Sync up the working branch:
git pull remote_alias branch_name
Notes
- ↑ Git bare vs non-bare repositories BitFlop Tutorials