Git和sourceTree操作相关

整理的文档,侵删

流程:暂存,提交,推送到自己的分支下,再请求merge requests

 

Git和sourceTree操作相关

 

 

sourceTree基本操作:

1.提交 Commit将工作空间修改提交到本地库

2.推送 Push将本地库修改提交到远程库

3.拉取 Pull 从远程拉取最新版本到本地 自动合并 merge

4.抓取 fetch 从远程获取最新版本到本地 不会自动合并 merge

5.虚线表示拉取到本地仓库,实线表示拉取到本地仓库,并合并到工作空间

6.版本退回 reset

7.合并 merge 将多个同名文件合并为一个文件

8.检出 checkout 如果只有当前分支则会新建一个分支;如果是两个分支间checkout则会切换分支

9.git diff 查看暂存区与工作区的区别

   git diff HEAD 对比工作区与当前分支最新commit

10.暂存本地 git stash 把所有未提交的修改(包括暂存的和非暂存的)都保存起来,(stash是本地的,不会通过git push命令上传到git server上)用于后续恢复当前工作目录

   问题:git pull和本地代码有冲突

   解决流程:git status (看自己修改的文件)

                    git stash (缓存代码)

                    git pull (拉取远端)

                    git stash pop [email protected]{0} (把放在缓存中的代码合并回来)

                    git status (检查是否有冲突文件)

 

git区域概念:

1.工作区:克隆项目到本地后,项目所在的文件夹目录

2.暂存区:用于存储工作区中添加上来的变更(新增、修改、删除)的文件的地方。操作时,使用git add .会将本地所有新增、变更、删除过的文件的情况存入暂存区中

3.本地仓库:用于存储本地工作区和暂存区提交上来的变更(新增、修改、删除)过的文件的地方。操作时,使用git commit –m “本次操作描述” 可以将添加到暂存区的修改的文件提交到本地仓库中

4.远程仓库:简单来说,就是我们工作过程中,当某一个人的开发工作完毕时,需要将自己开发的功能合并到主项目中去,但因为功能是多人开发,如果不能妥善保管好主项目中存储的代码及文件的话,将会存在丢失等情况出现,所以不能将主项目放到某一个人的本地电脑上,这时就需要有一个地方存储主项目,这个地方就是我们搭建在服务器上的git远程仓库,也就是在功能开始开发前,每个人要下载项目到本地的地方。操作时,使用git push origin 分支名称,将本次仓库存储的当前分支的修改推送至远程仓库中的对应分支中

Git和sourceTree操作相关

一般流程:写代码,将代码使用git add .存入缓存区,或者直接使用git commit –am “本次提交描述” / git commit –a –m “本次提交描述”将代码提交至本地仓库区,再次拉取制定分支的最新代码,确保本次的代码时刻都是最新的,再进行接下来的推送代码至远程仓库操作

 

拉取相关:

1.git pull origin分支名称(拉取(下载)指定分支代码合并到当前分支,相当于指定分支的代码与当前分支的代码合并到了一起,即master主干分支的代码拉取与当前分支的代码进行合并)

2.拉取问题:想要拉取某一个分支的最新代码到本地,并合并到当前分支时发生冲突,提示自动合并失败

原因:2个人同时编辑的文件有重叠区域部分,本地修改变更的内容与远程仓库修改变更的内容有重合部分(本地commit后会判断与远程有没有同文件冲突)

在合并时git会尝试自动合并,如果合并不成功则出现冲突。

举个栗子,假如本地仓库有1,2两个文件,远程仓库有1,2,3三个文件,拉取时git将自动把3合并至本地仓库。如果远程仓库和本地同时修改了文件1的同一处,则会产生冲突,需要手动处理。

信息显示:<<<<<<<<<<

                 ==========

                 >>>>>>>>>>

注意:每次使用该命令前,需要保证本地工作区是没有任何修改代码的,也就是说需要将本地工作区编辑过的文件添加到暂存区(git add .),或提交到本地仓库中(git commit),才可以使用该命令拉取指定分支的代码合并到当前分支中。

每次在操作完git commit命令后,必须拉取一下master分支代码,保持本地正在开发功能逻辑的代码分支代码是最新的,避免后续在提交时冲突过多或覆盖掉其他人的代码的问题出现。

 

分支相关:

1.每个人在开发之前,都会将项目从远程仓库下载到本地,然后才能在本地进行对应功能的代码编写。此时,每个人就可以看作是一个分支

2.在本地仓库中,可以创建多个分支,在多个分支中进行不同的功能开发,来满足业务需求。

3.在开发完功能后,为了保证本地仓库推送到远程仓库的功能代码,不会出现将其他人开发的功能代码覆盖的情况,需要在每次使用git push origin 分支名称 命令将当前分支中,在本地仓库改动推送到远程仓库之前,需要先将远程仓库的主干分支master的最新代码拉取到本地当前分支的本地仓库中,再进行推送操作,从而保证最终推送本地仓库代码到远程仓库时,推送的代码是完整的(即包含其他人提交的功能的)。

注意:开发过程中,必须创建自己分支进行功能开发,不允许直接在master分支中进行功能开发、修改、删除等操作。以免误操作或操作出错等情况出现,污染了远程仓库的主干分支master,导致功能代码无法继续使用,也会影响到其他人的使用。

4.列出本地所有分支:git branch,当前所在的分支会被星号标示出来

   创建一个新分支:git branch 分支名称

   删除指定本地分支:git branch -d 删除的分支名称

   切换到一个指定分支:git checkout 分支名称

   创建并切换到新的分支中:git checkout –b分支名称(相当于git branch 新分支名称 和 git checkout 新分支名称两句命令合并)

5.删除异常:5.1要删除的分支在本地仓库中含有未合并的代码

                    解决:1.切换到要删除的分支中,将代码进行合并到远程分支;或切换到本地其他分支中,使用git merge命令将要删除的分支的代码合并到已切换的分支中,再进行删除操作,即可完成分支的删除;2.使用git branch -D 分支名称 命令强制删除指定分支

                    5.2要删除的分支为当前正在使用的分支

                    解决:切换到其他分支

注意:此处删除的是本地的指定分支名称,不会删除远程仓库的分支

例如上述操作删除了本地仓库的apiThirdTest分支,我们登录到远程仓库中查看远程仓库的分支,发现apiThirdTest还在,所以 git branch -d 分支 仅仅只能删除本地仓库中,非当前checkout的分支外的其他分支

6.删除远程分支:【!!!】在工作中不要使用命令进行操作,且删除分支时需要谨慎进行,因为一但删除远程分支,【便无法进行回滚】。

在我们删除本地分支后,如果想要通过本地命令行一同将远程分支删除掉的话,可以使用如下命令:

命令:git push origin :分支名称

注意,分支名称前面有一个冒号。

我们所执行的命令是删除远程仓库中的指定分支名称的分支,所以不会删除本地仓库中对应名称的分支。

这种情况下,不建议删除本地中现存的对应名称的分支。因为可以视为一种补救措施

 

 

 

本地仓库不直接用master分支,而是创建一个新的分支进行开发,用两个分支的重要性:

比如,我们只有一个master分支,现在已经发布了一个新版本1.0。然后新功能1.1版本也在开发中,但是1.0版本发现一个BUG,这时候我们要如何修复BUG呢?肯定不能舍弃现在正在开发的功能,也不能将现在的代码提交,从而影响已经发布出去的版本,这时候Dev分支就起作用了。

我们的master分支,应该作为主分支,这是一个稳定分支,这个分支应该是作为稳定版本发布的分支。我们的所有的开发工作只在Dev分支上操作,当Dev分支开发完成一个新功能时,再合并到master分支,由master分支发布。master分支有BUG时,从master新建一个临时temp分支,在temp修复BUG,然后合并到Master分支,这样master就可以继续发布。修复的BUG再合并到Dev分支,这样也保证Dev分支上的代码是稳定的。最后再删除temp分支。

如果服务端有Dev分支,那么我们只需要检出Dev分支即可。这里很明显没有,所有我们要新建一个分支,然后把这个Dev分支也推送到服务端,这样别人也能使用这个Dev分支。

【重要!!】在切换分支前,要确保修改已经提交