@git / git-reference / commits / 34819f5

For those times you want to update your remotes

With a note on the slight difference in yelling between the use of `git remote set-url` and the sheepish, silent eater of arguments, `git config remote`. And that you can have a fetch that isn't at the same house of your push URL. On the back of #5

Soon Van committed Dec 21, 2012 at 22:08 UTC 34819f50380f3f8bcaadbd5e989165187506ff15
1 file changed +75
remotes/index.html
+75
@@ -153,6 +153,81 @@ github git@github.com:schacon/hw.git (push)
153 add new remotes and <code>git remote rm</code> to delete existing ones.
154 </p>
155
156 + <h4>
157 + git remote set-url
158 + <small>update an existing remote URL</small>
159 + </h4>
160 +
161 + <p>Should you ever need to update a remote's URL, you can do so with
162 + the <code>git remote set-url</code> command.
163 + </p>
164 +
165 +<pre>
166 +<b>$ git remote -v</b>
167 +github git@github.com:schacon/hw.git (fetch)
168 +github git@github.com:schacon/hw.git (push)
169 +origin git://github.com/pjhyett/hw.git (fetch)
170 +origin git://github.com/pjhyett/hw.git (push)
171 +<b>$ git remote set-url origin git://github.com/github/git-reference.git</b>
172 +<b>$ git remote -v</b>
173 +github git@github.com:schacon/hw.git (fetch)
174 +github git@github.com:schacon/hw.git (push)
175 +origin git://github.com/github/git-reference.git (fetch)
176 +origin git://github.com/github/git-reference.git (push)
177 +</pre>
178 +
179 + <p>In addition to this, you can set a different push URL when you
180 + include the <code>--push</code> flag. This allows you to fetch from
181 + one repo while pushing to another and yet both use the same remote alias.
182 + </p>
183 +
184 +<pre>
185 +<b>$ git remote -v</b>
186 +github git@github.com:schacon/hw.git (fetch)
187 +github git@github.com:schacon/hw.git (push)
188 +origin git://github.com/github/git-reference.git (fetch)
189 +origin git://github.com/github/git-reference.git (push)
190 +<b>$ git remote set-url --push origin git://github.com/pjhyett/hw.git</b>
191 +<b>$ git remote -v</b>
192 +github git@github.com:schacon/hw.git (fetch)
193 +github git@github.com:schacon/hw.git (push)
194 +origin git://github.com/github/git-reference.git (fetch)
195 +origin git://github.com/pjhyett/hw.git (push)
196 +</pre>
197 +
198 + <p>Internally, the <code>git remote set-url</code> command calls
199 + <code>git config remote</code>, but has the added benefit of reporting
200 + back any errors. <code>git config remote</code> on the other hand, will
201 + silently fail if you mistype an argument or option and not actually set
202 + anything.
203 + </p>
204 +
205 + <p>For example, we'll update the <code>github</code> remote but
206 + instead reference it as <code>guhflub</code> in both invocations.
207 + </p>
208 +
209 +<pre>
210 +<b>$ git remote -v</b>
211 +github git@github.com:schacon/hw.git (fetch)
212 +github git@github.com:schacon/hw.git (push)
213 +origin git://github.com/github/git-reference.git (fetch)
214 +origin git://github.com/github/git-reference.git (push)
215 +<b>$ git config remote.guhflub git://github.com/mojombo/hw.git</b>
216 +<b>$ git remote -v</b>
217 +github git@github.com:schacon/hw.git (fetch)
218 +github git@github.com:schacon/hw.git (push)
219 +origin git://github.com/github/git-reference.git (fetch)
220 +origin git://github.com/github/git-reference.git (push)
221 +<b>$ git remote set-url guhflub git://github.com/mojombo/hw.git</b>
222 +fatal: No such remote 'guhflub'
223 +</pre>
224 +
225 + <p class="nutshell">
226 + <b>In a nutshell</b>, you can update the locations of your remotes
227 + with <code>git remote set-url</code>. You can also set different push
228 + and fetch URLs under the same remote alias.
229 + </p>
230 +
231 </div>
232 </div>
233