Git是世界上最先进的分布式版本控制系统,可以查看历史改动,版本回退等。
1、Git 安装
在windows安装Git,直接在Git官网下载安装程序,默认安装即可,安装后在开始菜单找到"Git"->“Git Bash”,弹出一个类似命令窗口的东西,说明git安装成功.
安装完成后,还需进行最后一步设置,在命令行输入:
$ git config --global user.name "your name"
$ git config --global user.email "youremail@example.com"
2、创建版本库
首先打开“Git bash”窗口,移动到相关的目录,然后执行
$ git init
执行完后将在目录下生成一个.git目录,是Git用来跟踪管理版本库的,不能随便删除,否则就把Git库破坏了。
3、添加文件到仓库
在目录下任意创建一个git-test.txt文件,随意输入一些内容,然后执行以下git add命令将文件添加到仓库的暂存区,如果改动的文件没有通过 git add 提交到暂存区,那么该次修改即使 commit 也不会被保存。
$ git add git-test.txt
执行上述命令,没有任何显示,说明文件添加成功,可以一次性添加多个文件。
4、提交文件到仓库
利用以下git commit命令将暂存区的所有文件提交到仓库
$ git commit -m "add the git-test.txt file"
git commit 后面的 -m 是本次提交的说明,可以输入任意内容,便于从历史记录里查找改动记录,利用 **git status ** 命令可以查看当前仓库的状态,是否有已改动未添加的文件,是否有已添加未提交的文件等。
5、版本回退
输入 git log 可以查看历史提交记录,按q可以提出该命令
wt@mi-tun MINGW64 /e/git-test (master)
$ git log
commit 1347001d46e232e44a0eebb3a78a4cfc2d52cc3a (HEAD -> master)
Author: wt <wang-tun@qq.com>
Date: Mon Jul 8 09:06:00 2019 +0800
back
commit e33948e57d44a4fce55ba0e5332bc54bb563d09e
Author: wt <wang-tun@qq.com>
Date: Mon Jul 8 08:57:26 2019 +0800
git notes
commit ff0bc6c3d91ee0831fc02d84d61292bdf75280f8
Author: wt <wang-tun@qq.com>
Date: Mon Jul 8 08:52:26 2019 +0800
today
commit cf4d0a34e728024c4718ace2225cbd423532f537
Author: wt <wang-tun@qq.com>
Date: Mon Jul 8 08:45:55 2019 +0800
test
:...skipping...
commit 1347001d46e232e44a0eebb3a78a4cfc2d52cc3a (HEAD -> master)
Author: wt <wang-tun@qq.com>
该命令列出了每次提交的作者、时间、commit id 以及提交描述等。
添加 –pretty=oneline 参数后,一次提交只列出一行信息,如
$ git log --pretty=oneline
1347001d46e232e44a0eebb3a78a4cfc2d52cc3a (HEAD -> master) back
e33948e57d44a4fce55ba0e5332bc54bb563d09e git notes
ff0bc6c3d91ee0831fc02d84d61292bdf75280f8 today
cf4d0a34e728024c4718ace2225cbd423532f537 test
8eaeeeec2f054eefbb6600be174fae58f2aa2936 chane git-test.txt
db6588d4d80be6ed3666332bbc904127f33b068a git test
只显示了commit id 和提交描述信息,其中 HEAD 表示当前版本 。
如果要回退到上一版本,可以用 git reset 命令
$ git reset --hard HEAD^
其中 HEAD^ 指上一个版本, HEAD^^ 指上上一个版本,也可以直接输入 commit id 的前几位,直接跳到指定版本,也就是说,只要知道任意某次提交的 commit id ,通过该命令就可以跳到对应的历史版本 。
如果电脑重启了,可以通过以下命令来查看每一次命令的记录,这样就能够找到每次提交的commit id 了。
$ git reflog
1347001 (HEAD -> master) HEAD@{0}: reset: moving to 134700
cf4d0a3 HEAD@{1}: reset: moving to cf4d0
1347001 (HEAD -> master) HEAD@{2}: reset: moving to 134700
ff0bc6c HEAD@{3}: reset: moving to HEAD^
e33948e HEAD@{4}: reset: moving to HEAD^
1347001 (HEAD -> master) HEAD@{5}: commit: back
e33948e HEAD@{6}: commit: git notes
ff0bc6c HEAD@{7}: commit: today
cf4d0a3 HEAD@{8}: commit: test
8eaeeee HEAD@{9}: commit: chane git-test.txt
db6588d HEAD@{10}: commit (initial): git test
以下命令可以撤销修改,使文件回到最近一次 git commit 或 git add 的状态。
$ git checkout -- readme.txt
6、远程仓库
Git 不仅可以在本地管理文件,还可以将其远程托管到 Github 网站。
1)注册 Github 账号
2)在本地创建SSH key
在用户主目录下,看看有没有.ssh目录,如果有再看看有没有 id_rsa 和 id_rsa.pub
这两个文件,如果已经有了,可直接跳到下一步,如果没有,打开Bash ,创建SSH Key
$ ssh-keygen -t rsa -C "wxxx-xxx@qq.com"
执行后一路回车,使用默认值即可,无需设置密码,成功后将生成上述文件。
3)在Github添加SSH key
登陆Github,打开 “Settings” , “SSH and GPG keys” ,“SSH keys” ,"New SSH key "
填上任意title,在key文本框里粘贴 id_rsa.pub 文件的内容。
Github允许添加多个key,可以在多台电脑创建key,并分别添加到 Github,这样每台电脑都可以往github推送了。
注意,在Github上托管的仓库,任何人都可以看到,只有自己能改
如果不想让别人看到,可以交费或者搭建一个自己的Git服务器。
4)在Github创建一个远程仓库
如果在本地创建了一个Git仓库后,又想在Github创建一个Git仓库,并且让这两个仓库进行远程同步,这样Github上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,一举多得。
登陆Github,找到右上角的“+”按钮,点击“New repository”,创建一个新的仓库,在Repostitory name 中填入test ,其他的保持默认设置,点击“Create repository”,就成功地创建了一个新的远程Git仓库,目前这个仓库还是空的,我们可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到该远程仓库;
5)将远程仓库与本地仓库关联
通过git remote add [shortname] [url] 可以在本地添加一个远程仓库,其中shortname是可任意指定的一个名字,用于区别多个远程仓库,url 是远程仓库的url地址,例如
$ git remote add origin git@github.com:zxxxtxx/test.git
可通过git remote 查看当前有哪些远程仓库,会列出每个远程库的名字
$ git remote
origin
加上 -v 选项,可以显示对应的克隆地址
$ git remote -v
origin git@github.com:zxxxtxx/test.git (fetch)
origin git@github.com:zxxxtxx/test.git (push)
下一步,就可以把本地库的所有内容推送到远程库上,执行以下命令将本地库推送到远程仓库
$ git push -u origin master
发生错误error:failed to push some refs to … ,原因在于,远程库与本地库不一致造成的,只要把远程库同步到本地库就可以了,执行以下命令
$ git pull --rebase origin master
该命令的意思是把远程库中的更新合并到本地库中,在执行完该命令后再执行 git push -u origin master,即可成功将本地库推送到远程库中。把本地库推送到远程,用 git push 命令,实际上是把当前分支 master 推送到远程,第一次推送到master分支时,加上 -u ,会把本地的master分支内容推送到远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或拉取时就可以简化命令。
执行上次步骤后,将在远程库中看到与本地库一样的内容,从现在起,只要在本地做了提交,就可以通过命令
$ git push origin master
把本地master分支的最新修改推送到远程Github.
6)从远程库克隆
现在Github创建一个远程库test.git,使用以下命令可将远程库克隆到本地
$ git clone git@github.com:zxxxtxx/test.git