[原创]git使用入门
创建git项目并初始化
建立一个新文件夹,然后将该文件夹定义为git项目
Lilis-MacBook-Pro:GitDir lili$ mkdir testgit
Lilis-MacBook-Pro:GitDir lili$ cd testgit
Lilis-MacBook-Pro:testgit lili$ git init
Initialized empty Git repository in /Users/lili/快盘/GitDir/testgit/.git/
为新项目添加文件和内容
Lilis-MacBook-Pro:testgit lili$ echo "test git" > README
Lilis-MacBook-Pro:testgit lili$ LS
README
Lilis-MacBook-Pro:testgit lili$ cat README
test git
新的内容都是存储在暂存区中,只有提交了才会存储于Git目录中。
提交修改和新建内容
Lilis-MacBook-Pro:testgit lili$ git add README
Lilis-MacBook-Pro:testgit lili$ git commit -m "test add"
[master (root-commit) d12a913] test add
1 file changed, 1 insertion(+)
create mode 100644 README
Lilis-MacBook-Pro:testgit lili$ git push
fatal: No configured push destination.
Either specify the URL from the command-line or configure a remote repository using
git remote add <name> <url>
and then push using the remote name
git push <name>
建立项目分支和切换项目分支
查看当前作业分支用git branch命令,打*号的那个就是当前操作分支
新建分支用如下命令:
Lilis-MacBook-Pro:testgit lili$ git branch experimental
Lilis-MacBook-Pro:testgit lili$ git branch
experimental
* master
新建后查看发现多了experimental分支,并且当前分支是master分支,这个是建立git项目默认的分支
切换分支按照如下:
Lilis-MacBook-Pro:testgit lili$ git checkout experimental
Switched to branch 'experimental'
Lilis-MacBook-Pro:testgit lili$ git branch
* experimental
master
分支内容merge
在不同分支下共同操作同一个文件(README),初始化时内容是test git,那现在切换到experimental分支下写入一些内容:
Lilis-MacBook-Pro:testgit lili$ git checkout experimental
Switched to branch 'experimental'
Lilis-MacBook-Pro:testgit lili$ vim README
test git
modified in experimental branch
然后git commit -a并输入comment内容, commit -a是一次性添加并commit已存在的文件的修改,其实是add和commit的合并命令
切换到master分支,也README中输入一行内容并git commit -a
Lilis-MacBook-Pro:testgit lili$ git checkout master
Switched to branch 'master'
Lilis-MacBook-Pro:testgit lili$ vim README
test git
add one line in branch master
这时,两个分支就有了各自不同的修改(diverged);我们可以通过下面的命令来合并“experimental”和“master”两个分支:
通过如下命令来合并experimental分支到master分支:
Lilis-MacBook-Pro:testgit lili$ git merge experimental
Auto-merging README
CONFLICT (content): Merge conflict in README
Automatic merge failed; fix conflicts and then commit the result.
Lilis-MacBook-Pro:testgit lili$ cat README
test git
<<<<<<< HEAD
add one line in branch master
=======
modified in experimental branch
>>>>>>> experimental
如果两个分支没有冲突,则合并完成;有冲突可以通过git diff来查看冲突
Lilis-MacBook-Pro:testgit lili$ git diff
diff --cc README
index 7ef0026,1633bc2..
--- a/README
+++ b/README
@@@ -, -, +, @@@
test git
++<<<<<<< HEAD
+add one line in branch master
++=======
+ modified in experimental branch
++>>>>>>> experimental
删除项目分支
git branch -d experimental
git branch -d只能删除那些已经被当前分支的合并的分支. 如果你要强制删除某个分支的话就用git branch –D
git diff 和git diff --cache的区别
Lilis-MacBook-Pro:testgit lili$ vim README
Lilis-MacBook-Pro:testgit lili$ git diff
diff --git a/README b/README
index 8ce43a3..bb9ae0b
--- a/README
+++ b/README
@@ - +, @@
test git
+test git diff and git diff --cached
Lilis-MacBook-Pro:testgit lili$ git add README
Lilis-MacBook-Pro:testgit lili$ git diff
Lilis-MacBook-Pro:testgit lili$ git diff --c
--cached --check --color --color-words --cumulative
Lilis-MacBook-Pro:testgit lili$ git diff --cached
diff --git a/README b/README
index 8ce43a3..bb9ae0b
--- a/README
+++ b/README
@@ - +, @@
test git
+test git diff and git diff --cached
Lilis-MacBook-Pro:testgit lili$ git commit -m "test git diff"
[master a2c52a3] test git diff
file changed, insertion(+)
Lilis-MacBook-Pro:testgit lili$ git diff
Lilis-MacBook-Pro:testgit lili$ git diff --cached
Lilis-MacBook-Pro:testgit lili$
git diff 比较的是工作目录树与暂存区之间的区别。
git diff --cached 比较的是暂存区和版本库最后一个版本的区别。
git diff HEAD 比较的是工作目录树(包括暂存的和未暂存的修改)与版本库最后一个版本的差别。
忽略某些文件
可以在你的顶层工作目录中添加一个叫".gitignore"的文件,来告诉Git系统要忽略 掉哪些文件,下面是文件内容的示例:
# 以'#' 开始的行,被视为注释.
# 忽略掉所有文件名是 foo.txt 的文件.
foo.txt
# 忽略所有生成的 html 文件,
*.html
# foo.html是手工维护的,所以例外.
!foo.html
# 忽略所有.o 和 .a文件.
*.[oa]
git之删除和恢复:工作区,暂存区,仓库master
一、rm只删除工作区信息;
使用 git checkout -- file即可恢复;
二、git rm 删除工作区和stage信息;
1、使用git reset HEAD -- file即可恢复;
2、恢复步骤:
1)先使用git reset HeAD -- file从master中把已删除信息copy到到stage区;
2)再使用git checkout -- file从stage区把已删除信息copy到工作区。over!!!
3)这时你就看到删除的文件又回来啦。啦啦啦!
三、git commit -m “file”删除工作区,stage和master信息;
1、使用git reset --hard HEAD^即可恢复。
2、恢复步骤:
1)先使用git reset --hard HEAD^从master回收处恢复到master中;
2)再使用git reset HeAD -- file从master中把已删除信息copy到到stage区;
3)最后,使用git checkout -- file从stage区把已删除信息copy到工作区。
4)这时你就看到删除的文件又回来啦。啦啦啦!
以上我都亲自试过,很好用。
就是不知道从master中删除的信息暂时存放在哪里了。
另外:学习git基础推荐http://www.liaoxuefeng.com/这个博客,写的很浅显易懂!
[原创]git使用入门的更多相关文章
- Git快速入门
如果你不想看长篇的Git教程,想快速了解Git的使用,那么本文可能会对你入门Git有所帮助.由于笔者用的是Windows系统,所以本文只写Git在Windows上的使用. 一.Git安装 去Git官网 ...
- Git【入门】这一篇就够了
前言 欢迎关注公众号,白嫖原创PDF,也可以催更,微信搜:JavaPub,回复:[666] Git 在生产工作中是使用频率很高的工具,但我发现很多文章只是对它做了简单的提交命令说明,真正遇到 版本冲突 ...
- GIT 从入门到放弃大整理
跟着廖雪峰学 GIT http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 GUI f ...
- 第三章 Git的入门 - 读书笔记
Android驱动月考3 第三章 Git的入门 - 读书笔记 对于Github,这是全世界最大的开源平台,你可以把你做的项目在这里开源,把你发现的一些新技术在这里开源,向全世界的开发者们分享,大家都彼 ...
- git简单入门
git简单入门 标签(空格分隔): git git是作为程序员必备的技能.在这里就不去介绍版本控制和git产生的历史了. 首先看看常用的git命令: git init git add git comm ...
- Android系统移植与驱动开发--第三章 Git使用入门及在学习中有感
第三章 Git使用入门 使用Git的目的是减少各种版本的Linux的压缩大小,提供源代码在Linux上进行编译. 在这一个章节中,其实就是关键步骤的操作,虽然Git与我们学习的android没有很大的 ...
- 让 Python 带你进入开源的世界——Git 从入门到与他人协作开发
让 Python 带你进入开源的世界--Git 从入门到与他人协作开发 我认为开源社区中有很多优秀的资源,并且可以帮助进阶中的程序员提高编程能力和水平.所以,我发起了<HelloGitHub&g ...
- Git快速入门进阶篇
本文接着Git快速入门篇,继续探讨Git在管理项目中的一些应用. 远程仓库的使用 查看远程仓库 查看你已经配置的远程仓库服务器,可以运行 git remote 命令.指定选项 -v,会显示需要读写远程 ...
- git快速入门 push/clone/reset/merge/切换分支全都有
本文介绍git快速入门,从安装/创建init / 发布push/版本回退reset / branch分支切换/合并分支merge 这些基本的操作都有涉及,方便新人快速入手,有需要的朋友mark一下.首 ...
随机推荐
- WinDbg调试DMP格式文件
前言:WinDbg是微软开发的免费源代码级的调试工具.WinDbg可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件.本文的讨论是在安装了Debugging Tools for Win ...
- Ubuntu环境下手动配置Hadoop1.2.1
/×××××××××××××××××××××××××××××××××××××××××/ Author:xxx0624 HomePage:http://www.cnblogs.com/xxx0624/ ...
- c++ 基础学习: 左值 概念cocos2d-x3.0的实际应用
左值:概念baidu 1.2.6.2 与Cocos2d-x内存管理的结合 在2.x的使用场景中,CCArray和CCDictionary通常被分配在堆上,我们不得不需要考虑在适当的地方释放其内存.新的 ...
- 算法总结之欧拉函数&中国剩余定理
算法总结之欧拉函数&中国剩余定理 1.欧拉函数 概念:在数论,对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目. 通式:φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)( ...
- WCF的行为与异常-------配置文件说明
ServiceBehavior and OperationBehavior(这些都是应用在实现类上) http://msdn.microsoft.com/zh-cn/library/system.se ...
- python学习笔记一--字符串
一.字符串: (一)字符串里单个元素的操作 1. 单个字符(元素)的序列组合. 2. 序列:单个字符的位置 3. 序列的操作:内置函数len获取长度,加位置索引 4. 获取字符串的里的元素:正向索引+ ...
- 摄像头(1)拍照的主要API,权限和特性,判断有没有摄像头的方法
支持 Android SDK支持操作Android设备内置的照相机.从Android2.3开始,支持操作多个摄像头(主要指前置摄像头和后置照相机).通过照相机可以拍照和录像. 注意事项 是否支持照相机 ...
- 关于ckeditor添加的class都会被清除掉的问题
在源码中输入ul,并且带有class,然后点击源码,到可视化界面 结果显示为aaa,再点看源码,查看HTML源代码 解决方法: 添加配置 config.allowedContent = true 这个 ...
- 爬虫实现(hpricot)
1.基本代码 在gemfile中加入gem "hpricot",bundler install之后,在application.rb中require "hpricot&qu ...
- IMX51启动模式
相关链接: http://blog.csdn.net/kickxxx/article/details/7236040 http://blog.csdn.net/evilcode/article/det ...