git的GUI工具Sourcetree使用及命令行对比
1.提交推送

这里写图片描述

流程
1. 勾选要提交的文件
2. 填写提交说明内容
3. 想提交直接推送到代码仓库时,勾选左下角按钮
4. 最后点击提交按钮即可完成代码推送

等同于

git add index.html  //添加暂存文件
git commit -m "feat(index):  新增index.htm首页内容"  //添加提交及提交信息
git push  //推送至远程
2.贮藏工作区

这里写图片描述
使用

  1. 当你想使现在当工作区保持干净时可以使用暂存功能,贮藏会把所有未提交的修改(包括暂存的和非暂存的)都保存起来
  2. 当你有另一部分内容需要修改但是不想丢弃现在已经修改过当内容时,可以贮藏工作区
  3. 当你想推送代码时,发现分支已有别人提交当代码(处于分支落后时),可以先暂存代码然后再拉去最新当代码,代码拉取完成并且没有冲突时可以将贮藏区保存的内容应用到当前工作区

等同于

git stash   //存储工作区
git stash save 'development'    //存储工作区并添加备注内容
git stash list      //查看已贮藏区列表
git stash apply     //应用最新贮藏的内容(应用后不删除该贮藏)
git stash pop       //应用最新贮藏的内容(应用后该贮藏的内容会被删除!)
git stash drop      //删除最新贮藏的内容
git stash apply        git stash pop        git stash drop 都可以指定操作任意一个已贮藏的内容,只需要在后面跟入stash@{1}索引,输入git stash list 查看索引
3.回撤版本

这里写图片描述
这里写图片描述

使用

  1. 当不小心将错误当代码推送到远程仓库想要回撤并且不留下版本记录时
  2. 选中要回撤到到版本,点击重置到这次提交,此时本地版本将会重置到该版本,并且落后于远程分支
  3. 最后使用命令行强制推送git push –force origin master,将本地代码强制覆盖到远程仓库

等同于

git reset --soft 634b64d //将版本重置到634b64d版本,或者 git reset --soft HEAD^ 将版本重置到上一个版本,git reset --hard 634b64d 命令则不会保存之前提交到内容
git push --force origin master //强制覆盖远程仓库
4.提交回滚

这里写图片描述
使用

  1. 希望将当前提交的版本回滚到这次提交之前并且保留这次提交,可以使用提交回滚
  2. 选中要回滚的版本,点击提交回滚,此时本地分支将会回滚到该提交之前到状态,回滚也会被当作一次提交,并且领先于远程分支
  3. 最后推送代码即可完成远程仓库提交记录回滚,并且保留被回滚到记录

等同于

git revert HEAD -n //回滚到上一个版本
git commit -m '回滚该次提交'
git push
5.版本标签记录(tag)

这里写图片描述
这里写图片描述

使用

  1. 在发布阶段性版本时可以为版本做标签记录
  2. 选中要打标签的版本,点击标签就会弹出要打标签打设置窗口,勾选推送标签后标签会被推送到远程仓库,否则标签只会存在于你的本地仓库
  3. 删除标签可以删除已经被添加过的标签

等同于

git tag //查看已有的标签
****操作本地仓库标签******
git tag v1.0.0 //为最新的提交记录创建名为'v1.0.0'的标签
git tag v1.0.0 1452113 //为版本号1452113的提交记录创建名为'v1.0.0'的标签
git tag -d v1.0.0 //删除本地仓库名为'v1.0.0'的标签
****操作远程仓库标签******
git push origin v1.0.0  //将名为'v1.0.0'的标签推送到远程仓库
git push origin :refs/tags/v1.0.0  //删除远程仓库里名为'v1.0.0'的标签
6.创建分支

这里写图片描述
使用

  1. 创建分支时会在当前分支基础上创建分支
  2. 勾选工作副本父节点时会在当前分支的最新版本上创建新分支,勾选指定的提交时可以选中创建新版本时的版本记录位置
  3. 勾选检出新分支时可以在完成版本创建后直接切换到该创建的新分支上

等同于

git branch  //查看分支
git branch dev //在当前分支基础上,以最新版本创建名为'dev'的分支
git branch dev d519940  //以'd519940'版本记录,创建名为'dev'的分支
git checkout dev  //切换到'dev'分支
git checkout -b dev  //创建并切换到'dev'分支
git branch -d dev  //删除'dev'分支(删除分支时不能处于所要被删除的分支上)
git branch -D dev  //强制删除'dev'分支(分支还没有被合并时需要强行删除,强行删除后将丢失已修改的内容)
******操作远程仓库********
git push origin dev:dev  //将本地分支'dev'推送到远程仓库命名为'dev',(本地分支名:远程分支名)
git push --delete origin dev  //删除远程'dev'分支
7.合并分支

这里写图片描述

使用

  1. 将dev分支提交后,如果要合并到master,先将本地分支切换到master(在分支名称上双击即可切换)
  2. 要合并至哪个分支,必须先切换到该分支

等同于

git checkout master  //切换至master分支
git merge de //合并de分支至master分支
8.拉取分支

这里写图片描述
使用

  1. git fetch 抓取远程更新取回本地,不会对工作区代码进行合并造成任何影响
  2. git push 将本地分支的更新推送到远程
  3. 拉取操作默认全部不勾选的时候使用git pull --no-commit
  4. --no-commit 参数在拉取合并后,为了防止合并失败并不自动提交,能够给使用者一个机会在提交前审视和修改合并结果
  5. --no-ff 不使用fast-forward方式合并,保留分支的commit历史
  6. --rebase 使用变基代替合并(详见下文)

rebase 变基
git pull的操作本身上是抓取远端更新然后与本地分支进行合并,合并又分为merge以及rebase
git pull 等同于 git fetch+git merge
git pull --rebase 等同于git fetch +git rebase

在落后版本情况下使用merge拉取合并时,且产生一个merge commit造成了不必要的合并提交,而且提交线也变得不连贯。使用rebase变基操作合并时,它会把你的分支移动到master分支的后面,把master分支上新的提交并入到你提交之前,这样提交线就变成了一条连贯的线。详见 Git 分支-变基 or Rebase使用

等同于

git fetch //抓取远程更新取回本地不进行合并
git pull  //拉取远程更新使用'git merge'的方法合并到本地,并且提交该次合并
git pull --no-commit  //拉取远程更新使用'git merge'的方法合并到本地,不会自动提交提该次合并
git pull --no-commit --log
git pull --no-commit --no-ff
git pull --no-commit --rebase //拉取远程更新使用git rebase的方法合并到本地
9.查看修改记录

这里写图片描述

使用

  1. 选中文件后右键查看选中的修改日志即可查看在当前版本以及之前所有版本的提交记录
  2. 可视化界面可以很直观的对比文件修改版本记录

等同于

git log index.html  //查看'index.html'文件所有的提交信息记录
git log -p index.html  //查看'index.html'文件所有的提交修改内容

文章来源:git的GUI工具Sourcetree使用及命令行对比 — — 飞翔荷兰人

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐