Git入门使用(二)

来源:互联网 发布:怎么提高英语听力知乎 编辑:程序博客网 时间:2024/06/06 02:14

1、从Github上拉取代码

z@z-PC MINGW64 ~$ git clone https://github.com/name/XiaomiClock-AnimList.gitCloning into 'XiaomiClock-AnimList'...remote: Counting objects: 78, done.remote: Compressing objects: 100% (61/61), done.remote: Total 78 (delta 4), reused 74 (delta 3), pack-reused 0Unpacking objects: 100% (78/78), done.

这样,拉下来的项目就在”C:\Users\Administrator”中。

2、工作区和版本库

如下图所示,这是我的本地库的目录。其实,整个目录都可以算作是我的工作区。只有.git文件夹,不算工作区,而是Git的版本库。.git里包含许多内容,比如说最重要的就是的暂存区。

本地库的目录

那么,前面常用到git add和git commit两个命令,他们具体执行什么操作呢?首先,git add实际上是把文件修改添加到暂存区;然后git commit实际上就是把暂存区的所有内容提交到当前分支。

3、管理代码修改

我把Github拉下来的代码,修改了一句注释。使用git status命令查看,检查到了文件修改。

z@z-PC MINGW64 ~/XiaomiClock-AnimList (master)$ git statusOn branch masterYour branch is up-to-date with 'origin/master'.Changes not staged for commit:  (use "git add <file>..." to update what will be committed)  (use "git checkout -- <file>..." to discard changes in working directory)        modified:   XiaomiClock$AnimList/src/com/name/utils/StringUtils.javano changes added to commit (use "git add" and/or "git commit -a")

使用git diff对比文件修改。

z@z-PC MINGW64 ~/XiaomiClock-AnimList (master)$ git diff HEAD

4、Git标签

首先切换分支到master分支。我这里一直在master分支上,所以告诉我Already on ‘master’。

z@z-PC MINGW64 ~/XiaomiClock-AnimList (master)$ git checkout masterAlready on 'master'M       XiaomiClock$AnimList/src/com/name/utils/StringUtils.javaYour branch is up-to-date with 'origin/master'.

打标签,如:v1.0。

z@z-PC MINGW64 ~/XiaomiClock-AnimList (master)$ git tag v1.0

查看标签,已经是v1.0。

z@z-PC MINGW64 ~/XiaomiClock-AnimList (master)$ git tagv1.0

如果标签打错了呢,也可以修改。

z@z-PC MINGW64 ~/XiaomiClock-AnimList (master)$ git tag -d v1.0Deleted tag 'v1.0' (was 05b8759)

5、分支

创建分支。

z@z-PC MINGW64 ~/XiaomiClock-AnimList (master)$ git checkout -b devSwitched to a new branch 'dev'

查看分支,分支前带*是当前分支。

z@z-PC MINGW64 ~/XiaomiClock-AnimList (dev)$ git branch* dev  master

提交一些修改,然后切换到主分支。

z@z-PC MINGW64 ~/XiaomiClock-AnimList (dev)$ git add -Az@z-PC MINGW64 ~/XiaomiClock-AnimList (dev)$ git statusOn branch devChanges to be committed:  (use "git reset HEAD <file>..." to unstage)        modified:   XiaomiClock$AnimList/src/com/name/utils/StringUtils.javaz@z-PC MINGW64 ~/XiaomiClock-AnimList (dev)$ git commit[dev 77f80c4] 增加一句注释 1 file changed, 1 insertion(+)z@z-PC MINGW64 ~/XiaomiClock-AnimList (dev)$ git checkout masterSwitched to branch 'master'Your branch is up-to-date with 'origin/master'.

合并分支。

z@z-PC MINGW64 ~/XiaomiClock-AnimList (master)$ git merge devUpdating 05b8759..77f80c4Fast-forward XiaomiClock$AnimList/src/com/name/utils/StringUtils.java | 1 + 1 file changed, 1 insertion(+)

删除dev分支,然后查看,只存在一个master分支了。

z@z-PC MINGW64 ~/XiaomiClock-AnimList (master)$ git branch -d devDeleted branch dev (was 77f80c4).z@z-PC MINGW64 ~/XiaomiClock-AnimList (master)$ git branch* master

如果合并的时候发现了冲突,那么需要手动解决冲突,再提交。

其次,合并分支时,默认使用fast-forward方式。就是当条件允许时,git直接把HEAD指针指向合并分支的头,完成合并。不过这种情况如果删除分支,则会丢失分支信息。因为在这个过程中没有创建commit。所以,使用git merge –no-ff 命令就可以用普通模式合并,Git会在merge时生成新的commit,从而保留分支commit历史。

原创粉丝点击