Git以及GitHub的使用

来源:互联网 发布:网络课程艺术鉴赏答案 编辑:程序博客网 时间:2024/05/16 08:15

Git 在Windows下和Linux下的使用


如果我们都使用命令行语句,则均可使用,所以下文只使用命令行语句

##############################################


在Windows下安装Git


访问网址:http://msysgit.github.io/

下载最新版本的适合自己电脑的Git安装程序


安装过程可一直默认设置,一直按向下按钮,知道安装完成



##########################################################################


Linux 下安装Git

本人是CentOS系统,所以使用命令行语句:sudo yum install git-core (或sudo yum install git)


##############################################################################


在Window系统下,从开始菜单找到Git Bash打开即可使用命令 

在Linux系统下,打开shell界面即可


###################################################

创建代码仓库


1.配置身份,目的是在提交代码的时候Git可以知道是谁提交的

$git config --global user.name "Tony"

$git config --global user.name "tony@email.com"

配置完成后可以使用相同命令查看是否配置成功,只需要将最后的名字和邮箱地址去掉即可

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


git config 命令的--global参数,使用此参数后表示这台机器上的所有Git仓库(repository)都会使用这个配置




2.创建代码仓库

仓库(Repository)是用于保存版本管理所需信息的地方,所有本地提交的代码都会被提交到代码仓库中,如果有需要还可以再推送到远程仓库中


下面为项目histTest创建一个代码仓库

第一步,进入histTest项目的目录下面

第二步,在该目录下输入命令:

$git init
只需要一行命令就可以完成创建仓库的操作



在仓库创建完成后,会在histTest项目的根目录下生成一个隐藏的.git文件夹,这个文件夹就是用来记录本地所有的Git操作的,可使用

$ls -al
命令查看:



如果想要删除本地仓库,只需要删除.git这个文件夹即可


###############################################################

提交本地代码


代码仓库创建完成后就可以提交代码了,只需要使用add和commit命令即可

add用于把想要提交的代码先添加进来,而commit则是真正地去执行提交操作


提交单个文件命令:

$git add hello.c

提交目录命令:

$git add src/

提交所有文件命令:

$git add .

只需要在add的后面加上一个点,就表示添加所有的文件了


提交命令:

$git commit -m "First commit."

commit命令后面一定要通过-m参数加上提交的描述信息,如果没有描述信息的提交被认为是不合法的



#######################################################################

忽略文件


在项目生成中,有一些是IDE自动生成的,我们不应该将这部分文件添加到版本控制中,否则有可能会对文件的自动生成造成影响

Git提供了一种可配性很强的机制来允许用户将指定的文件或目录排除在版本控制之外,它会检查代码仓库的根目录下是否存在一个名为.gitignore的文件,如果存在的话就去一行行读取这个文件中的内容,并把每一行指定的文件或目录排除在版本控制之外

比如,我们在histTest项目的根目录下创建一个名为.gitignore的文件,然后编辑这个文件中的内容如下:

src/bin/

这样就表示把src目录和bin目录的所有文件都忽略掉,从而使得它们不会加入到版本控制中

之后我们可以提交代码

$git add .
$git commit -m "First commit."

###########################################################

查看修改内容


在进行第一次代码提交之后,很可能我们会对项目不断地进行维护,添加新功能等。比较理想的情况是每当完成了一小块功能,就执行一次提交。但是当某个功能牵扯到的代码比较多的时候,有可能写到后面的时候我们已经忘记了前面修改了社么东西。使用Git可以查看自上次提交后文件修改的内容

输入以下命令:

<span style="font-family: Arial, Helvetica, sans-serif;">$ git status</span>

Git提示目前没有任何修改,因为我们刚刚提交过。现在对histTest项目中的代码稍做改动

输入命令:

$git status


可使用diff命令查看具体修改的地方:

$ git diff


其中,减号表示删除的部分,加号表示添加的部分


######################################################

撤销未提交的修改


有时候编写代码时可能没有想清楚,使得原本正常的功能,结果反倒被我们改出问题。遇到这种情况,可以使用Git撤销未提交的代码:

如上面的修改代码,如果想要撤销可以通过checkout命令

$git checkout histTest/main.cpp

重新运行git status命令检查一下

$git status

可以看到当前项目没有任何可提交的文件,说明撤销操作确实是成功了


不过这种撤销方式只适用于哪些还没有执行过add命令的文件,如果某个文件已经被添加过了,这种方式就无法撤销其更改的内容


修改histTest项目中的某个文件



使用添加命令:

$git add .
现在已经把所有修改文件都进行了添加,在输入

再次执行checkout命令:

$git checkout histTest/main.cpp
$git status 


发现main.cpp仍处于修改状态,所修改的内容无法撤销


对于已添加的文件我们应该先对其取消添加,然后才可以撤回提交。取消添加使用的是reset命令,用法如下:

$git reset HEAD histTest/main.cpp


撤销成功


###########################################################

查看提交记录


当histTest项目开发很久以后,我们可能已经执行过上百次的提交操作,这时候估计你已经忘记每次提交都修改了哪些内容。Git记录下每次修改的内容,使用log命令可以查看历史提交信息:

$ git log


每次提交记录都会包含提交id、提交人、提交日期,以及提交描述这四个信息

修改内容,添加,提交后,重新查看记录:



当提交记录非常多的时候,如果我们只想查看其中的一条记录,可以在命令中指定该记录的id,并加上-1参数表示我们只想看到一行记录:

<pre name="code" class="cpp">$ git log e19dac5b69180660b997e35d3c0ecd3c6b8af7e0 -1

如果想要查看这条记录具体修改了社么内容,可以在命令中加入-p参数

$ git log e19dac5b69180660b997e35d3c0ecd3c6b8af7e0 -1 -p


加号代表添加的部分,减号代表删除的部分


#############################################################################

分支的用法


分支是版本控制工具中比较高级且比较终于重要的一个概念,它主要的作用就是在现有代码的基础上开辟一个分叉口,使得代码可以在主干线和分支线上同时进行开发,且相互之间不会影响。

通常情况下,只在主干线上进行开发是完全没有问题的,不过一旦涉及到出版本的情况,如果不建立分支的话,很可能会出问题。

举个简单的例子,比如说公司研发了一款不错的软件,最近刚刚完成,并推出了1.0版本。当时马上就投入了1.1版本的开发工作中。过了几个星期,1.1版本的功能已完成了一半,但是这个时候有用户反馈,之前上线的1.0版本发现了几个重大的bug,严重影响软件的正常使用。这时你就会非常为难,因为没法去修复这些bug,现在1.1版本开发一半了,如果在现有代码的基础上修复这些bug,那么更新的1.0版本将会带有一半1.1版本的功能!

如果使用了分支,就不存在这个问题。只需要在1.0版本发布的时候建立一个分支,然后再主干线上继续开发1.1版本的功能。当1.0版本上发现任何bug的时候,就在分支上进行修改,然后发布新的1.0版本,并将修改后的代码合并到主干线上。

这样的话,不仅可以轻松解决掉1.0版本存在的bug,而且保证了主干线上的代码也已经修复了这些bug,当1.1版本发布时就不会有同样的bug存在了


分支的英文名是branch,如果想要查看当前版本库当中有哪些分支,可以使用命令:

$git branch -a


由于目前没有创建过分支,因此只有一个master分支存在,也就是主干线。

接下来创建一个分支:

$ git branch version1.0



master前面有一个*号,说明目前我们的代码还是在master分支上的。切换版本可使用:

$ git checkout version1.0
$ git branch -a


这样就成功切换到verison1.0的项目


在version1.0分支上修改并提交的代码并不会影响到master分支。同样,在master分支上修改并提交的代码也不会影响到version1.0分支上。因此,如果我们在version1.0分支上修复了一个bug,在master分支上这个bug仍然存在。这时可以使用merge命令来完成合并操作:

git checkout mastergit merge version1.0

先切换到master分支下,在合并version1.0的代码,这样就可以把在version1.0分支上修改并提交的内容合并到master分支上。


当不需要version1.0这个分支的时候,可以使用如下命令将这个分支删除掉

$git branch -D version1.0


注意:但你在version1.0分支上时是无法删除此分支的


#####################################################################

GitHub


GitHub是全球最大的代码托管网站,主要是借助Git来进行版本控制。任何开源软件都可以免费地将代码提交到GitHub上,以零成本的代价进行代码托管。GitHub的官网地址为:https://github.com/


首先你需要有一个GitHub帐号才能使用GitHub的代码托管功能,点击Sign up for GitHub按钮进行注册,然后填入用户名、邮箱和密码,点击Create an account按钮来创建账户。

接下来会让你选择个人计划,其中收费计划有创建私人版本库的权限,我们选择免费计划就可以了。

点击Finish sign up按钮完成注册,就会跳转到GitHub的个人主界面,可以创建仓库,托管项目了。


##################################################################

与远程版本库协作


点击右下角的New repository按钮来创建一个版本库,命名为histTest,然后选择添加一个Visual Studio项目类型的.gitignore文件,并使用GNU 来作为开源协议即可

(Android项目一般使用Apache v2 License),点击Create repository按钮即完成版本库创建

GitHub已经自动帮我们创建了.gitignore、LICENSE和README.md这三个文件,其中编辑README.md文件中的内容可以修改版本库主页的描述


将版本库克隆到本地。首先必须知道远程版本库的Git地址,可以在版本库主页的右下角找到:


点击右边的复制按钮可以将版本库的Git地址复制到剪切板,

$ git clone Git地址


克隆完成后,.gitignore、LICENSE和README.md这三个文件就被复制到了本地


我们需要将这个目录中的所有文件全部复制到项目的根目录中,这样就能将整个项目添加到版本控制中。注意.git、.gitignore都是隐藏的,在复制的时候千万不要忘记!!!


将目录中的所有文件(包括隐藏文件复制到另一个目录中):

cp -R /home/usera/. /mnt/temp
被复制目录后要加上一个'.'不要错了


复制完后将histTest目录删除掉,最终histTest项目的目录结构如下:



接下来我们应该把histTest项目中现有的文件提交到GitHub上面

$ git add .$ git commit -m "commit."$ git push origin master 
origin表示远程版本库的Git地址,master指定的是同步在哪一个分支上
note:最后一步的时候,GitHub要求输入用户名和密码来进行身份校验,这里输入注册时填入的用户名和密码就可以了



同步完成后,刷新一下版本库的主页,刚才提交的文件已经存在



总结如下:

将代码下载到本地:

$git clone http://github.com/example/test.git
之后在这份代码上进行了一些修改和提交,将本地修改的内容同步到远程版本库上:

$git push origin master
其中origin部分指定的是远程版本库的Git地址,master部分指定的是同步到哪一个分支上,上述命令就完成了将本地代码同步到远程版本库分支上的功能


Git使用fetch和pull两种命令来完成将远程版本库上的修改同步到本地

$ git fetch origin master
执行这个命令后,就会将远程版本库上的代码同步到本地,不过同步下来的代码并不会合并到任何分支上去,而是会存放到一个origin/master分支上,这时可以通过diff命令来查看远程版本库到底修改了哪些东西:

$ git diff origin/master

之后再调用merge命令将origin/master分支上的修改合并到主分支上即可:

$ git merge origin/master

而pull命令则是相当于将fetch和merge这两个命令放在一起执行了,它可以从版本库上获取最新的代码并且合并到本地:

git pull origin master

#####################################################


以上内容均参考自《第一行代码》


0 0