我如何用特定的版本克隆git存储库,就像我通常在Mercurial中做的那样:
hg clone -r 3 /path/to/repository
我如何用特定的版本克隆git存储库,就像我通常在Mercurial中做的那样:
hg clone -r 3 /path/to/repository
当前回答
$ git clone $URL
$ cd $PROJECT_NAME
$ git reset --hard $SHA1
再次返回到最近的提交
$ git pull
为了在线(远程)保存还原的提交,你必须强制执行origin:
git push origin -f
其他回答
克隆一个git存储库,恰当地说,就是克隆整个存储库:没有办法只选择一个修订版本来克隆。然而,一旦你执行了git克隆,你可以通过执行checkout <rev>来检出一个特定的修订。
git clone -o <sha1-of-the-commit> <repository-url> <local-dir-name>
Git使用了origin这个词,而不是众所周知的revision
以下是手册$ git帮助克隆的一个片段
--origin <name>, -o <name>
Instead of using the remote name origin to keep track of the upstream repository, use <name>.
mkdir linux-4.3.20151106
cd linux-4.3.20151106/
git init
git fetch git@github.com:torvalds/linux.git 9154301a47b33bdc273d8254c407792524367558
error: unknown option `no-write-fetch-head'
usage: git fetch [<options>] [<repository> [<refspec>...]] or: git fetch [<options>] <group>
or: git fetch --multiple [<options>] [(<repository> | <group>)...] or: git fetch --all [<options>]
git --version
git version 2.17.1
export https_proxy=http://192.168.1.3:1080;export http_proxy=http://192.168.1.3:1080
add-apt-repository ppa:git-core/ppa
apt update
apt-get install --only-upgrade git
git --version
git version 2.38.0
git fetch git@github.com:torvalds/linux.git 9154301a47b33bdc273d8254c407792524367558 --no-write-fetch-head --depth=1
remote: Enumerating objects: 54692, done.
remote: Counting objects: 100% (54692/54692), done.
remote: Compressing objects: 100% (50960/50960), done.
remote: Total 54692 (delta 3828), reused 29210 (delta 2966), pack-reused 0
Receiving objects: 100% (54692/54692), 147.35 MiB | 2.85 MiB/s, done.
Resolving deltas: 100% (3828/3828), done.
git branch master 9154301a47b33bdc273d8254c407792524367558
git checkout
总结一下(git v. 1.7.2.1):
在你想要回购的地方做一个常规的git克隆(得到所有的日期-我知道,不是想要的,我们正在那里) Git checkout <sha1 rev>你想要的rev Git重置——很难 Git checkout -b master
git克隆https://github.com/ORGANIZATION/repository.git(克隆存储库)
CD存储库(导航到存储库)
Git获取原点2600f4f928773d79164964137d514b85400b09b2
git checkout FETCH_HEAD