Git Basic Commands

git clone
该命令很简单不详细说,这里主要说一下如何重命名仓库,对当前文件夹已经存在同名仓库的时候会很有用:
git clone git@github.com:muwenzi/repo.git new-repo-name
git fetch
用于远端仓库和本地仓库的同步,并不会进行本地仓库和工作区的同步(即合并 merge)。默认情况下,fetch 会更新本地仓库中所有 origin/分支(包括远端新的分支和现有分支的新 commit)。
git fetch
如果只想取回特定分支的更新,可以指定分支名。
git fetch <远程主机名> <分支名>
比如,取回 origin 主机的 master 分支。
git fetch origin master
方便的话可以直接
git fetch master
⚠️ fetch 的操作只会让本地仓库分支(默认 origin/开头的这些分支)与远端仓库保持同步,但并不会更新工作区的分支代码。
如果还需要让本地仓库和工作区保持同步,fetch 完之后还需要执行一下操作:
git merge origin/<分支名>
git branch
git fetch 所取回的更新,在本地主机上要用 远程主机名/分支名 的形式读取。比如 origin 主机的 master,就要用 origin/master 读取。
查看分支
git branch 命令的-r 选 项,可以用来查看远程分支,-a 选项查看所有分支,无选项则查看本地分支。
git branch -r
origin/master
git branch -a
* master
remotes/origin/master
删除分支
方式一:安全删除,Git 会阻止你删除包含 未合并更改 的分支。
git branch -d <分支名>
方式二:强制删除,即使包含 未合并更改,如果你对那条分支看都不想看一眼立马删除的话。
git branch -D <分支名>
删除远程分支:
git push origin :<分支名>
新建分支
git branch <新分支名> // 基于当前所在分支新建分支
⚠️ 新建完后 不会 自动切换到那个分支去,其实就是新建了一个
指针而已。推荐使用git checkout -b <新分支名>的方式去建立新分支,会自动切换。
修改当前分支名
git branch -m <新分支名>
手动建立远程分支与本地分支的追踪关系
git clone 的时候 Git 会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的 master 分支自动"追踪"origin/master 分支。 Git 也允许手动建立追踪关系
git branch --set-upstream master origin/next
上面命令指定 master 分支追踪 origin/next 分支。
git checkout
该 命令可以用于三种场景:
- 切换分支
- 创建分支
- 撤销修改
创建分支
取回远程主机的更新以后,可以在它的基础上,使用 git checkout 命令创建一个新的分支。
git fetch # 本地仓库和远端仓库先进行同步
git checkout <新分支名> origin/master # gcb <新分支名> origin/master
上面命令表示,在 origin/master 的基础上,创建一个新的 本地 分支(没有 origin/开头的分支)。当切换到远程某个分支,本地没有这个分支的时候就需要这样做。
⚠️ 如果没有写
origin/master那么将会基于当前所在的分支进行创建。
如果要将新分支推送到远端,还需要执行以下命令:
# 推送并建立追踪当前分支至远端
git push --set-upstream origin <分支名> # gpsup
这时会在远端创建一个与本地同名的 <分支名>,加-u会自动追踪该分支,不然还要手动 --set-upstream,其实这条命令就是去修改.git文件夹下config的配置。
如果远端有分支 <分支名> 通过一下操作可以将该分支拉取到本地,并与远端自动建立关联:
git fetch # gf
git checkout <分支名> # gco <分支名>