一、Git的主要功能:版本控制
1.版本:
那么如果你修改并保存了一个文件,从版本管理的角度来说,你得到的是这个文件的新版本。
可是很多情况下,这种修改是不可逆的。你修改完之后,无法回到你修改前的样子。为了避免这种情况,有的人会把新版本的内容保存到一个新的文件里面。这样存储多个文件夹,可能会造成混乱。你可能想保存以前写的代码,因为它们可能在以后会用到。但是更多的时候是,你不知道各个文件夹都做了什么修改。
这时候你需要一款软件帮你管理版本,它就是Git。2.控制:
你可以用Git来对这些不同的版本进行控制。还可以很方便地查看两个不同版本之间的不同之处。——使用Git,你只保存最新的一份文件就可以了。——那我以前的文件怎么办?——可以用Git的 reset 帮你把文件回退到你想要的版本。——如果回去了,那我的最新版本呢?——还可以用 reflog 和 reset 的组合来还原。二、概览
所有命令前都要加 git
,如表中的init
是指 git init
。
1.个人本地使用
2.个人使用远程仓库
三、Git for Windows软件安装2.个人使用远程仓库
在官方下载完后,安装到Windows Explorer integration的时候,将选项中将“Git Bash here”和“Git GUI here”打对勾。
然后就一直next直到Finish
刚安装完打开后,窗口比较小。如果不太习惯,可以把它改大一些。
-
- 首先移到窗口右下角边缘,出现箭头后把窗口拉大。
- 点击窗口顶部左边的图标 -> Options... -> Window -> Current size -> OK这样以后打开窗口都会是调整后的大小。
四、本地Git的使用
打开命令行(cmd)或者在想要创建repository的地方右键鼠标并点击 Git Bash Here
打开窗口。
1.新的仓库-》初始化
运行 git init
来初始化仓库,如下图:
2.文件的添加和提交
我在这个文件夹里面创建了一个 test.txt
的文件。
输入git status 查看状态
如果中文文件的名称乱码 输入git config --global core.quotepath false 就可以解决。
如果 git log
也会乱码,执行以下命令:
git config --global i18n.commitencoding utf-8git config --global i18n.logoutputencoding utf-8
请根据需要将后面的 utf-8 替换成你想要的编码。如果是团队项目,请确保所有成员的设置都一致。
然后输入git add "test.txt" 上传此文件
或 git add -A 上传此目录下所有文件
再次使用 git status ,
状态变了!说明add成功。再看看它的提示 Changes to be committed
,也就是说现在可以执行commit了。下面一行则告诉你如何将文件从stage里移出,这里不管。
执行 git commit -m "提交信息"
将文件提交到repository里。提交信息用英文的双引号括起来。若出现please tell me who you are的提示,提示也就是需要你登录一下,确认你的身份,但是不要按照其提示输入,先输入命令git config user.name "username",换行输入git config user.email "email"
提交成功后 可以查看日志 git log
这样第一步就完成了。
3.文件的修改
接着我修改文件内容。改成修改文件操作。我们用 git status
看看有什么变化:
比较一下就会看到,之前的是添加新文件,当时文件还没被追踪(untracked),而这次是更改已经追踪(tracked)的文件。
现在我们通过git看看文件做了哪些变化,执行 git diff
:
它默认跟最新的一个commit进行比较。
红色(前面有减号-
)表示删除,绿色(前面有加号+
)表示添加。因此,在git看来,我们是删除了原来那一行,并添加了新的两行。这在文件内容特别多的时候效果比较明显。这个命令在以下情况可以使用: - 你忘记改了什么,又想知道
- 别人发给你新版本,你想知道更改了什么
注:如果你用 windows 创建 txt 文件,并用自带文本编辑器来编辑文本,得到的编码是 GBK 。而 Git 读取文件时,使用 UTF-8 无 ROM 编码。因此会出现中文无法正常显示的情况。
假如我现在想撤销这些更改,执行 git checkout -- .
就行了
4.版本回退
从刚才的git log,我们看到两行黄色部分是以 commit
开头的,后面接着一串字符。这一串字符是16进制的数,是一串哈希值。我们叫它版本号就行了。
版本回退命令 : git reset --hard 版本号前7位
现在已经看到了之前版本的内容,那么如何回到最新版呢?
先执行git reflog
:查看之前版本 再次输入 git reset --hard 版本号前7位 恢复到的版本
5.清除未追踪的文件
通常在reset或者pull(后面会讲)之前要做两件事:
- 将新添加且为追踪的文件删除掉(比如编译程序后所产生的文件)
- 已追踪的文件已有修改,但又不需要这些修改,则将它们还原
还原已做修改的tracked文件,上面已经讲过。
现在看看如何用命令删除新加的文件。输入命令 git clean -xf 会删除未跟踪的文件 就是没有上传过的文件
五、Github与Git的关联
上面的操作都是在本地计算机上产生影响的,一般也够用了。
如果你是程序员,想和其他人分享你的代码,或者合作开发,可以用Github。1)本地Git和Github的连接
-
-
到Github注册账号。
- 本地配置用户名和邮箱(如果已经设置好,跳过该步):
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"
如图所示:- 或者你直接在config文件里改,位置在
C:\Users\你的用户名\.gitconfig
。如下图所示,添加相应信息:
- 生成ssh key运行
ssh-keygen -t rsa -C "你的邮箱"
,它会有三次等待你输入,直接回车即可。将生成的ssh key复制到剪贴板,执行clip < ~/.ssh/id_rsa.pub
(或者到上图提示的路径里去打开文件并复制): -
打开Github,进入Settings:
点击左边的SSH and GPG keys
,将ssh key粘贴到右边的Key里面。Title随便命名即可。点击下面的Add SSH key
就添加成功了。测试一下吧,执行ssh -T git@github.com
:嗯,这样就成功了! 注:- 对于 oschina 的 “码云” ,执行
ssh -T git@git.oschina.net
- 对于 coding 的 “码市” ,执行
ssh -T git@git.coding.net
- 对于 oschina 的 “码云” ,执行
-
2)创建远程仓库并与本地关联
-
创建远程仓库
首先是在右上角点击进入创建界面:接着输入远程仓库名:
点击
Create repository
就创建好了。其他选项可以暂时不管。 -
将远程仓库和本地仓库关联起来
先到Github上复制远程仓库的SSH地址:
有两种方式可以关联,一种是SSH,一种是HTTPS。由于HTTPS比较慢,所以推荐使用SSH。
注意SSH的地址格式是这样开头的:git@github.com
运行
git remote add origin 你复制的地址
:如果你在创建 repository 的时候,加入了 README.md 或者 LICENSE ,那么 github 会拒绝你的 push 。你需要先执行
git pull origin master
。执行
git push -u origin master
将本地仓库上传至Github的仓库并进行关联:
关联已经完成!
以后想在commit后同步到Github上,只要直接执行 git push
就行啦:
可以在Github上看到修改:
更多功能参考:http://www.cnblogs.com/schaepher/p/5561193.html