一、名词解释

  • 克隆(clone):从远程仓库URL加载创建一个与远程仓库一样的本地仓库
  • 提交(commit):将暂存文件上传到本地仓库(我们在Finder中对本地仓库做修改后一般都得先提交一次,再推送)
  • 检出(checkout):切换不同分支
  • 添加(add):添加文件到缓存区
  • 移除(remove):移除文件至缓存区
  • 暂存(git stash):保存工作现场
  • 重置(reset):回到最近添加(add)/提交(commit)状态
  • 合并(merge):将多个同名文件合并为一个文件,该文件包含多个同名文件的所有内容,相同内容抵消
  • 抓取/获取(fetch):从远程仓库获取信息并同步至本地仓库,并不改变本地仓库的状态
  • 拉取(pull):从远程仓库获取信息并同步至本地仓库,并且自动执行合并(merge)操作,即 pull=fetch+merge
  • 推送(push):将本地仓库同步至远程仓库,一般推送(push)前先拉取(pull)一次,确保一致
  • 分支(branch):创建/修改/删除分枝
  • 标签(tag):给项目增添标签
  • 工作流(Git Flow):团队工作时,每个人创建属于自己的分枝(branch),确定无误后提交到master分枝
    终端(terminal):可以输入git命令行

某大佬写的git一些比较实用的命令(并非基础命令)

二、分支类型

  • master,最终发布版本,整个项目中有且只有一个
  • develop,项目的开发分支,原则上项目中有且只有一个
  • feature,功能分支,用于开发一个新的功能
  • release,预发布版本,介于develop和master之间的一个版本,主要用于测试
  • hotfix,修复补丁,用于修复master上的bug,直接作用于master

对分支类型的改变解说详细,包括多人合作冲突的问题

git提交规范

commit规范

三、SourceTree基本术语讲解

在对git一知半解的时候,SourceTree里面又增添的新的术语,或者使用中文跟git命令英文还对不上号,下面这篇文章解决了很多疑问,可以多看看
关于git(SourceTree)的几个疑问及解答

四、其他操作

1、合并多次commit

git rebase 把多次commit合并成一个(git原始命令)

2、本地没有新建自己的分支,在master上直接添加了代码,但未提交

从远程仓库拉下来的时候,没有新建自己的分支,直接在master上修改了。但当要推送的时候不能直接这么推吧。
先将修改的代码提交到本地仓库,但不推送。新建分支(这时候本地仓库提交但未推送的修改就在这个分支里被保存),将本地master分支(理解为不纯净的分支)强制删除,再将远程master分支拉取到本地。最后再推送。
上述过程可能有细节上的偏差(比如漏了某些检出操作?),也可能有自己理解上的偏差,但线作为存档记录一下。

3、远程仓库的另一条分支修改了,本地的一条分支想获取这些修改

假设本地分支A是自己的写的代码,A是从develop分支延申的,远程分支B也是从develop分支延伸的。现在B作了些修改,要在本地A分支上获取/合并这些修改:如果A分支有修改的话,先提交这些修改到本地仓库,并不用上传到远程仓库。然后点击合并按钮,会显示要将哪个分支合并到当前(A)分支,点击B分支并点确定。这时候最新的那个点,如果有文件冲突的话会显示冲突文件。回到VS Code,将冲突文件关闭再打开,就会有蓝色、绿色代码显示冲突部分,解决好冲突就行了(之后操作就没有个人亲自体验过了)。

4、远程仓库的A分支被修改了,本地A分支也被修改了,此时提交本地分支A

这时候A分支的修改只能被提交到本地仓库,如果要提交到远程仓库,会显示出错。这时候需要从远程仓库拉取,使一致才行。拉取一下,会出现冲突文件的提示,对冲突文件进行修改。
本案例并未亲身体验,仅参考:SourceTree使用教程(四)—冲突解决

5、从远程分支checkout时出现的问题

如果远程分支已经是feature/A这个样子了,那我只能在这个分支上重新checkout一个feature/A_myVersion,而不能feature/A/myVersion,这样做之后推送会出现推不上去的情况。

6、有代码提交了,但还未推送。这时候要撤回这个提交的动作

选中你想回滚到的提交记录,右击->将(所在分支)重置到这次提交->强行合并->确定。这时候会出现提示该操作会丢失所有工作副本,注意如果确定的话,要撤回的那些改动过的代码都会不存在了,至于恢复到什么样子我还不确定,因为有一些还未提交的好像仍有?所以最好在做这部工作前,先对代码进行复制备份。

sourcetree通过账号密码从gitlabcheck项目 sourcetree git stash_推送

五、仓库 克隆Clone/添加Add 操作等

在+号new tab页,可以进行的操作有Local,Remote,Clone,Add,Create

1、添加Add

当本地有本地仓库,即文件夹中有.git文件,但是在Source Tree中没有将本地仓库和远程仓库连接起来。发生这种情况是本来本地在老账户使用source tree已经完成本地与远程仓库的连接,但是创建了新用户后,本地文件仍在(一模一样),但是本地与远程仓库的连接断了。

点击Add按钮,“工作副本路径”选择有.git的文件夹,它会显示“这是一个git仓库”,然后点击“添加”按钮即可建立连接

六、ERROR错误汇总

! [new branch] dev -> origin/dev (unable to update local ref)

error: some local refs could not be updated; try running ‘git remote prune origin’ to remove any old, conflicting branches

猜测原因:本地库原本是克隆的远程库,但之后远程库上有些分支被删除了,但本地库并没有被删除,就出现了这个错误。就按照它的提示运行一下那个语句就可以解决问题。
聊下 git remote prune origin,有使用git命令查看本地分支和远程分支的匹配、更新update、tracking情况