饥人谷技术博客

Git Git

2016-06-16  本文已影响53人  婷楼沐熙

所谓Git,就是分布式版本控制系统,用于高效的处理任何或大或小的项目。这是它和其他非分布式的版本控制系统,例如SVN、CVS等,最核心的区别。SVN的缺点很明显:假如中心代码挂掉,很难恢复;每次提交都要有网络。而Git的本地库和远程库完全一样,任何一个点出问题,都可以完全恢复代码。本人也是这两天才开始学习Git,由于命令比较多,所以总结一下,方便后面查看。

1.安装后设置名字和邮箱

由于Git是分布式版本控制系统,所以每台机器都必须要设置名字和Email地址。

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

2.常用的基本命令

因为Git Bash是模拟Linux环境,所以很多都和Linux命令一样。

3.小技巧

4.生成SSH key

我们在使用Github的时候,默认的是使用HHTP通信协议取得Git远程库。但HTTP每次执行远程仓库一般都会要求输入用户名和密码,比较麻烦。所以我们可以使用SSH协议,通过预先生成的密钥来验证身份。
关于如何生成SSH key可以参考官方文档:
generating SSH keys
这里需要注意的是我们在生成SSH keys的时候,默认的是使用HHTP通信协议取得Git远程库。如果一开始没有注意这个问题,我们的地址就会绑定错误,这时候如果直接增加origin标签,输入:

$ git remote add origin git@github.com:jirengu/git-test3.git

会出现fatal错误,提示origin已经存在。所以我们需要先删除origin标签(第二行代码):

$ git remote -v
$ git remote remove origin

然后再重新增加origin标签就可以了(第一行代码是查看远程端信息)。

5.单人操作

在介绍操作之前,首先介绍一下git的四个区:

一般建议在c盘新建一个文件夹:

$ cd /c
$ mkdir git-test3
$ cd git-test3

接下来把当前文件夹初始化为一个git库:

$ git init 

把当前文件夹所有的文件放入暂存区:

$ git add .

提交到库,以下三行代码,输入任何一行都可以,作用有些差别。第一句会默认打开vim编辑器,可以输入更多的信息;第二句不会打开编辑器,适用于简单的加入一句话;第三句,可以把所有的修改都提交,包括删除的文件。
(ps:vim编辑器的退出方法一般分为保存和不保存,操作分别为:“Esc”、“:”、“wq”、回车;“Esc”、“:”、“q!”、回车。)

$ git commit
$ git commit -m "add"
$ git commit -am "add"

然后放入远程库,给远程库取名为origin,下次推送可以直接推送到origin地址(git push):

$ git remote add origin git@github.com:jirengu/git-test3.git

6.多人操作

如果是多人合作一个项目,第一步,需要把远程库的代码拉到本地,使用命令:

$ git clone git@github.com:jirengu/git-test3.git

接下来要进行的操作

7.代码提交不顺利情况

在git push后出现错误,可能是因为其他人提交了代码,而使你的本地代码库版本不是最新的。 这时你需要先git pull代码,再检查是否有文件冲突。 没有文件冲突的话需要重新走一遍代码提交流程add —> commit —> push。

8.解决冲突

冲突一般发生在git pull的时候,当结果出现UU,就说明产生了冲突。比如说结果出现:UU readme.txt,说明产生了冲突需要解决它。

$ vi readme.txt

搜索文件里面的“====”,在文档上部找到“<<<<”(<<<<和====之间的部分为本地冲突,====和>>>>之间的部分为远程冲突), 修改里面的内容,解决方案为:用上面的或者下面的或者将两者合并,再把“<<<<”“====”“>>>>”删掉。最后输入命令:

$ git status -sb
$ git add .
$ git status
$ git commit -m "merge"
$ git push

就可以成功的推送了。这其中需要注意的是,解决冲突之后,要添加文件(add)。

9.变更项目地址

假设已经有库,先处于另一个项目test-demo,现在要把当前文件代码推送到另一个项目上,这时候我们可以再新建一个标签(比如取名为git-test),让它代表新项目的地址,通过SSH连接到库上:

$ git remote add git-test git@github.com:3.git
$ git remote -v 
$ git push git-test master

(ps:如果要进行强制推送,命令为:git push -f git-test master,表示把本地库强制推送到名叫git-test的远程库的master分支上)

10.分支

创建分支可以避免提交代码后对主分支的影响,可以不让自己的记录打扰到合作者。同时也使你有了相对独立的开发环境,分支具有很重要的意义。

合并分支的操作是从feature合并到master分支,当前在master分支上。

11.版本退回

版本回退用于线上系统出现问题后恢复旧版本的操作。
git reset HEAD(分支号的前面六位就可以)
git status -sb
上面代码的结果是工作目录没有更改,文件仍然存在,只改git认为的最新状态。如果要进行硬盘改写,则可以输入:
git reset --hard HEAD
查看所有的提交:
git reflog

由于自己第一次用git,感觉东西比较多,所以把学到的东西总结了一下。后面接触的多了,知道的多了再来慢慢补充。

上一篇 下一篇

猜你喜欢

热点阅读