Git Workflow: Difference between revisions

From Littledamien Wiki
Jump to navigation Jump to search
Line 32: Line 32:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
$ cd /m/littledamien/littledamien_web
$ cd /m/littledamien/littledamien_web
</syntaxhighlight>
* To see a list of previous commits (which should include the branch names as part of the commit message):
<syntaxhighlight lang="bash">
$ git log --oneline
</syntaxhighlight>
</syntaxhighlight>


Line 39: Line 44:
</syntaxhighlight>
</syntaxhighlight>


* Edit, add, and commit as usual
* Edit as necessary. Then verify changed files with
* When the update is complete, merge the branch with 'master'
<syntaxhighlight lang="bash">
$ git status -s
</syntaxhighlight>
 
* Add edits to commit with
<syntaxhighlight lang="bash">
$ git add filename.ext
</syntaxhighlight>
 
* Revert files with
<syntaxhighlight lang="bash">
$ git co HEAD filename.ext
</syntaxhighlight>
 
* Verify edits with
<syntaxhighlight lang="bash">
$ git diff --cached
$ git diff --cached filename.ext
</syntaxhighlight>
 
* Commit the edits ('tm0001' being the branch name used to track projects)
<syntaxhighlight lang="bash">
# commit all edits
$ git commit -m "tm0001: commit message"
 
# switch to master branch
$ git co master
 
# merge edits into master branch
$ git merge tm0001
 
# clean up branch
$ git branch -d tm0001
</syntaxhighlight>
 
* Then move the commits to the main repo:
* Then move the commits to the main repo:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
$ git push ssh://[uname]@[domain].com:[port]/path/to/repo master
$ cd /n/git/littledamien/littledamien_web
$ git pull /m/littledamien/littledamien_web
$ # or
$ git push ssh://[uname]@[domain].com:[port]/refs/littledamien/littledamien_web
$ # or
$ git push ssh://[uname]@[domain].com:[port]/refs/littledamien/littledamien_web master
</syntaxhighlight>
</syntaxhighlight>



Revision as of 21:48, 11 May 2012

Overview

Git Server set up on dbarchowsky.com.

Creating a new repo out of an existing site

  • Navigate to the site's root directory.
  • Create a Git repository.
$ git init
  • Make a .gitignore file (images, wordpress install files, etc.)
  • Set username and email (necessary for each repo)
$ git config --global user.name "Damien Barchowsky"
$ git config --global user.email "dbarchowsky@gmail.com"
  • Add existing files to Git repo, confirm the list of files, and commit the changes.
$ git add .
$ git status -s
$ git commit -m "Initial version"
  • Clone the repo to 'origin'
$ cd /n/git/base_dir
$ git clone /m/base_dir/repo_dir

Working with existing projects

  • Make sure the 'dev' drive is available on the current client. See Configuration

Using 'Git Bash' navigate to the project directory.

$ cd /m/littledamien/littledamien_web
  • To see a list of previous commits (which should include the branch names as part of the commit message):
$ git log --oneline
  • Make a new Git branch
$ git co -b mynewbranch
  • Edit as necessary. Then verify changed files with
$ git status -s
  • Add edits to commit with
$ git add filename.ext
  • Revert files with
$ git co HEAD filename.ext
  • Verify edits with
$ git diff --cached
$ git diff --cached filename.ext
  • Commit the edits ('tm0001' being the branch name used to track projects)
# commit all edits
$ git commit -m "tm0001: commit message"

# switch to master branch
$ git co master

# merge edits into master branch
$ git merge tm0001

# clean up branch
$ git branch -d tm0001
  • Then move the commits to the main repo:
$ cd /n/git/littledamien/littledamien_web
$ git pull /m/littledamien/littledamien_web
$ # or 
$ git push ssh://[uname]@[domain].com:[port]/refs/littledamien/littledamien_web 
$ # or 
$ git push ssh://[uname]@[domain].com:[port]/refs/littledamien/littledamien_web master

Configuration

  • Make sure the 'dev' drive is available while working with Git Bash on the current client.
subst m: "\\littledamienii\develop"
subst n: "\\littledamienii\shared"
  • Physical origin repos located beneath d:\shared\git
  • To make a new project:
d:
cd \shared\git
git clone ..\..\develop\path\to\project_root
cd .\path\to\project_root
git init 
rem <<< is that last 'git init' step necessary ??? >>>
  • At least for now, when fetching & pulling vial ssh, the root directory is the Git install directory (C:\Git).
  • A symbolic link has been created between C:\Git directory and the Git base directory (D:\shared\git)
cd \Git
mklink /d "refs" "d:\shared\git"
rem symbolic link created for refs <<===>> d:\shared\git
  • The symbolic link allows access to the git repo via
git clone|push|pull|etc. ssh://username@server/refs/path/to/myrepo