gpt4 book ai didi

Git:通过标签从远程 pull

转载 作者:太空狗 更新时间:2023-10-29 14:08:49 25 4
gpt4 key购买 nike

我是 git 的初学者,一直在我的本地计算机上测试几个命令,方法是创建一个本地存储库来 pull 和推送。

我在“项目”中设置了一个裸存储库,并从中克隆了两个用户:“user1”和“user2”。该项目目前有文件“one.txt”、“two.txt”等,以及一些标记为“v1.0”、“v2.0”等的提交,与添加新的“#.txt”文件相关联。

但是,当我尝试在新文件夹“tmp”中创建新的 git 工作目录,将项目添加为远程存储库(tmp 不是克隆)并 pull 时,我收到错误:

$ git pull ../project v1.0
$ fatal: 'v1.0' does not appear to be a git repository
$ fatal: The remote end hung up unexpectedly

当我只是尝试从项目中 pull master 分支时,这不会发生,所以我假设我有 pull 权限。怎么回事?

最佳答案

您要做的就是创建另一个克隆。除非你有充分的理由不这样做,否则它会复制所有历史记录(别担心,它通常小于 svn 存储库大小的 10%,并且由于压缩通常小于工作目录)。

创建您的第一个存储库:

mkdir myrepo
cd !$
git init
echo one > one.txt
git add -A
git commit "my first commit"
git tag v1.0
echo two > two.txt
git add -A
git commit "my second commit"
git tag v2.0

创建一个模拟中央仓库:

cd ..
mkdir centralrepo
cd !$
git init --bare # don't want to have a working directory here
cd -

创建一个模拟的同事仓库:

mkdir coworkerrepo
cd !$
git init

告诉你的仓库中央仓库在哪里

cd ../myrepo
git remote add origin ../centralrepo

告诉你同事的仓库中央仓库在哪里

cd ../coworkerrepo
git remote add origin ../centralrepo

将您的工作发布到中央仓库:

cd - # useful shortcut for flipping between two dirs (works for git checkout and branches too)
git push origin master

放置主引用和其中的提交,但不放置标签。对于标签,执行此操作:

git push origin v1.0
git push origin v2.0

或者只是用

推送你仓库中的所有标签
git push origin --tags

您现在可以检查 Remote 是否具有这些标签和引用

git remote -v show origin

切换到您同事的存储库并获取这些更改:

cd -
git fetch # will update tracking branches and tags
git merge origin/master # fast-forward master branch to what the remote tracking branch is pointing to

fetchmerge这两个操作是用pull同时完成的。所以你可以这样做

git pull origin master

因此标签被获取。当您意识到 pull 是 fetch 和 merge(如果需要,也可以是 rebase)放在一起时,就暗示了这一点。

关于Git:通过标签从远程 pull ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12627856/

25 4 0