Sourcetree使用详解 以及git常用命令大全

一直在努力的人运气不会太差,加油!!!

SourceTree图形界面化操作

顶部工具栏
提交:提交改动到本地仓库 ,相当于git commit -m '提交的内容'
拉取:从远程拉取最新版本到本地 自动合并 ,相当于git pull
推送:提交本地的文件/改动到远程仓库,相当于git push
抓取:检测远程是否有更新,如果有变动会在拉取右上角出现数字角标。从远程获取最新版本到本地 , 不会自动合并 相当于git fetch

拉取/抓取区别:
pull(拉取)的话,下拉远程分支并与本地分支合并。fetch(抓取)只是下拉远程分支,没有合并本地代码

分支:新建本地分支 ,相当于git checkout -b 新分支的名字
合并:合并本地分支,相当于git merge 分支的名字
贮藏:当我们想要保存某个状态的内容,可选择贮藏;相当于git stash

额外补充—— 贮藏使用场景:在实际开发中经常有这样的事情发生,当你正在进行项目中某一部分的工作,还未完成,只做了一半,而你想转到其他分支上进行一些工作。问题是,你不想提交进行了一半的工作,否则以后你无法回到这个工作点。解决这个问题的办法就是git stash命令。
“贮藏” 可以获取你工作目录的中间状态——也就是你修改过的被追踪的文件和暂存的变更——并将它保存到一个未完结变更的堆栈中,随时可以重新应用。

终端:打开电脑终端,可使用指令操作当前仓库
设置:可以配置仓库提交代码模版,远程仓库地址,远程仓库用户名,版本控制忽略文件等

顶部工具栏

左侧状态栏
WORKSPACE:当前本地文件的内容/状态
分支(branch):本地的分支。前面有空心圈圈的表示当前所在分支
标签(tag):可以为不同的分支添加一些标签
远端(remote):远程仓库所有的分支

左侧状态栏

WORKSPACE - 文件状态
当选中左侧文件状态的时候,中间会出现三块区域:已暂存文件、未暂存文件、文件内容;

分支:管理本地分支,可以进行分支的新建/切换/删除/合并等操作
在分支 左侧有个圆圈的标识符,代表当前工作区所在的分支
选中某个分支,右键,会出现如下的选择列表:

图片.png

检出xx:切换当前分支到该分支, 相当于终端的 git checkout 分支名
合并分支1至分支2:将分支1的更改合并到分支2 相当于终端的 git merge 分支名
将当前变更变基到 xxx(rebase):就是将该分支未更改前的文件基础更改到某个版本
推送到 origin/master(已跟踪):将本地的变更推送到已跟踪的远程分支 相当于终端的 git push master
推送到:选择要推送到的远程分支
跟踪远程分支:选择要跟踪的远程分支,跟踪后该本地分支会和跟踪的远程分支对比是否有改动
与当前对比:选中的分支与当前分支的对比
重命名...:重新命名分支
删除 xxx:删除当前分支;相当于终端的git branch -d 分支名
复制分支名字:复制分支名称
创建拉取请求...:创建并切换分支;相当于终端的git checkout -b 分支名


git常用命令大全

创建文件的一些命令
touch a  //创建一个a文件
touch bb.json // 创建一个以.json为后缀的文件
mkdir AA //创建AA文件夹
rm 文件名  //删除文件
pwd //打印当前路径
注意touch和mkdir的区别
文件信息
ls //查看当前路径下面的所有文件名
ls 文件夹名 // 查看对应文件夹中的内容
ls -l // 拉出最近git提交记录以及对应修改的文件名
ls -l -a // 拉出最近git提交记录以及对应修改的文件名,隐藏的文件也会显示
切换路径
cd ~ // 将工作路径快速切换到root
cd - // 将工作路径切换到上一状态
cd ../ // 切回到上一个工作路径和 cd.. 一致
cd 文件夹名 // 进入某个目录
cd / // 进入根目录
vim模式
vim 文件名 // 新建一个文件
i 插入内容
按下esc :wq 再按return(保存并退出)
按下esc :q 再按return(直接退出)
vim 模式下 文件中#号开头的为注释
git账号信息配置
//给当前的git仓库配置用户名和邮箱
git config user.name "flowerlflower"
git config user.email  "799431668@qq.com"
//给git配置全局的用户名和邮箱
git config —global user.name "flowerlflower"
git config —global user.email  "799431668@qq.com"

常用git 命令

git init  // 初始化一个代码仓库
git clone url地址 //将远程的版本下载到本地
git clone -b 分支名 地址 // 克隆分支的代码到本地
git status  //查看文件状态  红色:该文件被添加或者被修改,但是没有添加到git的暂缓区
git add 文件名 //将某个文件存入暂存区
git add xx.h xx.m  //将xx.h 和xx.m添加到暂缓区
git add . //将在工作区所有不在暂缓区的所有内容添加到暂缓区
git stash -u -k // 提交部分文件内容 到仓库 例如本地有3个文件 a b c 只想提交a b到远程仓库 git add a b 然后 git stash -u -k 再然后git commit -m "备注信息" 然后再push push之后 git stash pop 把之前放入堆栈的c拿出来 继续下一波操作
git commit -m "提交的内容"  //将在暂缓区的所有内容提交到本地版本库,清空暂缓区 (即提交代码到仓库)
git checkout .  //撤销,放弃所有的本地文件修改
git log --oneline //拉出所有提交信息 单行显示
git branch //查看当前使用分支(结果列表中前面标*号的表示当前使用分支)
git branch -a //查看远程分支(列出远程分支以及本地分支名)
git branch -r  //列出远程分支(远程所有分支名)
git branch 分支名 //新建分支
git checkout -b 分支名 //创建并切换分支
git checkout -b test c6f68a8 在提交记录(c6f68a8)上创建一个名为test的分支 
git checkout 分支名  //切换分支 或 检出分支
git push // 将本地分支推送到远程 (一般直接push)
git push  origin 分支名 // 将本地分支推送到远程

分支操作

git branch //查看当前使用分支(结果列表中前面标*号的表示当前使用分支)
git branch 分支名 //新建分支
//例如 git branch dev1.0 如果本地没有就创建/获取 如果
git checkout -b 分支名 //创建并切换分支
git checkout 分支名  //切换分支 或 检出分支
git branch -v // 查看分支以及提交hash值和commit信息
git merge 分支名 // 把该分支的内容合并到现有分支上
git branch -d 分支名 //删除分支
git branch -D 分支名 // 强制删除 若没有其他分支合并就删除 d会提示 D不会 
//例如 git branch -D dev1.0
git branch -m 旧分支名 新分支名 // 修改分支名
git branch -M 旧分支名 新分支名 // 修改分支名 M强制修改 若与其他分支有冲突也会创建(慎用)
git branch -r // 列出远程分支(远程所有分支名)
git branch -a //查看远程分支(列出远程分支以及本地分支名)
git push  origin 分支名 // 将本地分支推送到远程

额外普及

1、远程没有分支,本地也没有分支

git checkout -b test  //创建并切换到新分支
git push --set-upstream origin test  //推送到远程分支,并且跟踪远程分支

2、远程已经存在分支,本地不存在对应分支

git checkout --track origin/dev1.0
或者git checkout -b newdev origin/dev1.0(该命令可以设置不同的分支名,不过非常建议本地分支名和远程分支名一样。)

3、设置一个已有的本地分支跟踪一个刚刚拉取下来的远程分支:

git branch -u origin/test 或者 git branch --set-upstream-to=origin/test

4、删除本地跟踪的远程分支(不常用)

git branch -r -d origin/branchname

5、删除git仓库上的远程分支

 git push origin --delete branchname

回退操作

git reflog //可以查看所有版本回退的操作
git reset --hard HEAD //回到当前版本
git reset --hard HEAD^  //回到上一个版本
git reset --hard HEAD^^  //回到上上个版本
git reset --hard HEAD~10 //回到前10个版本
git reset -- hard 版本号(前5位) //回到固定版本号  (reset常用操作)例如:git reset --hard 149a6c5
git reset --files // 从仓库回撤到暂存区

查看信息

git show HEAD // 查看最后一次提交修改的详细信息 也可以用git show 哈希值 查看对应的内容
git show HEAD^ // 查看倒数第二次的提交修改详细信息
git log --oneline //拉出所有提交信息 单行显示
git log -5 //查看前5次提交记录
git log  //查看版本信息

标签操作

git tag //查看列出所有打过的标签名
git tag -d 标签名 // 删除对应标签
git tag 标签名字 // 在当前仓库打个标签
git tag foo -m "message" // 在当前提交上,打标签foo 并给message信息注释
git tag 标签名 哈希值 -m "message" // 在某个哈希值上打标签并且写上标签的信息
git tag foo HEAD~4 // 在当前提交之前的第4个版本上 打标签foo

推送、拉取

git push origin :refs/tags/远程标签名 // 删除远程仓库的标签
git push origin --tags // 把所有打好的标签推送到远程仓库
git push origin 标签名 // 把指定标签推送到远程仓库
git pull --tags // 把远程仓库的标签也拉取下来

贮藏:

git stash // 把暂存区的内容 暂时放在其他中 使暂存区变空
git stash list // 查看stash了哪些存储
git stash pop // 将stash中的内容恢复到当前目录,将缓存堆栈中的对应stash删除
git stash apply // 将stash中的内容恢复到当前目录,不会将缓存堆栈中的对应stash删除
git stash clear // 删除所有缓存的stash

删除忽悠文件

touch.gitignore ->Github->搜索“.gitignore” ->选择最多星星的->找到Object-C,复制下来

解决冲突:
同一文件修改冲突,需要手动解决冲突后再提交。git status可查看冲突,根据标记可修改冲突部分,修改结束后再重新提交。

git pull         //拉取远程内容
git log --graph        //命令可以看到分支合并图。

示例: *将本地代码推送到github
1、去github上创建自己的Repository,创建页面如下图所示

图片.png

2、将链接复制
图片.png

2、进入终端

cd 项目路径
git init
git add .
 git commit -m "Flutter初体验"
图片.png

将本地的仓库关联到github上

git remote add origin https://github.com/YYDreams/flutter_helloworld

将本地分支推送到远程

git push origin master

再次刷新刚刚创建的github链接即可,完毕

文章接近尾声,额外补充——>Git恢复之前版本的两种方法reset、revert(图文详解)
有必要了解一下,笔者遇到过一次这种情况。事情经过大概:笔者两天遇到了这么个问题,将dev分支合到自己的分支之后,如果有冲突就解决冲突,由于闲打印太多,就将AppDelegate中的打印方法注释了,之后老大就会将你这个分支合进dev里面去,我们不能直接将代码合进dev里面,只能老大去合,合进去老大发现不对,直接还原(Revert)操作,然后我这个分支的代码就在dev上消失了,之后再从最后一次提交的记录,从这个节点拉个分支 然后把主干的代码合到这个分支 然后把这个分支合到主干,你会发现你的代码怎么合都合不进去了。理由:(因为这个分支之前的 已经被合过主干了),人家合你这个分支的东西也合不到东西。此时直接revert就好了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 查看、添加、提交、删除、找回,重置修改文件 git help # 显示command的help git sho...
    Swiftor阅读 2,142评论 0 2
  • Add & Commit git init 初始化一个 Git 仓库(repository),即把当前所在目录变成...
    冬絮阅读 4,944评论 0 9
  • 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统。 二:SVN与Git的最主要的区别? SVN是集...
    Splendid飞羽阅读 331评论 0 0
  • 四、 分支开发工作流 现在你已经学会新建和合并分支,那么你可以或者应该用它来做些什么呢? 在本节,我们会介绍一些常...
    常大鹏阅读 2,150评论 3 24
  • 三大区域: 工作区 → 缓存区 → 本地仓库 一 、 使用 git config 命令进行配置: git ...
    Manchangdx阅读 2,888评论 0 2