- 浏览: 249670 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (159)
- java (38)
- extjs (6)
- jquery (3)
- struts2 (0)
- hibernate (3)
- spring (1)
- flex (1)
- css (2)
- js (3)
- html (4)
- android (4)
- linux (9)
- swing (0)
- java E-mail (0)
- 心情故事 (11)
- mysql (4)
- jbpm (7)
- 我的搜索之路 (2)
- MyBatis (3)
- 玩转svn (3)
- 生活无处不美 (0)
- 工具 (4)
- 数据统计与分析 (1)
- quartz (1)
- webservices (2)
- jboss (1)
- php (1)
- hadoop (3)
- maven (5)
- Discuz! (1)
- windows (1)
- 站长之家 (1)
- OSGi (1)
- 软件测试 (2)
- redis (4)
- git (5)
- MongoDB (4)
- lucene (3)
- freemarker (5)
- html5 (4)
- itext (1)
- nginx (1)
最新评论
-
kiansoung:
在Slave机器需不需开SecondaryNameNode程序 ...
快速了解Hadoop架构 -
忧郁的小老虎:
openjdk和jdk的区别与联系 -
TheMatrix:
...
MyBatis入门实例 -
lishl:
非常感谢分享。详细,务实。赞一个。
Lucene学习笔记【2013-04-10更新】 -
派尔人事:
关于JPA一对一关系的删除问题,有请大家帮忙,感激不尽
初始化和建立项目
有两种方式,一种是 init, 另外一种是 clone
init 在上面的例子中已经用过了,也就是进入项目所在的目录,用 $ git init 即可。
Clone 一般是 从远程服务器克隆一个已有的版本仓库 到本机,命令如下:
$ git clone git://github.com/git/hello-world.git Cloning into 'hello-world'... remote: Counting objects: 158, done. remote: Compressing objects: 100% (79/79), done. remote: Total 158 (delta 54), reused 154 (delta 54) Receiving objects: 100% (158/158), 15.63 KiB, done. Resolving deltas: 100% (54/54), done. error: unable to create file brainf*ck.bf (Invalid argument) |
查看远程服务器:
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ git remote origin
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ git remote -v origin git://github.com/git/hello-world.git (fetch) origin git://github.com/git/hello-world.git (push) |
添加与提交
所用到的命令是 add 、 commit 和 status.
1. 创建一个名为 helloworld.naxsu 的文件 .
2. 用 git status 查看当前目录文件的提交状态
brainf*ck.bf 是刚才克隆的时候,没法克隆下来,这里显示是删除了
helloworld.naxsu 是刚创建的文件,提示用 "git add" 添加的缓冲区中或者用 "git commit -a" 添加并提交
3. $ git add helloworld.naxsu 进行添加到缓冲区
添加当前目录下的所有文件
$ git add .
添加以 .c 为后缀的文件
$ git add *.c
添加指定文件
$ git add index.jsp
4. $ git commit helloworld.naxsu -m "init helloworld.naxsu" 提交到本地仓库
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ echo "hello world" >> helloworld.naxsu
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ ls *.naxsu helloworld.naxsu
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ git status # On branch master # Changes not staged for commit: # (use "git add/rm ..." to update what will be committed) # (use "git checkout -- ..." to discard changes in working directory) # # deleted: brainf*ck.bf # # Untracked files: # (use "git add ..." to include in what will be committed) # # helloworld.naxsu no changes added to commit (use "git add" and/or "git commit -a")
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ git add helloworld.naxsu warning: LF will be replaced by CRLF in helloworld.naxsu. The file will have its original line endings in your working directory.
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ git status # On branch master # Changes to be committed: # (use "git reset HEAD ..." to unstage) # # new file: helloworld.naxsu # # Changes not staged for commit: # (use "git add/rm ..." to update what will be committed) # (use "git checkout -- ..." to discard changes in working directory) # # deleted: brainf*ck.bf #
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ git commit helloworld.naxsu -m "init helloworld.naxsu" warning: LF will be replaced by CRLF in helloworld.naxsu. The file will have its original line endings in your working directory. [master 8c17395] init helloworld.naxsu warning: LF will be replaced by CRLF in helloworld.naxsu. The file will have its original line endings in your working directory. 1 file changed, 1 insertion(+) create mode 100644 helloworld.naxsu
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ git status # On branch master # Your branch is ahead of 'origin/master' by 1 commit. # # Changes not staged for commit: # (use "git add/rm ..." to update what will be committed) # (use "git checkout -- ..." to discard changes in working directory) # # deleted: brainf*ck.bf # no changes added to commit (use "git add" and/or "git commit -a")
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ |
忽略某些文件
Java 文件编译成 .class 文件,他是自动生成的,我们没必要用版本控制它,所以提交的时候可以用忽略。
创建文件 class1.class 、 java1.java ,创建 .gitignore ,并把 class1.class 添加到 .gitignore 中 , 同时用 vim 编辑 .gitignore ,把他自己也添加到里面,用 $ cat .gitignore 命令可以查看 .gitignore 的内容。接下来用 add,commit, 你就会发现 class1.class 是不会提交到仓库中的。
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ echo "class1" > class1.class
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ echo "java1" > java1.java
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ echo "class1.class" >.gitignore
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ vim .gitignore
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ cat .gitignore class1.class .gitignore
$ git status $ git add . $ git status $ git commit -a -m "ignore test" …… |
比较文件的不同
$ git diff( 默认是 $ git diff --staged)
$ git diff --staged: 比较 workspace VS staged
$ git diff --cached: 比较 staged VS local repo
演示思路:修改 helloworld.naxsu ,用 git diff 查看不同,把他 add 之后再查看他们的不同,然后 commit 后,又一次查看他们的不同。
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ vim helloworld.naxsu
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ git diff diff --git a/helloworld.naxsu b/helloworld.naxsu index 3b18e51..6d05489 100644 --- a/helloworld.naxsu +++ b/helloworld.naxsu @@ -1 +1,2 @@ hello world +add something warning: LF will be replaced by CRLF in helloworld.naxsu. The file will have its original line endings in your working directory.
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ git add helloworld.naxsu warning: LF will be replaced by CRLF in helloworld.naxsu. The file will have its original line endings in your working directory.
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ git diff --cached diff --git a/helloworld.naxsu b/helloworld.naxsu index 3b18e51..6d05489 100644 --- a/helloworld.naxsu +++ b/helloworld.naxsu @@ -1 +1,2 @@ hello world +add something warning: LF will be replaced by CRLF in helloworld.naxsu. The file will have its original line endings in your working directory.
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ git commit helloworld.naxsu -m "modified helloworld.naxsu" warning: LF will be replaced by CRLF in helloworld.naxsu. The file will have its original line endings in your working directory. [master warning: LF will be replaced by CRLF in helloworld.naxsu. The file will have its original line endings in your working directory. 6e7814d] modified helloworld.naxsu warning: LF will be replaced by CRLF in helloworld.naxsu. The file will have its original line endings in your working directory. 1 file changed, 1 insertion(+)
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ git diff
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ git diff --cached |
文件的移动和删除
移动 = 删除 + 添加
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ ls *naxsu helloworld.naxsu test.naxsu
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ git rm test.naxsu rm 'test.naxsu'
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ git status # On branch master # Your branch is ahead of 'origin/master' by 6 commits. # # Changes to be committed: # (use "git reset HEAD ..." to unstage) # # deleted: test.naxsu #
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ git reset head test.naxsu Unstaged changes after reset: D test.naxsu
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ git status # On branch master # Your branch is ahead of 'origin/master' by 6 commits. # # Changes not staged for commit: # (use "git add/rm ..." to update what will be committed) # (use "git checkout -- ..." to discard changes in working directory) # # deleted: test.naxsu # no changes added to commit (use "git add" and/or "git commit -a") |
如果没提交还可以 checkout 进行恢复
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ git checkout -- test.naxsu
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ ls *.naxsu helloworld.naxsu test.naxsu |
如果 commit 了之后,就不能 checkout 了
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ git rm test.naxsu rm 'test.naxsu'
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ git commit -a -m "delete test.naxsu" [master 46d28af] delete test.naxsu 1 file changed, 1 deletion(-) delete mode 100644 test.naxsu
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ git checkout -- test.naxsu error: pathspec 'test.naxsu' did not match any file(s) known to git. |
移动用 mv 命令,具体参考 $ git mv --help
查看操作记录
git log 显示所有的提交( commit )记录
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ git log commit 46d28afa27a90678c7391fc0bc5549db345f3c7d Author: yineng huang Date: Fri Aug 17 23:28:34 2012 +0800
delete test.naxsu …… |
git whatchanged
huangyineng@HUANGYINENG-PC ~/hello-world (master) $ git whatchanged commit 46d28afa27a90678c7391fc0bc5549db345f3c7d Author: yineng huang Date: Fri Aug 17 23:28:34 2012 +0800
delete test.naxsu
:100644 000000 77608b6... 0000000... D test.naxsu …… |
git-whatchanged 显示的信息比 git-log 更详细一些,可以显示具体的文件名。
本文链接: http://www.656463.com/portal.php?mod=view&aid=7 0 ,转载请注明出处
下一节: 共享及更新项目
相关推荐
前者可能深入讲解Git的内部原理和高级特性,后者则提供了实战性的题目,帮助巩固和检验Git命令的掌握程度。 总之,Git是Java开发工程师必备的工具之一,理解和熟练使用Git不仅能够提升个人工作效率,也是衡量开发者...
《2019 Git实战教程:以工作常用命令为核心快速掌握Git》是一门精心设计的课程,旨在帮助学习者在不被复杂术语困扰的情况下,快速掌握Git这一强大的版本控制系统。Git是当前软件开发中不可或缺的工具,尤其在云计算/...
《Git权威指南》这本书详细讲解了这些概念和命令,不仅有理论知识,还有丰富的实战案例。通过阅读这本书,读者可以学会如何高效地使用Git进行版本控制,理解其工作原理,并掌握协作开发的最佳实践。 除了基础操作,...
Git实战体验:深入理解与应用 Git是一款分布式版本控制系统,由Linus Torvalds为Linux内核开发,自2005年发布以来,已成为软件开发领域中最常用的版本管理工具。Git的强大之处在于其分布式特性,它允许开发者在本地...
2. **基本命令**:详细介绍如`git clone`用于克隆仓库、`git add`用于添加文件到暂存区、`git commit`用于提交更改等常用命令。 3. **分支管理**:解释如何创建、合并和删除分支,以及如何解决冲突。 4. **远程仓库...
接下来,我们深入到Git的常用命令。`git init`用于初始化一个新的Git仓库;`git clone`用来复制远程仓库到本地;`git add`将更改添加到暂存区,准备进行提交;`git commit`将暂存区的更改保存为一个新的提交;`git ...
03 Form组件之常用标签示例 04 Form组件之动态绑定数据 第60章 Django序列化共6课 第61章 01 上节内容回顾 02 上传文件 03 制作上传按钮 04 Form组件上传文件 05 上传相关内容梳理 06 Model操作知识提问 07 ...
- **命令及特殊字符知识考试题讲解**:通过练习加深对Linux常用命令及特殊字符的理解。 - **Linux基础优化**:掌握基本的系统优化方法。 - **Linux目录结构知识精讲**:理解Linux文件系统的组织结构。 - **文件属性...
学习基本的Git命令和工作流程对团队协作至关重要。 通过这些模块的学习和实战项目实践,开发者能够深入理解Java Web开发的全貌,掌握核心技术和最佳实践,从而提高自身在该领域的专业素养。常建功老师的教程以其...
理解Git的基本命令,如commit、push、pull、merge等,能够帮助团队协作,保持代码的同步和历史记录。 最后,项目部署和运维是项目上线前的关键步骤。了解如何配置服务器环境,使用虚拟环境管理依赖,以及使用Wsgi...
Linux笔记可能涉及常用命令,文件权限,服务配置等。Node.js部分可能讲解了事件驱动编程,Express框架,以及与数据库的交互。JavaScript和Vue.js的学习笔记可能包含函数、对象、组件、路由等内容,而MySQL部分可能...
《Java Web开发实战经典》这本书很可能包含了以上所有或大部分知识点的详细讲解,通过阅读并实践书中的例子,初学者能够全面了解并掌握Java Web开发的核心技能。无论你是希望成为一名全栈工程师,还是专注于前端或...
- 调试的基本概念和常用命令。 - 断点设置、变量查看等功能详解。 - 日志输出(LogCat)与错误日志分析技巧。 - **第十三章:Gradle构建系统** - Gradle的工作原理及其优势。 - 构建脚本(build.gradle文件)...
3. **常用命令及应用**:教程将涵盖一系列常用命令,如`ANALYSIS`(进行各种统计分析)、`IF`(条件语句)、`DO REPEAT`(循环结构)等,这些命令使得复杂的数据处理变得简单。 4. **宏和函数**:SPSS支持宏和函数...
- **常用命令**:比较不同VCS的命令语法。 **15. 利用vmmaretools来实现共享的具体操作** - **安装步骤**:安装vmware tools。 - **配置方法**:设置共享文件夹。 **16. 献给初学者的10个Git技巧** - **基本操作**...
- Linux命令行基础及常用命令介绍。 2. **C语言编程** - C语言基础知识回顾。 - 在Linux环境下编写、编译和调试C程序。 - 文件操作、进程管理等高级C编程技术。 - 使用gdb等工具进行程序调试的方法。 3. **...
通过一系列理论讲解和实战练习,使学员能够有效地识别和解决在实际工作中遇到的各种性能瓶颈问题。 #### 二、授课环境配置 - **操作系统**: CentOS 6.x (64位) - **数据库版本**: PostgreSQL 9.3.4 - **辅助工具**:...
- `git cl`: 用于代码审查和提交。 - `gn` 和 `ninja`: 用于构建项目。 **1.2 Gyp工具** - **简介**:Gyp是一个用于生成构建文件的工具,可以将项目描述文件转换为不同构建系统的格式。 - **功能**:支持多种...