Git 学习笔记

一、创建版本库

  第一步先创建一个空的目录   mkdir  www 。

  [root@caiji home]# cd www
  [root@caiji www]# pwd
  /home/www
  第二步,通过git init命令把这个目录变成Git可以管理的仓库:

   [root@caiji www]# git init
   Initialized empty Git repository in /home/www/.git/

   如果没有看到.git 目录,那么 .git目录默认是隐藏的,可以用 ls -ah 查看

   [root@caiji www]# ls -ah
    .  ..  .git

   现在编写一个 index.php 文件,内容如下:

    <?php

   phpinfo();

   ?>

    把一个文件放到Git仓库只需要两步。

    第一步,用命令git add告诉Git,把文件添加到仓库:

    [root@caiji www]# git add index.php

    执行上面的命令,没有任何显示,这就对了,Unix的哲学是“没有消息就是好消息”,说明添加成功。

    第二步,用命令git commit告诉Git,把文件提交到仓库:

     [root@caiji www]# git commit -m "add phpinfo"
     [master (root-commit) 9f44988] add phpinfo
     1 file changed, 3 insertions(+)
     create mode 100644 index.php

     git commit命令, -m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

     嫌麻烦不想输入-m "xxx"行不行?确实有办法可以这么干,但是强烈不建议你这么干,因为输入说明对自己对别人阅读都很重要。实在不想输入说明的童鞋请自行Google,我不告诉你这个参数。

git commit命令执行成功后会告诉你,1个文件被改动(我们新添加的readme.txt文件),插入了两行内容(readme.txt有两行内容)。

为什么Git添加文件需要addcommit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:

$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files." 

二、时光机穿梭

  前面已经成功添加了文件index.php,现在修改index.php 内容如下:

<?php
echo "1234";
phpinfo();
?>

运行git status命令看看结果:

[root@caiji www]# 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:   index.php
#
no changes added to commit (use "git add" and/or "git commit -a")

git status命令可以让我们时刻掌握仓库当前的状态,上面的命令告诉我们,index.php被修改过了,但还没有准备提交的修改。

虽然Git告诉我们index.php被修改了,但如果能看看具体修改了什么内容,自然是很好的。比如你休假两周回来,第一天上班时,已经记不清上次怎么修改的index.php,所以,需要用git diff这个命令看看:

[root@caiji www]# git diff index.php
diff --git a/index.php b/index.php
index cf60860..cc8b2a3 100644
--- a/index.php
+++ b/index.php
@@ -1,3 +1,4 @@
 <?php
+echo "1234";
 phpinfo();
 ?>

知道对index.php文件做了什么修改, 提交修改和提交新文件是一样的两步,第一步是git add

[root@caiji www]# git add index.php

同样没有任何输出。在执行第二步git commit之前,我们再运行git status看看当前仓库的状态:

[root@caiji www]# git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#    modified:   index.php
#

git status告诉我们,将要被提交的修改包括index.php,下一步,就可以放心地提交了:

[root@caiji www]# git commit -m "add echo"
[master c695a71] add echo
 1 file changed, 1 insertion(+)

提交后,我们再用git status命令看看仓库的当前状态:

[root@caiji www]# git status
# On branch master
nothing to commit, working directory clean

1.版本回退

在Git中,我们用git log命令查看:

[root@caiji www]# git log
commit c695a7133a454fa879b74e2830756fecb1eb62f5
Author: wqy <1491617068@qq.com>
Date:   Wed May 17 11:04:10 2017 +0800

    add echo

commit 9f44988f04e5b594c99e3f012f183174ab04d541
Author: wqy <1491617068@qq.com>
Date:   Wed May 17 10:21:05 2017 +0800

    add phpinfo

git log命令显示从最近到最远的提交日志 , 如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数:

[root@caiji www]# git log --pretty=oneline
c695a7133a454fa879b74e2830756fecb1eb62f5 add echo
9f44988f04e5b594c99e3f012f183174ab04d541 add phpinfo

把当前版本“add echo”回退到 上一个版本 “add phpinfo” 使用git reset命令:

[root@caiji www]# git reset --hard HEAD^
HEAD is now at 9f44988 add phpinfo

index.php 文件回退到版本 “add phpinfo”

[root@caiji www]# cat index.php
<?php
phpinfo();
?>

git log再看看现在版本库的状态:

[root@caiji www]# git log
commit 9f44988f04e5b594c99e3f012f183174ab04d541
Author: wqy <1491617068@qq.com>
Date:   Wed May 17 10:21:05 2017 +0800

    add phpinfo

如果由于操作失误 想回到 “add echo”版本, 只要上面的命令行窗口还没有被关掉,找到那个“add echo ” commit id  是 c695a713........ , 于是就可以指定回到未来的某个版本:

[root@caiji www]# git reset --hard c695
HEAD is now at c695a71 add echo

版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。

再看一下 index.php文件内容 :

[root@caiji www]# cat index.php
<?php
echo "1234";
phpinfo();
?>

在Git中,总是有后悔药可以吃的。当你用$ git reset --hard HEAD^回退到add phpinfo版本时,再想恢复到add echo ,就必须找到add echo 的commit id。Git提供了一个命令git reflog用来记录你的每一次命令:

[root@caiji www]# git reflog
c695a71 HEAD@{0}: reset: moving to c695
9f44988 HEAD@{1}: reset: moving to HEAD^
c695a71 HEAD@{2}: commit: add echo
9f44988 HEAD@{3}: commit (initial): add phpinfo

终于舒了口气,第三行显示add echo 的commit id是 c695a71,现在,你又可以乘坐时光机回到未来了。 

三、远程仓库

1.添加远程仓库

要关联一个远程库,使用命令 git remote add origin git@github.com:wangqiyincode/webapp.git;

关联后,使用命令git push -u origin master第一次推送master分支的所有内容;

此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

2. 从远程库克隆

要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。

git clone git@github.com:wangqiyincode/webapp.git


四、分制管理

1.创建与合并分支

查看分支:git branch

创建分支:git branch <name>

git branch dev

切换分支:git checkout <name>

git checkout dev

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

git checkout -b dev

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

git merge dev

删除分支:git branch -d <name>

git branch -d dev

2.分支管理策略

git merge <name>         

git merge dev (合并  dev 分支)

git merge --no-ff -m "merge with no-ff" <name>

git merge --no-ff -m 'merge with no-ff' dev ( 合并dev分支,注意--no-ff参数,表示禁用Fast forward, 本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。 )

合并后,用git log查看分支历史:

$ git log --graph --pretty=oneline --abbrev-commit

*   0a53d6f merge with no-ff
|\  
| * ab1f3b9 add php
|/  
*   6821d5f add info
|\  
| * 4972925 add info
* | b11c151 &&&&s
|/  
* e473e89 branch test

 

 

 

转载于:https://my.oschina.net/u/3424381/blog/902768

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值