• git bash使用(markdown版)


    前言

    我是通过这个来学习的。个人愚笨,琢磨了半天,终于搞通了,醉了醉了,以前一直使用svn,用git确实有点水土不服。本文以如何使用git为主来展开,不涉及太多理论。

    git是分布式的版本管理。什么叫分布式呢,这个得和SVN集中式对比一下。

    SVN就是把所有的版本信息都管理在一个服务器上,其他端都是客户端,checkout是获取某个版本的代码(通常是最新版本啦,也就是HEAD),update就是把本地的代码更新一下,和服务器保持同步,commit就是把本地代码提交给服务器。这些操作就如同访问一个论坛,看帖,留言一样。

    而GIT是每一个机器上都有一个服务端,或许说服务端不太准确,应该说每一个机器上都是一个版本库,SVN除了服务器之外,其他的机器上都只是一份代码而已,并没有版本信息,也就是说:如果你使用SVN,有一天服务器被人偷走了,你的机器上,只保留着昨天晚上update的最新代码,你基本上无法看到以往版本的信息了,你新买个服务器,建个SVN服务器,版本号又得从1开始。而GIT不一样,即使有一天github.com这个网站倒闭了,也没有关系,你昨晚拉取(pull)到本地的数据是完整的一个版本库,你在本机就可以查看到所有的版本信息,咱有空再建一个github2.com就是了。
    以上是GIT与SVN一个比较大的区别。

    明白了这一点就好办了,接下来讲如何使用git。

    安装与初始化

    我喜欢使用命令行来操作。

    在Windows下,打开链接:http://msysgit.github.io/index.html下载客户端,安装后有一个git bash的客户端,双击打开如下图所示:
    这里写图片描述

    在Mac下,在此下载客户端http://git-scm.com/download/mac,安装后直接使用自带的终端即可操作。

    接下来要进行一个简单的初始化配置,在终端中输入

    git config --global user.email [your_email_address]
    git config --global user.name [your_name]
    

    这两行的作用是对当前你使用的机器做一个标记,因为你的项目会被多个机器操作,而这有可能是你在使用,也有可能是别人在使用,那么是谁提交的代码,就需要有一个标记,比如,我有一个版本库,使用了我自己的三台电脑进行过提交,我使用git log命令来查看日志记录,会显示哪个用户做了什么操作。
    这里写图片描述

    做好以上的配置,就可以继续了。如果上面的配置不做,当你提交代码的时候应该会提示你。

    你要单机使用还是用github.com?

    git是一个系统,github是一个使用git来管理版本库的网站,这两者还是有区别的。
    如果你要单机使用的话,也就是你把自己的电脑当做版本库,那么你需要使用git init命令。该命令会把当前目录变成一个版本库,并在里面生成一个.git文件夹。如下图所示:
    这里写图片描述

    如果你要联网使用,也就是说github.com上已经有一个版本库了,我们把它克隆(clone)到本地,你可以理解为checkout。这时,你需要使用git clone [url]命令。该命令执行后,会在当前目录创建一个以版本库名命名的文件夹,这个文件夹里面有.git文件夹和项目相关的文件。

    (1)先在github.com上创建一个新(空)的版本库。
    这里写图片描述

    (2)创建完成后,会给出一个版本库的地址
    这里写图片描述

    (3)在命令行中进入你想要把项目放置的位置,比如你想要把项目放置到/my_projects/目录中,你只需要到这个目录即可,不需要新建test_git目录。然后在命令行中输入:

    git clone https://github.com/KrossFord/test_git.git
    

    (4)然后你就可以在你的目录中看到test_git目录。

    (5)该目录中可以看到一个.git文件夹。
    这样,你就把其他机器(github.com)服务器上的版本库给clone到本地了。

    向版本库提交代码(commit)

    新建的版本库空空如也什么都没有,我们以一个已经存在的Android项目为例,想其中添加代码。
    (1)新建一个Android项目(你自己的其他什么项目都可以啦),把代码全部复制到test_git目录中。如下图所示:
    这里写图片描述

    (2)这个时候我们可以使用命令git status来查看版本库的状态,这里注意一点!git status命令查看的当前版本库的状态,何为当前呢?就是说,终端也就是命令行进入到一个有.git文件夹的文件夹里,那么git status命令就可以检查这个目录(项目)的状态,如果你在一个没有.git文件夹的文件夹中git status是没有用的,因为那个文件夹并不是一个版本库。
    于是你可以看到如下内容:
    这里写图片描述

    一下文件是未被添加到版本库中,我们需要使用git add命令来添加。

    (3)忽略,对于一些项目有一些文件是不想被添加到版本库上传到服务器的,比如bin文件夹,这种情况我们可以建立一个.gitignore文件来处理,这里windows有点坑,它不能创建一个没有文件名只有扩展名的文件。
    这里写图片描述

    没关系,我们随便建立一个文件,然后用命令行来改,使用

    mv [原文件名] .gitignore
    

    就行了。
    在.gitignore文件中输入以下内容即可:

    #忽略bin文件夹本身
    /bin
    #忽略bin文件夹内部的内容
    /bin/
    

    关于忽略规则,请参考这里。
    这个时候再次输入git status来看看版本库的状态。
    这里写图片描述

    这个时候就没有bin文件夹了。

    (4)添加文件,并提交文件。
    直接使用git add .来进行添加,再次用git status查看状态。
    这里写图片描述

    然后使用git commit -m "message"来提交,填写提交信息是必须的。
    这里写图片描述

    这个时候,提交工作已经完成了,也就是说,版本库中已经有了新加入的文件,但是如果此时你去刷新github.com的页面,你会发现你的项目并没有变化,依然是空的。这是因为git是分布式的,你本机的版本库是版本库A,github.com上的版本库是版本库B,它们是不会自动关联同步的。
    于是你需要最后一步操作。

    (5)将数据推送到远程版本库,你需要使用git push origin master命令。
    origin是远程版本库的名字,master是你当前分支的名字,具体详情请参考这里。
    对了,这个命令后,你需要输入github账号与密码。
    提交完后,你刷新github.com的页面,就可以看到你的项目文件了。
    这里写图片描述

    更新本地版本库数据

    和svn一样,如果远程的版本库先被修改了,那么我本地的版本库想要保持最新,就需要对本地版本库进行更新,这有点像svn中的update,但区别是svn中update只获取最新的代码,或者某一个特定版本的代码,而git中的update是把整个版本库与服务器端的同步。
    具体操作,请执行git pull

    以上,就是git的常规使用。

    移除已经提交到版本库的文件

    如果已经把一些文件提交到了版本库,并且push到远端,那么就可以使用git rm --cache file_or_dir_name来移除。
    比如我将.idea文件夹提交上去了,但是我现在想移除它。

    git rm -r --cache .idea/
    

    然后我在.ignore文件中添加 .idea 这样一项。
    然后正常commit即可

    设置代理

    如果你使用公司的网络来访问github的话,往往会收到一些限制,给git设置代理的方法:

    git config --global http.proxy [host:port]
    

    总结

    git init将当前目录创建为版本库,实际上就是在当前目录里面创建了一个.git文件夹。
    git clone [url]将服务器端的版本库clone一个到本地来,会在当前文件夹下创建一个项目文件夹,项目文件夹中有.git文件夹。

    git config --global user.email xxx
    git config --global user.name xxx
    

    以上两个命令用来设置当前机器使用git的用户信息。
    git log可以查看当前版本库的日志信息,在没有.git文件夹的文件夹中无效。
    使用.gitignore来忽略一些不想提交的文件。
    使用git add [file]来把文件纳入版本库中,此时文件还没有提交到版本库。
    git commit -m "this is a message"来进行提交,git的提交是本地操作的,可以说所有的操作都是本地的
    git status来查看版本库的状态,随时都可以使用,在没有.git文件夹的文件夹中无效。
    git push origin master将本地版本库的信息推送到服务器端。
    git pull将服务器端的版本库信息同步到本地。

    以上操作,基本可以满足个人需求了。

    更新2014-11-4 19:11:37
    git commit -a命令,-a 的作用是将被修改的,或者被删除的文件加入到待提交列表,commit的时候会被commit。但是新增的文件不会,也就是说,新增的文件还是要用git add命令来操作。
    git add . 可以一次性add所有的新文件。

    更新2015-3-20 11:50:43
    git bash进入后目录总是是不在我自定义的目录上,更改git bash的初始目录(起始目录,开始目录)的办法是:
    windows下右键git bash的图标,在“快捷方式”选项卡中,有“起始位置”一栏,更改即可。
    这里写图片描述

    更新2015-3-23 15:07:20
    本地创建的仓库推送到github上的使用办法。
    要做毕业设计,因此我的项目都放在www目录下,以前我的android项目都是放在我自己管理的一个mygit目录下的,eclipse直接引用就行了,但网站不行(其实也可以,服务器配置改下就行了),所以我的项目目录就存放在www目录下,我首先进入我的项目目录www/flower(一个鲜花网站……),然后在git bash中输入git init命令,即可将当前目录变成一个仓库,可以看到该目录中自动生成了一个隐藏文件夹.git。
    接下来我们就要推送到github上,在github上建立一个仓库,然后会给你一个地址。
    这个时候需要用git bash工具,给当前的仓库加一个远端地址。命令如下:
    git remote add remote_name https://github.com/xxxxxx/xxxxxx.git
    remote_name可以自己随便起
    后面跟着的地址,就是github给你的仓库地址。
    添加完毕之后,输入git remote -v可以查看到remote是否添加上了。
    接下来就是关键性的一步
    git push remote_name master
    这样就可以将本地的代码推送到github了。
    直到学习了这一步,我才知道git push remote_name local_name
    remote_name是github上的名字,
    local_name是本地的名字。
    之前的用法都是git push origin master,也就意味着,origin是github上的,master是本地的,这个参数的顺序还真是符合英语的语法顺序呢……

  • 相关阅读:
    Spring基础知识
    Hibernate基础知识
    Struts2基础知识
    在eclipse里头用checkstyle检查项目出现 File contains tab characters (this is the first instance)原因
    java后台获取cookie里面值得方法
    ckplayer 中的style.swf 中的 style.xml 中的修改方法
    java hql case when 的用法
    Windows下Mongodb安装及配置
    Mongodb中经常出现的错误(汇总)child process failed, exited with error number
    Mac 安装mongodb
  • 原文地址:https://www.cnblogs.com/kross/p/5279410.html
Copyright © 2020-2023  润新知