Git&Sourcetree从幼儿园到工程师

Souretree操作

1.创建本地仓库

  1. 点击菜单栏Create
  2. 点击浏览选择文件夹位置
  3. 设置本地仓库名字
  4. 点击创建

Git&Sourcetree从幼儿园到工程师


2.创建文件

  1. 在文件夹下创建文件fruit.txt

  2. 观察文件状态里fruit.txt已经在未暂存文件里

  3. 点击右侧+号将文件保存到暂存区(add)

    Git&Sourcetree从幼儿园到工程师

    Git&Sourcetree从幼儿园到工程师

  4. 在备注框内输入备注消息进行提交(commit)

    Git&Sourcetree从幼儿园到工程师

  5. 点开历史记录(history),查看记录

    Git&Sourcetree从幼儿园到工程师


3.修改文件(add .,commit)

  1. fruit.txt文件中添加orange``patato两项记录并保存,回到sourcetree

    Git&Sourcetree从幼儿园到工程师

    此时,菜单栏上已经小标提示有一条需要提交的文件信息,文件状态里显示当前fruit.txt为未暂存文件,在History中也可以看到图谱中出现一新的节点未提交的更改

    Git&Sourcetree从幼儿园到工程师

    Git&Sourcetree从幼儿园到工程师

  2. 点击右侧+号放入暂存区,输入备注信息后提交

    Git&Sourcetree从幼儿园到工程师

    Git&Sourcetree从幼儿园到工程师

  3. 此时

    • 菜单栏的提交信息消失
    • 点击History已经能看到右侧master分支最新节点上已经有了保存的更改记录
    • 下方4号位置显示了当前HEAD指向节点的哈希值、父节点、作者、节点日期、提交者、节点的备注信息和该节点的文件
    • 右侧号位置记录了该节点的文件操作,+号代表添加的信息,-号表示删除的信息

    Git&Sourcetree从幼儿园到工程师

  4. 按照以上步骤依次添加cherrygrape,添加完后结果如下

    Git&Sourcetree从幼儿园到工程师

    Git&Sourcetree从幼儿园到工程师


4.创建分支(branch)

  1. 点击当前HEAD节点,右键点击分支

    Git&Sourcetree从幼儿园到工程师

  2. 给新分支命名dev1,点击创建分支

    Git&Sourcetree从幼儿园到工程师

    如图产生了分支dev1

    Git&Sourcetree从幼儿园到工程师

  3. 在分支上进行修改操作

    • 分支辨别

      Git&Sourcetree从幼儿园到工程师

      左侧分支里可以看当前仓库所有的分支,和当前HEAD指向的分支,同样,右侧图谱内白点所标记的分支即为当前所在分支

    • 在分支上按上文介绍的顺序为fruit.txt文件添加lemon,提交后如下

      Git&Sourcetree从幼儿园到工程师

      可以看到分支dev1分支延伸出了新的节点,做了一次更新


5.合并分支(merge,rebase)

  1. 切换到主干master上,并进行一次不一样的修改,为fruit.txt文件添加mango

    • 分支切换的两种方式

      -鼠标移动到分支名上右键点击检出(checkout)

      Git&Sourcetree从幼儿园到工程师

      -鼠标移动到左侧分支中的分支名上双击鼠标左键,或者移动到右侧图谱树中的分支名上双击鼠标左键
      Git&Sourcetree从幼儿园到工程师

      切换成功:

      Git&Sourcetree从幼儿园到工程师

    • master主干上为fruit.txt文件添加mango

      Git&Sourcetree从幼儿园到工程师

      Git&Sourcetree从幼儿园到工程师

  2. 合并分支dev1到主干master

    • 鼠标移动到分支dev1上鼠标右键点击合并

      Git&Sourcetree从幼儿园到工程师

    • 点击确定

      Git&Sourcetree从幼儿园到工程师

  3. 解决冲突

    由于主分支我们是往fruit.txt文件中添加的mango,而分支dev1中我们是往fruit.txt文件中添加的lemon,因此当合并两个不同的想法时,就会产生冲突。

    Git&Sourcetree从幼儿园到工程师

    Git&Sourcetree从幼儿园到工程师

    如图可以看到,提示产生了冲突,在文件状态中,有个未暂存文件需要我们处理出统一的版本才能提交,下方信息中显示Conficts冲突的文件为fruit.txt,右侧4号位显示出了冲突的内容对比。未暂存的fruit.txt文件中也有冲突对比:

    Git&Sourcetree从幼儿园到工程师

    若想合并就只能定一个确定的版本,使两个思路最终结果相同。

    • 解决方式

      鼠标右键点击未暂存文件fruit.txt,在解决冲突中可以看到许多种解决方式

      Git&Sourcetree从幼儿园到工程师

      • 打开外部合并工具:打开自己在soucetree已经关联的外部代码对比软件,对比两种代码的异同,进行合并
      • 使用 我的版本 解决冲突:使用当前主分支的版本为两者合并后的统一版本
      • 使用 他人的版本 解决冲突:使用需要合并的目标分支的版本作为两者合并后的统一版本
      • 手动解决冲突:直接打开未暂存文件fruit.txt文件进行手动修改,人工确定合并版本,并在提交解决文件后点击**标记为已解决**
    • 本文处理

      本文选择人工手动解决冲突,由于mangolemon都喜欢,所以合并的fruit.txt文件中两种水果都添加

      Git&Sourcetree从幼儿园到工程师

      Git&Sourcetree从幼儿园到工程师

      将确定好的文件加入暂存区,添加备注后即可提交

      Git&Sourcetree从幼儿园到工程师

      由下图可以看到,冲突解决,解决后的新节点处分支dev1和主干masterfruit.txt文件相同,均添加了mangolemon

      Git&Sourcetree从幼儿园到工程师


6.回滚与重置提交(revert,reset)

  1. 添加新内容:在主干master上的fruit.txt文件中依次添加basketballfootballpingpang

    Git&Sourcetree从幼儿园到工程师

    Git&Sourcetree从幼儿园到工程师

  2. 回滚**revert**:删除这一步修改,但会保留这一次修改的版本,是在本版本的基础上进行回退操作

    Git&Sourcetree从幼儿园到工程师

    下图可以看到,回滚前的节点仍然存在,并在该节点上revert,此时fruit.txt文件中已经没有了pingpang,已经回退到上一步

    Git&Sourcetree从幼儿园到工程师

    Git&Sourcetree从幼儿园到工程师

  3. 重置提交**reset**:有三种可选择的重置模式

    鼠标右键点击要重置到的节点,选择**重置当前分支到此次提交**

    Git&Sourcetree从幼儿园到工程师

    此时会跳出选择合并方式的选项

    Git&Sourcetree从幼儿园到工程师

    有三种合并模式:

    • 软合并:使状态退回到上一步提交前的状态

      Git&Sourcetree从幼儿园到工程师

    • 混合合并:使状态退回到上一步未暂存的状态

      Git&Sourcetree从幼儿园到工程师

    • 强行合并:使状态强制回退到上一节点,并将本次修改的所有记录全部清除

      Git&Sourcetree从幼儿园到工程师


7.推送(push)

  1. 点击菜单栏**远端,点击设置添加**远程仓库路径

    Git&Sourcetree从幼儿园到工程师

    Git&Sourcetree从幼儿园到工程师

    Git&Sourcetree从幼儿园到工程师

    Git&Sourcetree从幼儿园到工程师

  2. 到**gitee或者github上创建一个仓库,然后点击克隆或者Code,复制路径到sourcetree**中,并为云仓库起一个远端名称

    gitee:

    Git&Sourcetree从幼儿园到工程师

    github:

    Git&Sourcetree从幼儿园到工程师

    Git&Sourcetree从幼儿园到工程师

  3. 点击菜单栏**推送**

    Git&Sourcetree从幼儿园到工程师

    选择要推送的分支点击**确定**

    Git&Sourcetree从幼儿园到工程师

下图可以看到左侧远程仓库已有记录,图谱里本地分支旁边均有远程分支**origin/masterorigin/dev1**标签,同时,刷新云仓库,可以看到云仓库已有文件,远程和本地并驾齐驱。

Git&Sourcetree从幼儿园到工程师

Git&Sourcetree从幼儿园到工程师


8.拉取(pull)和获取

  • 获取是获取云端的更新,拉取是将云端的更新拉到本地
  1. 在云仓库中的_fruit.txt文件右侧点击**编辑**,向其中添加bike,然后在下方添加修改说明后点击提交

    Git&Sourcetree从幼儿园到工程师

    Git&Sourcetree从幼儿园到工程师

    Git&Sourcetree从幼儿园到工程师

  2. 此时回到sourcetree可以看到菜单栏拉取旁有一个消息,证明云端仓库中存在一个修改

    Git&Sourcetree从幼儿园到工程师

  3. 此时可以先点击获取,来获取一下更新信息,此时可以看到云分支**origin/master**已经显示出了更新信息

    Git&Sourcetree从幼儿园到工程师

  4. 点击拉取,此时本地仓库的主干master也获得了更新,和云端同步

    Git&Sourcetree从幼儿园到工程师


9.其他功能

1.标签

Git&Sourcetree从幼儿园到工程师

选择某一节点,可以点击菜单栏或者鼠标右键选择标签

Git&Sourcetree从幼儿园到工程师

可以添加标签或者删除当前标签

2.贮藏

贮藏可以贮藏未提交到仓库的文件

Git&Sourcetree从幼儿园到工程师

Git&Sourcetree从幼儿园到工程师

添加贮藏说明

Git&Sourcetree从幼儿园到工程师

添加完后,可以在左侧菜单栏贮藏内看到该贮藏文件

Git&Sourcetree从幼儿园到工程师

使用时,鼠标右键点击想要使用的贮藏,点击应用即可,此时贮藏文件便会回到工作区的未暂存文件内

Git&Sourcetree从幼儿园到工程师

Git&Sourcetree从幼儿园到工程师

3.丢弃

丢弃不想要且暂未提交的的修改

可以鼠标右键点击在工作区内的文件或者选择工作区内的文件后点击菜单栏内的丢弃

Git&Sourcetree从幼儿园到工程师

菜单栏内的丢弃可以选择丢弃所有更改

Git&Sourcetree从幼儿园到工程师

4.命令行模式

命令行模式即和**Git Bash**相同,使用命令行进行仓库操作

Git&Sourcetree从幼儿园到工程师

Git&Sourcetree从幼儿园到工程师

上一篇:nessie 类似git 管理数据湖


下一篇:PHP生成短信验证码