I'm intrigued by git. I've used nearly all of the usual players over the past decades. Currently on SVN and not really happy.
I think I understand the basics, but I don't understand one key concept about the distributed nature: how does a user in his/her house talk to/from my computer (separate houses, ISP, etc.) , when we both have dynamic IP addresses from our ISPs, and use at least one level of firewall/NAT to hide the local network address from the world.
It's not as if there is a useful DNS entry pointing to the other host/PC/laptop. And most (all?) ISPs don't make it obvious how you open ports in general (sure, I can do it in my house, but what about when I'm in a hotel room?)
Any pointer to the answer to this FAQ greatly appreciated.
I assume that you are not both on the same local private network, is it?
You can try to set up SSH tunnel, and push/fetch via SSH. You can configure ssh to use non-standard port, and have it exported on your router. You can use one of free dynamic DNS services like DynDNS.
Each of you can set up free account on one of public Git hosting sites like GitHub, push your changes to it when you are ready, and the other would fetch changes from other public repository: this would not need to punch any holes in your firewall / export ports in your router / NAT.
The picture would look similar to this figure from Chapter 5.1 "Distributed Workflows" of Pro Git book, only without the blessed repository and integration manager position, and developers fetching directly from each others public repositories:
lieutenant-diagram http://progit.org/figures/ch5/18333fig0502-tn.png
If all else fails, you can always exchange git bundle's using any channel: be it email attachements or USB disk.