在Git命令中使用origin
我是Git的新手,有个问题。这两个命令似乎是: 如果我的目标是将本地克隆重置为干净状态,那么这与以下两种情况有何不同在Git命令中使用origin,git,Git,我是Git的新手,有个问题。这两个命令似乎是: 如果我的目标是将本地克隆重置为干净状态,那么这与以下两种情况有何不同 git fetch --all git reset --hard master # no origin 或 如果我们要直接指定远程设备,似乎不需要先获取。我是不是误解了什么?这是一个有目的的公约还是一个没有基础的传统/习惯 为什么我要问: 我正在为一台构建机器编写脚本。我希望在一个时间点获取所有内容,然后在构建期间从本地内容开始工作,这样就不可能在构建过程中进行部分更改。似乎我
git fetch --all
git reset --hard master
# no origin
或
如果我们要直接指定远程设备,似乎不需要先获取。我是不是误解了什么?这是一个有目的的公约还是一个没有基础的传统/习惯
为什么我要问:
我正在为一台构建机器编写脚本。我希望在一个时间点获取所有内容,然后在构建期间从本地内容开始工作,这样就不可能在构建过程中进行部分更改。似乎我想从远程获取一次,然后在命令中不指定
origin
。然而,我很难在网上找到这样的例子,所以我不确定我是否遗漏了什么。首先是远程分支的基础知识。您的存储库如下所示
A - B - C [origin/master]
\
D - E [master]
master
和origin/master
都是分支,它们只是指向提交的标签。在本例中,自上次获取以来,您已经向master
提交了两次
Git不会与网络对话,除非你告诉它。它跟踪上次查看带有“远程分支”的远程存储库的时间<代码>源代码/主代码是一个“远程分支”。它是上次运行git-fetch-origin
或git-fetch-all
时更新的名为origin
的远程上的master
分支的本地副本(或执行提取的git-pull
)
这是用来扔掉你所有的本地工作的。这会将当前分支和工作目录重置为
origin/master
所在的位置,即C
<代码>D和E
将丢失
A - B - C [origin/master]
\
D - E [master]
git reset --hard origin/master
A - B - C [origin/master]
[master]
这会将当前分支和工作目录重置回
master
。如果您恰好在master
上,这将撤消您未提交的工作。但是如果你在另一个分支上,你只是吹走了你的分支
要扔掉未提交的更改,更安全的做法是git reset--hard HEAD
HEAD
是指向当前签出提交的指针。不管你在哪个部门,它都会起作用。我把它化名为clear
我希望在一个时间点获取所有内容,然后在构建期间从本地内容开始工作,这样就不可能在构建过程中进行部分更改 Git不会与网络对话,除非你告诉它。有两个命令将更新您的本地存储库,
git fetch
和git pull
(执行提取)。如果不运行这些分支,您的origin/
远程分支将不会更改
如果您在构建开始时获取并签出,您将很好。如果需要重置为干净状态,可以运行
git reset--hard HEAD
。您可能还想运行git clean-dxf
,它将抛出任何未跟踪或忽略的文件,如构建工件。因此我确实误解了使用origin/
,这句话为我澄清了这一点:“origin/master
是一个“远程分支”。它是远程上master
分支的本地副本”。我想那是遥远的。谢谢为便于将来参考,origin/master
和master
都是本地分支,它们是不同的。实际上,更新本地origin/master
分支需要提取。
A - B - C [origin/master]
\
D - E [master]
git reset --hard origin/master
A - B - C [origin/master]
\
D - E [master]
git reset --hard origin/master
A - B - C [origin/master]
[master]
git reset --hard master