git使用教程2

1.远程仓库指令

指令 简述
git clone [git地址] 从远程仓库克隆到本地(当前目录)
git remote -v 查看所有远程仓库,不带参数-v只显示名称
git remote show [remote] 显示某个远程仓库的信息
git remote add [name] [url] 增加一个新的远程仓库,并命名
git remote rename [old] [new] 修改远程仓库名称
git pull [remote] [branch] 取回远程仓库的变化,并与本地版本合并
git pull 同上,针对当前分支
git fetch [remote] 获取远程仓库的所有变动到本地仓库,不会自动合并!需要手动合并
git push 推送当前分支到远程仓库
git push [remote] [branch] 推送本地当前分支到远程仓库的指定分支
git push [remote] –force/-f 强行推送当前分支到远程仓库,即使有冲突,⚠️很危险!
git push [remote] –all 推送所有分支到远程仓库
git push –u 参数–u表示与远程分支建立关联,第一次执行的时候用,后面就不需要了
git remote rm [remote-name] 删除远程仓库
git pull –rebase 使用rebase的模式进行合并

2.推送push和拉取pull

  • git pull:拉取远程仓库代码到本地,在实际的开发中,在提交前一定要先pull,避免冲突⚠️!
  • git push:推送本地仓库到远程仓库,在实际的开发中,在提交前一定要先pull,避免冲突⚠️!

3.git pull和git fetch的异同

  • 是从服务端获取更新,区别是 fetch 不自动合并,不影响当前工作区内容
  • git pull = git fetch + git merge
  • git fetch只获取更新,后手动执行git merge合并

4.git使用之分支

分支是Git的核心优势,分支创建、切换、删除都非常快,非常的轻量。

注意:早建分支!多用分支!

分支指令

指令 描述
git branch 列出所有本地分支,加参数-v显示详细列表
git branch -r 列出所有远程分支
git branch -a 列出所有本地分支和远程分支,用不同颜色区分
git branch [branch-name] 新建一个分支,但依然停留在当前分支
git branch -d dev 删除dev分支,-D(大写)强制删除
git checkout -b dev 从当前分支创建并切换到dev分支
git checkout -b feature1 dev 从本地dev分支代码创建一个 feature1分支,并切换到新分支
git branch [branch] [commit] 新建一个分支,指向指定commit id
git branch –track [branch] [remote-branch] 新建一个分支,与指定的远程分支建立关联
git checkout -b hotfix remote hotfix 从远端remotehotfix分支创建本地hotfix分支
git branch –set-upstream [branch] [remote-branch] 在现有分支与指定的远程分支之间建立跟踪关联: git branch --set-upstream hotfix remote/hotfix
git checkout [branch-name] 切换到指定分支,并更新工作区
git checkout . 撤销工作区的(未暂存)修改,把暂存区恢复到工作区。
git checkout HEAD . 撤销工作区、暂存区的修改,用HEAD指向的当前分支最新版本替换
git merge [branch] 合并指定分支到当前分支
git merge –no-ff dev 合并dev分支到当前分支,参数--no-ff禁用快速合并模式
git push origin –delete [branch-name] 删除远程分支
git rebase master 将当前分支变基合并到master分支
✅switch:新的分支切换指令 切换功能和checkout一样,switch只单纯的用于切换
git switch master 切换到已有的master分支
git switch -c dev 创建并切换到新的dev分支

分支的切换

git checkout dev 切换分支时,分为两步:

  • HEAD指向 dev:修改 HEAD的“指针”引用,指向 dev 分支。
  • 还原工作空间:把 dev 分支内容还原到工作空间。

合并和冲突

  • 合并指令 git merge 分支名 ,表示将指定分支合并到当前分支
  • 快速合并:master 无新提交,“git merge dev”合并分支dev到master,此时合并速度就非常快,直接移动master的“指针”引用到dev即可不会产生新的提交。
  • 普通合并:如果 master 有变更,存在分支交叉,则会把两边的变更合并成一个提交。

变基rebase

把两个分支的修改内容合并到一起的办法有两种:mergerebase,作用都是一样的,区别是rebase的提交历史更简洁,干掉了分叉,merge的提交历史更完整。

1
2
3
git rebase master
git checkout master
git merge dev
  • dev上执行“git rebase master”变基,将dev分支上分叉的v7v8生成补丁,然后在master分支上应用补丁,产生新的v7'v8'新的提交。
  • 然后回到master分支,完成合并git merge dev,此时的合并就是快速合并了。
  • 最终的提交记录就没有分叉了。

5.标签管理

指令 描述
git tag 查看标签列表
git tag -l ‘a*’ 查看名称是“a”开头的标签列表,带查询参数
git show [tagname] 查看标签信息
git tag [tagname] 创建一个标签,默认标签是打在最新提交的commit上的
git tag [tagname] [commit id] 新建一个tag在指定commit上
git tag -a v5.1 -m’v5.1版本’ 创建标签v5.1.1039-a指定标签名,-m指定说明文字
git tag -d [tagname] 删除本地标签
git checkout v5.1.1039 切换标签,同切换分支
git push [remote] v5.1 推送标签,标签不会默认随代码推送推送到服务端
git push [remote] –tags 提交所有tag

6.后悔指令

指令 描述
git checkout . 撤销工作区的(未暂存)修改,把暂存区恢复到工作区。不影响暂存区,如果没暂存,则撤销所有工作区修改
git checkout [file] 同上,file指定文件
git checkout HEAD . 撤销工作区、暂存区的修改,用HEAD指向的当前分支最新版本替换工作区、暂存区
git checkout HEAD [file] 同上,file指定文件
git reset 撤销暂存区状态,同git reset HEAD,不影响工作区
git reset HEAD [file] 同上,指定文件fileHEAD可省略
git reset [commit] 回退到指定版本,清空暂存区,不影响工作区。工作区需要手动git checkout签出
git reset –soft [commit] 移动分支masterHEAD到指定的版本,不影响暂存区、工作区,需手动git checkout签出更新
git reset –hard HEAD 撤销工作区、暂存区的修改,用当前最新版
git reset –hard HEAD~ 回退到上一个版本,并重置工作区、暂存区内容。
git reset –hard [commit] 回退到指定版本,并重置工作区、暂存区内容。
git revert[commit] 撤销一个提交,会用一个新的提交(原提交的逆向操作)来完成撤销操作,如果已push则重新push即可

Git是目前最主流的分布式版本控制系统,是免费开源的项目,核心的版本控制,用于进行多人的代码编辑,是团队开发的必备工具!

注:本文参考并感谢安木夕