Quotes

  • “Talk is cheap. Show me the code.”
  • “Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.”
  • "Microsoft isn’t evil; they just make really crappy operating systems."

Terms and Usage

  • A “git clone” makes a local Git repository (decentralized) from the cloud server (GitHub/Git).
  • A .git directory contains a local database (see illustration) that keeps track of local changes.
  • A “git commit” makes a child snapshot of the original parent on the local database. Git commits over time are a series of Secure Hashing Algorithms (SHA’s). This is the math behind a git snapshot.
  • The .gitignore file tells .git to ignore certain files in directory tree (ie files constructed from source or derived files, like ipynb files that turn into md files).
  • The “git push” command moves files from local system back to cloud server (GitHub). However, often a merge is required as the decentralized system can have many simultaneous contributors. Students will experience this when they share a repository.
  • To minimize conflicts, Developers use Git branches and/or GitHub Forks to push code to an isolated locations on the server/cloud. This simply delays the inevitable merge, but has benefit of keeping developers branch of project stable.
  • Pull requests is common process used to merge code from isolated Fork back to the primary GitHub repository.
  • A “git rebase” is a common command for Developer on an isolated Git branch to update their environment from the “main” branch. Often this is done prior to a “git push” back the “main” branch.

Questions to ask within the team

  • What is the main repository for your project?
  • Did you create a .gitignore to avoid committing files that ‘don’t belong in version control? Look at this tool for guidance.
  • Do you have a requirements.txt file to manage dependencies introduced to your Code Base?
  • Have you established Issues as part of your Development process? Creating Issues
  • Have you considered making Pull Requests to track development? Create - Pull Request
  • Have you considered forks or branching techniques with pull requests? - Link Issue to PR
  • Are you managing Issues on a Project Board/Scrum Board like Kanban? Tracking Issues