文章目录
  1. 1. 什么是Git?
  2. 2. 为什么要学习Git?
  3. 3. 一些收获
  4. 4. 各种操作
    1. 4.1. A分支想合并一个别的分支的commit
  5. 5. 参考文章

什么是Git?

Git应该是现在最受欢迎的版本控制系统了,而且免费开源,可以直接连到github上进行合作开发,分布式的,安全性高。按我的理解,git就是帮你管理代码,你写好了它帮你添加为软件的一部分,你写错了它帮你退回来在写,代码逐渐地添加到软件中去,直到这个软件完成。

为什么要学习Git?

自从学习利用hexo部署静态博客以来,经常需要接触到Git Bash,虽然更新博客时用到的只是hexo g,hexo s,hexo d等指令,但是其中仍是依靠git来完成的。
可以说git的使用是一个开发人员必备的技能,因为现在大部分的项目都是以合作形式来开发的,所以学会用工具与他人合作至关重要。
所以今天中午去学习了下Git,发现学习基本的git操作其实很简单,尤其是当你有了一些版本库的基本知识之后。

一些收获

下面我就git学习过程写下一些收获,一来总结,二来可以备忘。

Git安装就不说了,网上一搜大把。

创建版本库
先建立一个目录以便存放版本库以及代码等信息。可以直接新建文件夹或者在git bash中mkdir建立。
建立目录以后在文件夹中右键在此位置启动git bash,或者在git bash中用cd命令切换到此目录,输入git init,这样一个版本库就创建好了。

1
2
3
$ mkdir mygit
$ cd mygit
$ git init

这时目录中会生成一个.git文件夹(默认是隐藏的,Windows下可以修改查看让其显示,Linux下ls指令即可显示),此即所谓的版本库。

分清几个概念

  • 工作区: mygit文件夹(目录)
  • 版本库: .git文件夹(目录)
  • 暂存区: .git面的index文件

git往版本库添加文件是分两步的,暂存区起一个缓冲作用:

1.git add命令将文件存入暂存区
2.git commit命令将暂存区中的所有修改提交到版本库当前分支

所以下面就好办了:
添加文件到版本库以及提交到版本库

1
2
$ git add readme.md            
$ git commit -m "description" #description是本次提交的说明

常用的git命令

1
2
3
4
5
6
$ git status            #查看版本库当前状态,哪些文件改变了
$ git diff readme.md #查看readme.md文件的变化
$ git log #查看提交历史
$ git log -p filename # 查看某文件提交记录
$ git reflog #查看命令历史
$ cat readme.md #查看readme文件内容

版本回退

1
2
$ git reset --hard HEAD^  #退回到上一版本,两个^表示退回到上上个版本
$ git reset --hard [command-id] #直接退回到某一条命令,命令id可以在reflog中查看

管理和撤销修改,删除文件

1
2
3
4
$ git diff HEAD -- readme.md  #查看版本库和工作区中readme.md文件的区别
$ git checkout -- readme.md #撤销readme.md文件在工作区(整个文件夹)的修改,即退回到最近一次git add 或 git commit之前的状态
$ git reset HEAD readme.md #撤销暂存区的修改,就是最近一次git add失效
$ git rm readme.md #删除一个文件,如果误删,只要版本库中有这个文件,那么可以checkout恢复

连接Github远程仓库
如果没有本地与Github的SSH-key,那么需要生成一个,随便在哪打开git bash:

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

然后一路回车即可,在系统盘找到.ssh文件夹(默认隐藏),复制id_rsa.pub(公钥)文件中的内容,到你的Github网站上的SSH-keys,随便取个名字,复制上去就行了。(id_rsa文件是密钥文件,不要泄露)
为了判断连接是否成功,可以输入:

1
ssh -T git@github.com

如果是下面的反馈:

1
2
3
The authenticity of host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)?

输入yes就好了。

添加远程库,推送&克隆
首先在Github上新建一个repository,然后在工作区git bash中输入:

1
$ git remote add origin git@github.com:whatbeg/mygit.git

注意替换账户名和Repo名。
然后可以推送到远程库或者从远程库克隆:

1
2
$ git push -u origin master   #第一次加-u,而后则不用加了,-u起到一个关联作用,显然关联一次就可以了
$ git clone git@github.com:whatbeg/mygit.git

分支管理

git 克隆分支到本地

1
git checkout -b dev origin/dev

各种操作

A分支想合并一个别的分支的commit

首先切换到A分支

1
2
git checkout A
git log

找出要合并的commit ID :

例如 0128660c08e325d410cb845616af355c0c19c6fe

然后切换到B分支上

1
2
git checkout B
git cherry-pick  0128660c08e325d410cb845616af355c0c19c6fe

然后就将A分支的某个commit合并到了B分支了

参考文章

廖雪峰Git教程

计算机相关 | CS.Related