Search
The Caboteria
/
Tech Web
/
TechBookmarks
>
ProgrammingBookmarks
/
GitNotes
(26 Mar 2015,
TobyCabot
)
(raw view)
http://news.ycombinator.com/item?id=2179123 - excellent intro to version control and git<br/> http://progit.org/book/ - git book (online and available in print)<br/> http://www-cs-students.stanford.edu/~blynn/gitmagic/ - the best "gentle introduction" to git that I've found.<br/> http://jointheconversation.org/2008/06/02/railsconf-git-talk/ - excellent introductory screencast. about an hour long, but well worth it<br/> http://macournoyer.wordpress.com/2007/12/27/moron-no-more-i-can-git/ - a nice intro to using git-svn.<br/> http://www.sanityinc.com/articles/partial-emacs-git-svn-mode - some tips for emacs and git-svn<br/> http://newartisans.com/2008/04/git-from-the-bottom-up/ - git from the bottom up<br/> If you're trying to use a non-default ssh key with git (e.g. for github) then this will help: http://help.github.com/multiple-keys/ if you've got a local branch that's not tracking a remote you can tell it to do so: =$ git branch --set-upstream master barrel/master= you can use git aliases to create your own git subcommands. here's an example of creating a very useful =git lola= subcommand: http://blog.kfish.org/2010/04/git-lola.html http://blog.apiaxle.com/post/handy-git-tips-to-stop-you-getting-fired/ - Handy Git tips to stop you getting fired https://gist.github.com/jbenet/ee6c9ac48068889b0912 - a simple git branching model. a nice antidote to a few very complicated models I've seen floating around. ---++ dotfiles You can store your "dotfiles" in git, too, which is especially great now that we do so much work inside virtual machines. There seem to be two schools of thought: * make a git repo in $HOME and include/exclude the files that you care about (e.g. http://psung.blogspot.com/2008/06/managing-dotfiles-with-git-continued.html, http://www.charlietanksley.net/philtex/dotfiles-and-git-take-2/) * make a git repo in a subdirectory and sync from there up to $HOME (e.g. https://github.com/ryanb/dotfiles) I'm trying the first approach. It seems less complex. Setting up a new machine looks like: <pre> $ cd $ git init . $ git remote add caboteria ssh://user@host/path_to_repo/dotfiles.git $ git fetch caboteria mitre:caboteria/mitre $ git checkout -fb mitre caboteria/mitre </pre> http://vcs-home.madduck.net/ - turns out there's a group of people that talk about how they've done this. ---+ Proxy Some firewalls stomp on the git protocol so if you want to clone using URL's that start with "git:" you'll need to use a proxy to tunnel the git protocol over a different protocol like ssh (assuming the firewall lets ssh through). Add a few lines to your =~/.gitconfig= to tell git to use a proxy by default but to talk directly to machines inside your firewall: <pre> [core] gitproxy = "none" for "your-company-domain.com" gitproxy = git-proxy </pre> Create a =git-proxy= executable file somewhere on your path (=~/bin= or maybe =/usr/local/bin=). Here's the contents of my =~/bin/git-proxy= file: <pre> #!/bin/sh echo "proxy to $1:$2 via ec2" >&2 exec ssh ec2 nc "$1" "$2" </pre> In my case "ec2" is a host on the public internet that I have set up passwordless ssh access to. You'll need to use a different host. I usually don't like to have programs like this output anything, but in this case I emit one line because the proxy should run sometimes but not others so it's handy to see whether git has decided to run it or not. The only downside of this is that you need to use fully-qualified domain names for machines in your corporate domain, because git uses the domain name to decide whether to use the proxy or not. ---+ cron git, ssh, and cron can be a fussy combination. When debugging crontab's that involve git and ssh, it's often helpful to wedge a small script between git and ssh: <pre> #!/bin/bash /usr/bin/ssh -vvv "$@" </pre> Tell git to use this script with the =GIT_SSH= environment variable. ---+ rewriting history https://www.kernel.org/pub/software/scm/git/docs/git-filter-branch.html <pre> git filter-branch --index-filter 'git rm --cached --ignore-unmatch filename' HEAD </pre>
E
dit
|
A
ttach
|
P
rint version
|
H
istory
: r7
<
r6
<
r5
<
r4
<
r3
|
B
acklinks
|
V
iew topic
|
Ra
w
edit
|
M
ore topic actions
Copyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding The Caboteria?
Send feedback