2-Git进阶操作
作者:互联网
Git进阶操作
clone、pull 和 fetch
git clone
git clone [URL]
git clone 就是将其它仓库克隆到本地,包括仓库的版本变化。执行 git clone 之前不需要执行 git init。
默认情况下本地目录名称和仓库名称一样,若本地目录不想与远程仓库同名,可以使用命令:
git clone [URL] [Directory Name]
例如:执行
git clone http://192.168.0.9/fengguodong/avengers.git
就会在本地创建名称为 avengers 的文件夹,文件夹下面创建 .git 目录,该目录存放和远程仓库一模一样的版本记录。
git pull
git pull 是拉取远程分支更新到本地仓库的操作,其相当于从远程仓库获取最新版本,然后在与本地分支合并(
git pull = git fetch + git merge
)。git pull [远程主机名] [远程分支名]:[本地分支名]
例如:执行
git pull origin master:brancgtest
表示将远程 origin 仓库的 master 分支拉取下来与 branchtest分支合并(若冒号后面的本地分支名省略则表示与本地当前分支合并),这一条命令相当于执行git fetch origin master:branchtest
和git merge branchtest
。
git fetch
git fetch [远程主机名] [远程分支名]
例如:执行
git fetch origin master
表示将远程 origin 仓库的 master 分支下载到本地的 origin master。在实际使用中也可以使用
git fetch [远程主机名] [远程分支名]:[临时分支名]
,这样执行将会在本地建立一个临时分支,临时分支合并后可以使用git branch -d [临时分支名]
删除。git fetch 只会拉取代码,不会进行合并,执行后需要手动 git merge 合并。
git fetch 的关键是 FETCH_HEAD,该文件位于 .git 目录下,内容形式如下:
a4ca39d10d47328f6251d03e38577ba4c10bea77 https://gitlab.ftsafe.cn/riad/storm_backend
FETCH_HEAD 指某个分支在服务器上的最新状态,它的每一行对应远程服务器上的一个分支,当前分支指向的 FETCH_HEAD,就是这个文件第一行对应的那个分支。一般存在两种情况:
- 如果没有显式的指定远程分支, 则远程分支的 master 将作为默认的 FETCH_HEAD。
- 如果指定了远程分支, 就将这个远程分支作为 FETCH_HEAD。
多分支下载
E:\GitCode
λ git clone http://192.168.0.9/fengguodong/avengers.git
Cloning into 'avengers'...
remote: Enumerating objects: 46, done.
remote: Counting objects: 100% (46/46), done.
remote: Compressing objects: 100% (21/21), done.
remote: Total 46 (delta 17), reused 36 (delta 12), pack-reused 0
Unpacking objects: 100% (46/46), 3.63 KiB | 2.00 KiB/s, done.
E:\GitCode
λ cd avengers\
E:\GitCode\avengers (master -> origin)
λ git branch
* master
E:\GitCode\avengers (master -> origin)
λ git branch -r
origin/HEAD -> origin/master
origin/dark-avengers
origin/master
E:\GitCode\avengers (master -> origin)
λ git checkout -b dark-avengers origin/dark-avengers
Switched to a new branch 'dark-avengers'
Branch 'dark-avengers' set up to track remote branch 'dark-avengers' from 'origin'.
E:\GitCode\avengers (dark-avengers -> origin)
λ git branch
* dark-avengers
master
利用远程分支创建本地分支
E:\GitCode
λ mkdir avengers
E:\GitCode
λ cd avengers\
E:\GitCode\avengers
λ git init
Initialized empty Git repository in E:/GitCode/avengers/.git/
E:\GitCode\avengers (master -> origin)
λ git remote add origin http://192.168.0.9/fengguodong/avengers.git
E:\GitCode\avengers (master -> origin)
λ git fetch origin master:test
remote: Enumerating objects: 42, done.
remote: Counting objects: 100% (42/42), done.
remote: Compressing objects: 100% (18/18), done.
remote: Total 42 (delta 14), reused 36 (delta 12), pack-reused 0
Unpacking objects: 100% (42/42), 3.45 KiB | 2.00 KiB/s, done.
From http://192.168.0.9/fengguodong/avengers
* [new branch] master -> test
* [new branch] master -> origin/master
* [new tag] v0.1 -> v0.1
E:\GitCode\avengers (master -> origin)
λ git branch
test
标签:origin,GitCode,Git,进阶,git,master,操作,avengers,分支 来源: https://blog.csdn.net/wzfgd/article/details/118756403