Search code examples
gitpushfetch

"git push" doing the same as "git fetch" from the remote


My question is the same as this one, but the answer is not clear to me. I have two git repos A and B in sync (corresponding to the two machines I work on). When I start working in B, I would normally do git fetch A (assuming the remote A in B points to repo A). But I want instead being able to push from A to the remote branch A inside B whenever I work in A. I want to be sure that it is safe, because of the warnings concerning pushing to a non-bare repo. My settings (in file A/.git/config) would be:

[remote "B"]
fetch = +refs/heads/*:refs/remotes/B/*
push =  +refs/heads/*:refs/remotes/A/*
url = ssh://<machine_B>/home/project/B

With this setting, do I get exactly the same result with this two commands? :

  • in A: git push B
  • in B: git fetch A

Solution

  • I found the exact answer to my question on kerneltrap mail archive, by one of the main git developers. So yes, both commands are equivalent.