使用git bash管理你的代码

      之前在一家创业公司工作,由于my head一直用git bash来管理代码,而不喜欢用图形化的工具,受之影响,所以一直以来都习惯了敲命令来解决。这里就由浅入深的讲讲使用命令在玩git。

  1. git clone 毫无疑问,第一步肯定是下载代码(git config自己的email和username就不讲了)

github上面有很多的开源项目,这里找的是java算法实现的一个开源项目。地址:https://github.com/TheAlgorithms/Java

复制git的地址,然后使用git clone命令下载代码

       2.git status 这个也是经常用的命令,用来查看代码的改动

由于我使用idea打开的这个项目,然后自动生成了.idea/ 的一些文件,红色的表示是新增的改动,如果你把这个文件删掉,

再次git bash,就看不到,如下:

然后该如何提交呢,看接下的命令。

3.git add,你要提交,必须将文件添加到暂存区,至于加入跟不加的区别,后面讲git checkout在讲。

现在我开发了一些功能,需要提交,在此之前需要先git add一下,如果有些改动你现在不想一起提交,可以不用 git add

如上图,我需要全部提交,add完之后在看看,变为绿色,表示添加到了暂存区

  4.git commit 这个提交仅仅只是提交到本地,不像svn,提交后直接推到了远程。 

git commit -m "xxx",提交的同时,对你的功能进行一些描述,表示你这个版本做了些啥。

再次git status看一下,没有内容了,表示所有内容都提交了。但是注意,这个时候,你刚刚提交的版本只有你自己的电脑上有,别人无法获取到,你就需要把本地的版本推到远程的服务器上。

5.git push 将当前的改动推到服务器上,但是再次之前,一个好的习惯是敲一下git pull,比如你这个代码是昨天下载的,但是呢你下载之后,你的同事做了些改动并提交到远程了。

然后发现改动了很多,这个时候可能出现冲突,比如你的同事在A.java这个文件中,将a=1改为a=2然后你提交了,但是呢,你刚刚提交的版本中,被你改成a=3,这个时候就出现了冲突-----冲突下面讲,这里先讲git push,我们假设没有冲突。

使用git push推到远程分支,origin表示远程的,branch-cz这个是分支名称,因为我不是在master上开发,所以不是master。到此为止,你成功的将代码推到了远程的分支上。

6.解决冲突,上面提到了在git pull之后可能会出现冲突,那么冲突了会怎么样,看下图

当出现冲突的时候,你的分支名称会多出|MERGING这些字。不过我这个冲突不是由于git pull产生的,而是git merge产生的(即将master分支合并到branch-cz产生的)。

当出现了冲突,请使用git status看一下,如下图:

上面的绿色的表示成功加到暂存区的(仔细观察你会发现,这些改动不是你的改动,而是master的改动)。git 会自动merge,所以上面绿色的文件,表示没有冲突的,你不用管,但是下面红色的就是你需要手动去改的。不如上面说的,你的同事将a赋值为2,而你是3,到底是多少,你们商量下,将这个文件改对了之后。你还需要commit一下,冲突会产生一个版本

如图,跟正常开发一样,先add 再commit。提交完后,表示冲突解决。你可以继续了。

7.git checkout 这是一个非常有用的命令,可以切换分支,可以还原你的本地空间,可以将本地代码切换到之前的某一个版本。

  • 切换分支,如果你有多个分支,如下图

git branch 查看的是你本地的所有分支,如果你要查看远程分支用git branch -a

  • 还原你的本地空间,什么意思,如果你改了一下文件,但是你不想提交,你只希望彻底的还原到之前的版本。

不过这些文件要是不在暂存区的(即没有使用git add命令),如果在暂存区(即为绿色,先使用git reset命令)

如下图:

checkout某个文件后,这个是找不回来的,你的改动将被全部清除,请谨慎操作。这个我经常用,比如调试的时候,写了些测试代码,不想提交。

  • 本地代码切换到之前的某一个版本,这个也非常有用,比如你写了些代码,但是出现了些bug,你又不知道是你这个版本产生的,还是之前就存在的,你可以切换到之前的某一个版本,如图:

先使用git log命令,这个命令可以看看,最近都有谁提交了代码,什么时候提交的,提交了关于什么的改动,所以谁干活了,谁没干活,这里看的很清楚,我很习惯看,因为有些问题可能是别人的代码造成的。

如果你想切回之前的某一个改动,如下:

commit c7c11b00e4b87ec283c89f7516fc5866b6ff08ac (origin/branch-cz)
Merge: 614aa8f4 b5991bc1
Author: yangyaming <[email protected]>
Date:   Mon Jul 23 09:39:45 2018 +0800

    合并主干到分支
c7c11b00e4b87ec283c89f7516fc5866b6ff08ac 就是版本号,你可以赋值前面一下字符,比如:c7c11b00e4

如图,切过去了,代码也回到过去。注意在切之前,请先commit一下 你所有的改动,以免丢失。

要切回到最新的版本使用 git checkout branch-cz就行了,branch-cz为分支名

8.git reset这个用的不多,比如我刚刚使用了git commit提交了一个版本,还没有推到远程服务器,但是你发现这个版本有问题,你想将他删掉,注意这里不是git checkout 某一个版本,checkout仅仅表示暂时将代码切回去,但是你还会切回来的,这里你是想直接删掉。

使用下面命令:git reset --hard HEAD~1 表示删除本地的最新一个版本。就相当于他没存在过,谨慎操作

git reset --hard HEAD~3,表示删掉最新的3个版本,这个数字可以随便填。记住这表示删除你本地的版本,不是远程的。如果你已经push到远程了,正确的做法是手动将之前版本的错误改掉。在提交一个新的版本。

9.分支合并,之前已经用过了git merge master

这个命令表示将本地的master分支合到执行命令的当前本地分支,这里是branch-cz。

所以在执行此命令之前,先使用git pull, 将本地的两个分支更新为最新的版本,在merge,同时merge过程中可能会出现冲突。

合并完成之后,请使用git push origin branch-cz,将合并的内容推到远程服务器。分支合并就完成了。

猜你喜欢

转载自blog.csdn.net/u014801432/article/details/81173285