Git管理

在bitbucket用git用法

 

核心流程:从远端中心repo那里git clone到本地,再在本地开发(add,commit),通常会利用branch管理,如果觉得code没问题了,就push到远端中心repo上,这里中心的repo就是bitbucket上的repo。显然,可以看到从commit à push中 有一个review的过程。这一步也是很重要的。

 

  1. git clone http的path     把repo下载到本地
  2. git status           查看哪些文件修改了
  3. git commit

 

  1. git branch分支管理 (重点!)

在git版本库中创建分支的成本几乎为0,所以,不必吝啬多创建几个分支。当第一次执行git init时,系统就会创建一个名为“master”的分支。在bitbucket中已经创建了master分支,我们只需要clone 下来即可。而其他分支则通过手工创建。下面举例列举一些常见的分支策略,这些策略相信会对你的日常开发带来很多便利。

 

1.创建一个属于自己的个人工作分支,以避免对主分支master造成太多的干扰,也方便余他人交流协作。

2.当进行高风险的工作时,创建一个试验性的分支,扔掉一个烂摊子总比收拾一个烂摊子好得多

3.合并别人的工作的时候,最好是创建一个临时的分支来合并,合并完成后再“fatch”到自己的分支。

 

 

查看分支---  git branch

调用git branch可以查看程序中已经存在的分支和当前分支

 

创建分支--- git branch 分支名

要创建一个分支,可以使用如下方法:

  1. git branch 分支名称
  2. git checkout -b 分支名

 

说明:使用第一种方法,虽然创建了分支,但是不会将当前工作分支切换到新创建的分支,因此,还需要命令 git checkout 分支名 来切换,二第二种方法不但创建了分支,还将当前工作分支切换到了该分支上。

 

另外,需要注意,分支名称由可能出现重名的情况的,比如说,我在master分支下创建了a和b两个分支,然后切换到b分支,在b分支下又创建了a和c分支。这种操作是可以进行的。此时的a分支和master下的a分支实际上是两个不同的分支。因此,在实际使用时,不建议这样操作。

 

删除分支   -- git branch -d/-D 分支名

-d 是删除  -D是强制删除,但是需要小心,删除后,发生在该分支的所有变化都无法恢复。

切换分支   --- git checkout 分支名

如果分子已经存在,可以通过 git checkout 分支名 来切换工作分支到该分支名

 

合并分支  --- git merge

 Git merge 的用法为: git -merge “some demo ”合并的目标分支  合并的来源分支。 如:

 

 

分支的管理:

 

到目前为止,你已经学会了如何创建,合并和删除分支。除此之外,我们还需要学习如何管理分支,在日后的常规工作中会经常用到下面介绍的管理命令。

 

git branch 命令不仅仅能创建和删除分支,如果不加任何参数,它会给出当前所有分支的清单:

 

$ git branch

  iss53

* master

  Testing

 

注意看master分支前面的 *字符:它表示当前所在的分支。也就是说,master分支将随着开发进度前移,若要查看各个分支最后一个提交对象的信息,运行 git branch -v

$ git branch -v

  iss53   93b412c fix javascript issue

* master  7a98805 Merge branch 'iss53'

  testing 782fd34 add scott to the author list in the readmes

 

要从该清单中筛选出你已经(或尚未)与当前分支合并的分支,可以用 –merged和 –no-merged选项。比如用 git bran –mergrd 查看哪些分支已被并入当前分支

 

 

与远程server操作!!! Clone pull push

 

2.7   远程获取一个git库 git-clone

如果你不是一个代码模块的发起者,也不会使用到git-init命名,而是更多的是使用git -clone。通过这个命令,你可以从远端完整地获取一个git库,并可以通过一些命令和远端的git交互。

 

基于git的代码管理的组织结构,往往形成一个树状结构,开发者一般从某个代码模块的管理者的git库通过git-clone取得开发环境,在本地迭代开发后,再提交给该模块的管理者,该模块的管理者检查这些提交并将代码合并到自己的库中,并向更高一级的代码管理者提交自己的模块代码。

 

2.8 从远程获取一个git分支 – git-pull

与git-clone不同, git-pull可以从任意一个git库获取某个分支的内容。用法如下:

git-pull username@ipaddr: 远端repository名 远端分支名:本地分支名。这条命令将从远端git库的远端分支名获取到本地git库的一个本地分支中。其中,如果不写本地分支名,则默认pull到本地当前分支。

需要注意的是,git-pull也可以用来合并分支。 和git-merge的作用相同。 因此,如果你的本地分支已经有内容,则git-pull会合并这些文件,如果有冲突会报警。

2.9 将本地分支内容提交到远端分支 – git-push

git-push和git-pull正好想反,是将本地某个分支的内容提交到远端某个分支上。用法:

git-push username@ipaddr: 远端repository名 本地分支名:远端分支名。这条命令将本地git库的一个本地分支push到远端git库的远端分支名中。

需要格外注意的是,git-push好像不会自动合并文件。这点我的试验表明是这样,但我不能确认是否是我用错了。因此,如果git-push时,发生了冲突,就会被后push的文件内容强行覆盖,而且没有什么提示。 这在合作开发时是很危险的事情。

2.10 库的逆转与恢复 – git-reset

库的逆转与恢复除了用来进行一些废弃的研发代码的重置外,还有一个重要的作用。比如我们从远程clone了一个代码库,在本地开发后,准备提交回远程。但是本地代码库在开发时,有功能性的commit,也有出于备份目的的commit等等。总之,commit的日志中有大量无用log,我们并不想把这些 log在提交回远程时也提交到库中。 因此,就要用到git-reset。

Git-reset的概念比较复杂。它的命令形式:git-reset [--mixed | --soft | --hard] [<commit-ish>]

命令的选项:

--mixed

这个是默认的选项。 如git-reset [--mixed] dev1^(dev1^的定义可以参见2.6.5)。它的作用仅是重置分支状态到dev1^, 但是却不改变任何工作文件的内容。即,从dev1^到dev1的所有文件变化都保留了,但是dev1^到dev1之间的所有commit日志都被清除了,而且,发生变化的文件内容也没有通过git-add标识,如果您要重新commit,还需要对变化的文件做一次git-add。这样,commit后,就得到了一份非常干净的提交记录。

--soft

相当于做了git-reset –mixed,后,又对变化的文件做了git-add。如果用了该选项, 就可以直接commit了。

--hard

这个命令就会导致所有信息的回退, 包括文件内容。 一般只有在重置废弃代码时,才用它。 执行后,文件内容也无法恢复回来了。

posted @ 2018-08-09 20:22  尹志诚  阅读(143)  评论(1编辑  收藏  举报