Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Geoff Liu 2014-11-27 00:42:20 -07:00
commit e1610bf1a9
4 changed files with 81 additions and 16 deletions

View File

@ -629,7 +629,7 @@ typedef void (*my_fnp_type)(char *);
## Further Reading
Best to find yourself a copy of [K&R, aka "The C Programming Language"](https://en.wikipedia.org/wiki/The_C_Programming_Language)
It is *the* book about C, written by the creators of C. Be careful, though - it's ancient and it contains some
It is *the* book about C, written by Dennis Ritchie, the creator of C, and Brian Kernighan. Be careful, though - it's ancient and it contains some
inaccuracies (well, ideas that are not considered good anymore) or now-changed practices.
Another good resource is [Learn C the hard way](http://c.learncodethehardway.org/book/).

View File

@ -3,6 +3,8 @@ category: tool
tool: git
contributors:
- ["Jake Prather", "http://github.com/JakeHP"]
- ["Leo Rudberg" , "http://github.com/LOZORD"]
- ["Betsy Lorton" , "http://github.com/schbetsy"]
filename: LearnGit.txt
---
@ -334,6 +336,66 @@ $ git push -u origin master
$ git push
```
### stash
Stashing takes the dirty state of your working directory and saves it on a stack of unfinished changes that you can reapply at any time.
Let's say you've been doing some work in your git repo, but you want to pull from the remote.
Since you have dirty (uncommited) changes to some files, you are not able to run `git pull`.
Instead, you can run `git stash` to save your changes onto a stack!
```bash
$ git stash
Saved working directory and index state \
"WIP on master: 049d078 added the index file"
HEAD is now at 049d078 added the index file
(To restore them type "git stash apply")
```
Now you can pull!
```bash
git pull
```
`...changes apply...`
Now check that everything is OK
```bash
$ git status
# On branch master
nothing to commit, working directory clean
```
You can see what "hunks" you've stashed so far using `git stash list`.
Since the "hunks" are stored in a Last-In-First-Out stack, our most recent change will be at top.
```bash
$ git stash list
stash@{0}: WIP on master: 049d078 added the index file
stash@{1}: WIP on master: c264051 Revert "added file_size"
stash@{2}: WIP on master: 21d80a5 added number to log
```
Now let's apply our dirty changes back by popping them off the stack.
```bash
$ git stash pop
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
#
# modified: index.html
# modified: lib/simplegit.rb
#
```
`git stash apply` does the same thing
Now you're ready to get back to work on your stuff!
[Additional Reading.](http://git-scm.com/book/en/v1/Git-Tools-Stashing)
### rebase (caution)
Take all changes that were committed on one branch, and replay them onto another branch.

View File

@ -110,7 +110,7 @@ last [1..5] -- 5
-- A tuple:
("haskell", 1)
-- accessing elements of a tuple
-- accessing elements of a pair (i.e. a tuple of length 2)
fst ("haskell", 1) -- "haskell"
snd ("haskell", 1) -- 1
@ -195,8 +195,8 @@ foo 5 -- 75
-- fixing precedence
-- Haskell has another function called `$`. This changes the precedence
-- so that everything to the left of it gets computed first and then applied
-- to everything on the right. You can use `.` and `$` to get rid of a lot
-- of parentheses:
-- to everything on the right. You can use `$` (often in combination with `.`)
-- to get rid of a lot of parentheses:
-- before
(even (fib 7)) -- true
@ -204,6 +204,9 @@ foo 5 -- 75
-- after
even . fib $ 7 -- true
-- equivalently
even $ fib 7 -- true
----------------------------------------------------
-- 5. Type signatures
----------------------------------------------------
@ -227,24 +230,24 @@ double :: Integer -> Integer
double x = x * 2
----------------------------------------------------
-- 6. Control Flow and If Statements
-- 6. Control Flow and If Expressions
----------------------------------------------------
-- if statements
-- if expressions
haskell = if 1 == 1 then "awesome" else "awful" -- haskell = "awesome"
-- if statements can be on multiple lines too, indentation is important
-- if expressions can be on multiple lines too, indentation is important
haskell = if 1 == 1
then "awesome"
else "awful"
-- case statements: Here's how you could parse command line arguments
-- case expressions: Here's how you could parse command line arguments
case args of
"help" -> printHelp
"start" -> startProgram
_ -> putStrLn "bad args"
-- Haskell doesn't have loops because it uses recursion instead.
-- Haskell doesn't have loops; it uses recursion instead.
-- map applies a function over every element in an array
map (*2) [1..5] -- [2, 4, 6, 8, 10]

View File

@ -33,7 +33,7 @@ Você não deve usar também
10 * 2 #=> 20
35 / 5 #=> 7
# Aritimética é apenas açúcar sintático
# Aritmética é apenas açúcar sintático
# para chamar um método de um objeto
1.+(3) #=> 4
10.* 5 #=> 50
@ -129,7 +129,7 @@ array = [1, "Oi", false] #=> => [1, "Oi", false]
array[0] #=> 1
array[12] #=> nil
# Como aritimética, o acesso via [var]
# Como aritmética, o acesso via [var]
# é apenas açúcar sintático
# para chamar o método [] de um objeto
array.[] 0 #=> 1
@ -183,9 +183,9 @@ novo_hash.keys #=> [:defcon, :acao]
if true
"Se verdadeiro"
elsif false
"else if, opicional"
"else if, opcional"
else
"else, também é opicional"
"else, também é opcional"
end
for contador in 1..5
@ -259,7 +259,7 @@ end
# Argumentos de métodos são separados por uma vírgula
somar 3, 4 #=> 7
somar somar(3,4), 5 #=> 12
somar(3,4), 5 #=> 12
# yield
# Todos os métodos possuem implicitamente um paramêntro opcional que é um bloco