其他分享
首页 > 其他分享> > 2-Git进阶操作

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:branchtestgit 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