Git fetch pll push 远程操作

本文详细介绍了Git中远程操作的基本命令,包括如何使用git fetch和git pull获取远程仓库的更新,如何使用git push推送本地更改到远程仓库,以及如何设置分支追踪关系等。通过这些命令,你可以有效地与远程仓库进行代码同步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当我们将本地仓库与远程主机进行关联后,就可以与远程主机共享代码或文件,下面对git远程操作常用的命令进行总结:

git fetch

git fetch命令用于将远程主机的更新取回本地。

git fetch <远程主机名>

上面命令将某个远程主机的全部更新取回本地,默认情况下git fetch命令取回所有分支的更新,如git fetch origin命令,将从远程主机origin(默认主机名)refs/heads命名空间下复制所有分支,并将它们存储到本地的refs/remotes/origin命名空间中。获取远程分支后,可以使用branch -a命令查看所有分支(-r指定查看远程分支)。
  如果想要取回指定分支的更新,可以指定分支名。

git fetch origin master

上述命令将从取回orgin主机上的master分支,取回的更新,在本地主机上要使用“远程主机名/分支名”的形式读取。比如上面取回的分支,就要用origin/master读取。
  也可以在取回更新的同时,指定本地分支。下面的命令将取回远程master分支的更新并放在本地分支tmp。
  git fench origin master:tmp
  在取回远程分支的更新后(git clone命令已包含这一过程),可以在此基础上创建一个新的分支。
  git checkout -b newBranch origin/master
  之后,我们可以切换回本地分支,执行git merge命令对远程master分支进行合并。
  在执行git fetch之后,可能会发现仍看不到全部远程分支,可进行如下配置:

git config remote.origin.fetch +refs/heads/*:refs/remotes/origin/*

git pull

除了使用git fetch指令拉取远程数据,还可以使用git pull命令拉取远程特定分支的所有更新,再与本地指定分支进行合并,完整命令格式如下:

git pull <远程主机名> <远程分支名>:<本地分支名>	

如果远程分支要合并到当前分支,则冒号后的分支名可以省略。
很多时候,本地分支与远程分支之间存在追踪关系(比如git clone时,所有本地分支默认与远程主机的同名分支建立追踪关系),git可以使用如下命令手动建立追踪关系。

git branch --set-upstream-to=<远程主机名>/<分支名>

在存在追踪关系的情况下,可以直接使用git pull命令从追踪的的分支取回更新并合并。git pull 命令相当于是git fetch + git merge,因此,git fetch 命令更安全,我们可以先比较分支的内容,在决定是否合并,过程如下。

git fetch origin master:tmp
git diff tmp
git merge tmp

git push

git push命令用于向远程分支推送数据,完整命令如下:

git push <远程分支名> <本地分支名>:<远程分支名>

如果省略分支名和主机名(说明只有一个远程主机),则会向与之存在追踪关系的分支推送,如果远程分支不存在,则会新建。
如果省略本地分支名,向远程分支推送一个空的分支,则表示删除指定的远程分支。

git push origin  :master

上述命令表示删除远程主机的master分支。
不带任何参数的git push, 默认只推送当前分支,这叫做simple方式,git2.0之后的版本默认采用这种方式,在Git2.0版本之前,默认采用matching的方式,会推送所有有对应远程分支的本地分支(有关git pull / push的默认行为,在另一篇博客中记录)。可使用git config命令修改git push 默认配置。

git config --global push.default <pattern-name>

在推送过程中,如果本地分支版本落后于远程分支,推送将被中断,可执行git pull命令将本地分支更新到最新版本(更推荐使用fetch + merge命令),然后再向远程推送。或者使用–force 强制将本地分支推送,这样远程主机上的更新版本将会被覆盖,这个选项要慎用。

### Git 中 `fetch`、`pull` 和 `push` 命令的区别及正确使用方法 #### 1. Git Fetch `git fetch` 是用于获取远程仓库中的最新更改并将其存储在本地计算机上而不自动合并这些更改到当前分支。这允许开发者查看其他人的工作进展,在决定如何处理之前先审查变化的内容。 此操作不会修改工作目录中的文件,也不会改变当前分支的状态。通过这种方式可以安全地检查新提交的信息以及差异对比等[^2]。 ```bash $ git fetch <远程主机名> ``` #### 2. Git Pull `git pull` 实际上是执行了两次动作:一次是从指定的远程分支下载最新的数据(`git fetch`);另一次则是尝试将所获得的数据与本地分支进行合并(`git merge FETCH_HEAD`)。因此它不仅会拉取远端更新还会试图同步至本地分支中去[^1]。 当团队成员之间频繁交流代码时,经常需要运行该指令来保持项目的一致性和协作效率。不过需要注意的是,在某些情况下可能会遇到冲突(conflict),这时就需要手动解决这些问题才能继续开发流程。 ```bash $ git pull <远程主机名> <分支名称> ``` #### 3. Git Push `git push` 则是用来向远程版本库推送已有的改动记录。通常是在完成了一些功能实现或是修复了 bug 后想要分享给他人或者部署上线的时候才会用到这个命令。为了防止覆盖他人的贡献,默认只会推送到自己跟踪的那个上游分支上去除非特别指定了目标位置。 如果要创建一个新的远程分支,则可以在参数里加上完整的路径如 `<远程主机名>/<新的分支>` 来达到目的。 ```bash $ git push <远程主机名> <分支名称> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值