6.1 KiB
Git "Cheat Sheet"
Committing files
To automatically stage files that have been modified and deleted, include -a; eg:
git commit -a
Creating a new branch ("386dev")
You could use git branch, but if you've already modified some files that you now want to
move to a new branch:
git checkout -b 386dev
Pushing a new branch ("386dev")
Since a simple git push will report:
fatal: The current branch 386dev has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin 386dev
do this instead:
git push -u origin 386dev
Reverting (resetting) a single file [link]
If you have an uncommitted change (it's only in your working copy) that you wish to revert (in SVN terms) to the copy in your latest commit, do the following:
git checkout filename
This will checkout the file from HEAD, overwriting your change. This command is also used to checkout branches, and you could happen to have a file with the same name as a branch. All is not lost, you will simply need to type:
git checkout -- filename
You can also do this with files from other branches, and such. man git-checkout has the details.
The rest of the Internet will tell you to use git reset --hard, but this resets all uncommitted changes you’ve
made in your working copy. Type this with care.
Node "Cheat Sheet"
Installing Node (and NPM)
I downloaded the latest Node installation package for my MacBook from nodejs.org,
which provided the usual node and npm commands. Here are the versions they reported:
[~/Sites/pcjs] node -v
v0.10.26
[~/Sites/pcjs] npm -v
1.4.3
I also installed a Node helper on my MacBook called n that makes it easy to keep Node up-to-date, per this tip on
stackoverflow:
-
Clear NPM's cache:
[~/Sites/pcjs] sudo npm cache clean -f
-
Install a little helper called 'n':
[~/Sites/pcjs] sudo npm install -g n
-
Install latest stable NodeJS version:
[~/Sites/pcjs] sudo n stable
Alternatively pick a specific version and install like so:
[~/Sites/pcjs] sudo n 0.8.20
I'm not sure I like the generic name for this command ("n"); what would have been wrong with "node-update" or "update-node"? Oh well.
Next, I wanted to make sure npm was up-to-date. According to
FAQ on npmjs.org, that's as easy as:
[~/Sites/pcjs] sudo npm update npm -g
although occasionally npm won't be able to update itself, in which case the fallback is:
[~/Sites/pcjs] curl https://npmjs.org/install.sh | sh
So, I made sure npm itself, along with n and all my other globally installed packages, were up-to-date,
and then I used n to make sure I was running the latest stable version of Node:
[~/Sites/pcjs] sudo npm update -g
[~/Sites/pcjs] sudo n stable
[~/Sites/pcjs] node -v
v0.10.26
I've also seen suggestions to run this command before the preceding commands, but I don't know how often this is recommended:
[~/Sites/pcjs] sudo npm cache clean -f
Next, I ran npm init:
[~/Sites/pcjs] npm adduser
Username: jeffpar
Password:
Email: (this IS public) jeff@pcjs.org
npm http PUT http://registry.npmjs.org/-/user/org.couchdb.user:jeffpar
npm http 201 http://registry.npmjs.org/-/user/org.couchdb.user:jeffpar
[~/Sites/pcjs] npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sane defaults.
See `npm help json` for definitive documentation on these fields
and exactly what they do.
Use `npm install <pkg> --save` afterwards to install a package and
save it as a dependency in the package.json file.
Press ^C at any time to quit.
name: (pcjs)
version: (0.0.0) 0.1.0
description: Node-enabled version of PCjs
entry point: (server.js)
test command:
git repository: (git://github.com/jeffpar/pcjs.git)
keywords: pcjs,ibm pc,emulator
author: Jeff Parsons <Jeff@pcjs.org>
license: (ISC)
About to write to /Users/Jeff/Sites/pcjs/package.json:
{
"name": "pcjs",
"version": "0.1.0",
"description": "Node-enabled version of PCjs",
"main": "server.js",
"directories": {
"doc": "docs",
"test": "tests"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git://github.com/jeffpar/pcjs.git"
},
"keywords": [
"pcjs",
"ibm",
"pc",
"emulator"
],
"author": "Jeff Parsons <Jeff@pcjs.org>",
"license": "ISC",
"bugs": {
"url": "https://github.com/jeffpar/pcjs/issues"
},
"homepage": "http://www.pcjs.org/"
}
Is this ok? (yes)
Next, I installed express using npm install --save express:
[~/Sites/pcjs] npm install --save express
npm http GET http://registry.npmjs.org/express
...
express@3.4.8 node_modules/express
├── methods@0.1.0
├── merge-descriptors@0.0.1
├── range-parser@0.0.4
├── cookie-signature@1.0.1
├── fresh@0.2.0
├── debug@0.7.4
├── buffer-crc32@0.2.1
├── cookie@0.1.0
├── mkdirp@0.3.5
├── commander@1.3.2 (keypress@0.1.0)
├── send@0.1.4 (mime@1.2.11)
└── connect@2.12.0 (uid2@0.0.3, pause@0.0.1, qs@0.6.6, bytes@0.2.1, raw-body@1.1.2, batch@0.5.0, negotiator@0.3.0, multiparty@2.2.0)
This added the following lines to my "package.json" file:
"dependencies": {
"express": "~3.4.8"
}
Then I created a test "server.js" in the root of the project:
var http = require("http");
var express = require("express");
var app = express();
app.get("/", function(req, res) {
res.end("Testing");
});
http.createServer(app).listen(3000);
and ran node server.js and verified that all was working as expected.
Updating Node (and NPM)
So as per above, I ran:
[~/Sites/pcjs] sudo n stable
which reported:
install : v0.12.1
mkdir : /usr/local/n/versions/0.12.1
fetch : http://nodejs.org/dist/v0.12.1/node-v0.12.1-darwin-x64.tar.gz
installed : v0.12.1
Then I ran:
[~/Sites/pcjs] sudo npm update -g