您的位置:首页 > 其它

Git 的个人学习与使用笔记(一)

2015-12-20 23:39 567 查看
参考:Git教程 - 廖雪峰的官方网站

环境

ubuntu 14.04

安装git

首先安装git:

sudo apt-get install git


输入命令查看是否安装了git:

$ git
usage: git [--version] [--help] [-C <path>] [-c name=value]
[--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
[-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
[--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
<command> [<args>]

最常用的 git 命令有:
add        添加文件内容至索引
bisect     通过二分查找定位引入 bug 的变更
branch     列出、创建或删除分支
checkout   检出一个分支或路径到工作区
clone      克隆一个版本库到一个新目录
commit     记录变更到版本库
diff       显示提交之间、提交和工作区之间等的差异
fetch      从另外一个版本库下载对象和引用
grep       输出和模式匹配的行
init       创建一个空的 Git 版本库或重新初始化一个已存在的版本库
log        显示提交日志
merge      合并两个或更多开发历史
mv         移动或重命名一个文件、目录或符号链接
pull       获取并整合另外的版本库或一个本地分支
push       更新远程引用和相关的对象
rebase     本地提交转移至更新后的上游分支中
reset      重置当前HEAD到指定状态
rm         从工作区和索引中删除文件
show       显示各种类型的对象
status     显示工作区状态
tag        创建、列出、删除或校验一个GPG签名的 tag 对象


设置配置文件

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"


创建版本库

$ mkdir learngit #版本库名为learngit
$ cd learngit
$ git init


这样就建好了一个仓库,路径在learngit文件夹下

添加文件与添加修改

把一个文件加入git仓库总共分两步(这只是一个建议。。):

1.添加文件

$ vim readme.txt
$ cat readme.txt #查看文件内容
Git is a version control system.
Git is free software.
$ git add readme.txt #没有任何显示便是添加成功


执行完以上命令,我们就向learngit仓库添加了readme.txt文件。

准确地说,就是把你的修改后的文件提交到仓库上。

2.添加版本

当你对仓库里的文件做出了修改,应该对修改做一个说明,即创建一个版本。

使用

$ git status


命令可以查看当前做出的且未做说明的修改。

#将刚才做出的修改(即创建并添加readme文件)做一个说明
$ git commit -m "wrote a readme file"


执行完以上命令,我们就向learngit仓库添加了对创建readme.txt文件这个行为的说明。

准确地说,就是把你的对文件的修改告知给仓库。

提交版本可以不做任何修改就提交(不推荐),也可以做出很多修改(比如创建一万个文件)再提交(也不推荐),最后是做出关键修改的时候对自己做出的修改做出一个确切的说明并提交版本。

做一个不那么形象的比喻。。

有一个人买东西往购物篮里塞东西,购物篮就是仓库,物品就是文件,你可以随意拿出,拿入任意不同种物品,但一定要在付款的时候把购买了些什么东西告知收银台,告知收银台的行为可以看做提交版本。

版本回退

一个很有用的功能。

#修改readme文件
$ vim readme.txt
$ cat readme.txt
Git is a distributed version control system.
Git is free software.

#用git status查看工作区状态
$ git status# On branch 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: readme.txt
#
no changes added to commit (use "git add" and/or "git commit -a")

#上面的命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改。

#我们可以用git diff命令查看做出的修改
$ git diff readme.txt
diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
Git is free software.

#将这个修改提交到仓库并为之创建一个版本
$ git add readme.txt
$ git commit -m "add distributed"
[master ea34578] add distributed
1 file changed, 1 insertion(+), 1 deletion(-)
$ git status# On branch master
nothing to commit (working directory clean)

#利用git log命令查看创建的版本
$ git log
commit b3833d9787b491e9326e0092be4a75cbe98fccf3
Author: flintx <940852578@qq.com>
Date: Sun Dec 20 21:35:08 2015 +0800

add distributed

commit 156d7ce2f3057ae479d2d20a8f87845227707cd8
Author: flintx <940852578@qq.com>
Date: Sun Dec 20 21:21:55 2015 +0800

wrote a readme file

#156d7ce2f3057ae479d2d20a8f87845227707cd8就是一个版本号,利用SHA生成
#下面回退到添加distributed之前的版本
$ git reset --hard HEAD^
#HEAD^表示上一版本,上上一个版本就是HEAD^^,往上100个版本写成HEAD~100

#也可以直接用commit的id(前几位即可)来表示
#例如:
#$ git reset --hard 156d7ce2f30

$ cat readme.txt
Git is a version control system.
Git is free software.


连接Github

把代码托管到远程仓库更保险一些,比如说大型知名 同性交友 Git服务器Github!

首先注册一个Github账号。。

然后在本地创建一个关于个人邮箱的SSH密钥:

$ ssh-keygen -t rsa -C "youremail@example.com"


然后一路回车,如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,id_rsa是私钥,id_rsa.pub是公钥。

其次登陆GitHub,打开“Account settings”,“SSH Keys”页面,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容。

以上完成就可以开始开心地 搞基 upload and clone code了~

关联本地仓库

先在Github上创建一个仓库(repository)。。最好和本地同名。。

然后回到本地仓库路径下:

#这个关联的是我的仓库。。注意修改啊
$ git remote add origin git@github.com:flintx/learngit.git

#下一步就可以用git push命令把文件(准确说是master分支)push到远程仓库了
$ git push -u origin master

#提交过一次后下次提交只需用git push -u origin master即可


ps.第一关联远程仓库可能有警告。。it’s a warning not a error。。

克隆远程仓库

这才是我学Git的目的啊!!!!

#用git clone命令即可
#Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议,但后者比较慢且麻烦,尽量用前者吧。
$ git clone git@github.com:flintx/learngit.git
Cloning into 'learngit'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.


分支管理

这属于略高级范畴了。。容我学习下再补充。。

Git鼓励大量使用分支:

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  git ubuntu