1、windows客户端安装
下载地址:http://msysgit.github.io/。
全部默认安装即可。
安装完成后,会在系统右键菜单中集成等菜单选项,说明安装成功。
2、配置git用户名及邮箱地址
这个就相当于一个用户的标识信息,表示创建仓库的所有者信息。
3、创建版本库
新建一个空目录作为你的仓库。比如:。
在目录中右键选择,输入,初始化当前目录作为你的仓库。
操作完成后,会在当前目录下创建一个的文件夹,默认是隐藏的,不要手动操作这个目录下的任何文件,它是git用来跟踪版本库的。
3.1、 添加文件到版本库
使用将工作区的文件readme.txt(文件必须存在)添加到暂存区(staged状态,commit前必须的操作,否则无法commit。git提交(commit)的时候是将暂存区的文件全部一次性提交到仓库永久保存的,即一个新的主分支产生了)
commit 之前可以使用查看当前工作区副本与暂存区之间的差别
确定后,使用提交到版本库
使用查看当前版本库工作目录中文件的状态。
文件状态有已提交(committed),已修改(modified),已暂存(staged),还有没有版本控制的(untracked)。
平时开发的时候,肯定有很多临时文件(文件夹)是不需要提交到版本库的。但每次时会显示很多Untracked files,git提供一种方案来忽略显示这些文件,就是在目录中创建一个文件,将你不想显示的文件类型都罗列出来。git已经提供了常用类型的配置文件,你不用自己创建,只需下载后手动增加修改即可,具体参考https://github.com/github/gitignore。
Remarks:commit 前必须先 add ,这样 git 才知道要 commit 什么。
4、查看提交日志
使用可以查看提交的详细日志,如果嫌太繁杂,可以使用显示精简的日志。
前面的一大串数字字母表示提交的各个版本标识,是通过SHA1计算出来的。
括 里的HEAD表示这是最新的提交版本。
5、版本回退
现在最新提交的版本是c77349(上面日志中显示的版本标识的前6位),如果想回退到注释为的版本。使用
这样就回退到指定的版本了。
命令中的版本标识可以任意取前几位,但一定要唯一确定。
再使用查看一下提交日志。
发现没,已经看不到注释为这条记录了,最新的版本也跟着变成了这个版本了。(与人类的观念一致)
如此,又有一个问题,你可能又后悔了,想重新恢复到注释为的版本,当然你可以在窗口记录中找到对应的版本id来恢复。
但是,可能你想这么做的时候已经是第二天了,电脑都关机了,哪里还知道这个id。没关系,
git也提供了相应的功能。输入即可。
它记录了所有的commit操作信息,当然包括对应的版本的id了,这下终于没有后顾之忧了。
6、撤销工作区的修改
假如你又对 readme.txt 文件做了些修改,突然发现这些修改没什么意义,想撤销你的修改,回到没有修改以前的状态。可以使用
如果之前没有将此文件添加到暂存区(add)的话,此文件就会恢复到 HEAD 版本库(最新的版本库)的状态。
如果之前已经添加到暂存区还没有提交的话,此文件就会恢复到添加到暂存区时的状态。
如果已经添加到暂存区,可是还是想恢复到提交 HEAD 版本时的状态的话,可以使用命令
,将某个文件单独回退到最新提交的状态(HEAD 表示最新提交的那个版本)。同时,这个命令会恢复暂存区中此文件的状态。
7、删除文件并提交及误删处理
如果想从版本库中删除 readme.txt 文件,先在工作目录中删除此文件,这样 git 就会检测到,然后输入命令,git 会从暂存区中删除此文件,然后正常提交即可。
这样文件就从版本库中真正的删除了。
如果是本地文件被误删了,可以使用命令恢复到最近一次或操作的状态。
8、远程仓库操作
以上介绍的所有操作都是针对本地仓库。git 还可以对远程仓库进行克隆(将远程仓库的下载一份到本地,作为一个独立的分支),推送(将自己的修改提交到远程仓库)以及拉取(检出别人对仓库做的提交)。
下面分步介绍:
8.1、设置SSH Key(以 github 为例)
为了使与远程仓库通信更加安全,git 使用了 SSH 对通信加密。
所以需要生成 SSH 通信密钥。
- 在中输入命令,一路回车,忽略存储路径和密码的设置。你就会在用户目录中发现两个文件,id_rsa(私钥)和 id_rsa.pub(公钥)。
- 私钥文件不要动。在 github.com 中依次打开 Settings-SSH and GPG keys-SSH keys,单机,在Title中输入提示信息,将id_rsa.pub的内容复制到Key中,保存。
8.2、克隆远程仓库
git是分布式版本控制系统,我们可以建立一个公开的仓库,可以让所有人都能从这个仓库克隆作为他们自己的分支,来帮助开源项目维护。
还是以github为例,首先在github上创建一个项目,叫。
我们打开,将目录切换到,输入命令。
远程仓库地址可以从github上的gittest仓库信息中看到。这样在github上创建的远程仓库就被克隆到本地了,在当前目录中可以看到多了一个目录,仓库中的所有文件也同步到本地了。
-
查看远程仓库信息
-
推送分支
origin 为远程仓库在本地默认的名字(就是对应远程仓库的地址),master 为本地分支名,此处为主分支(也是推送到远程仓库的主分支上)。一般情况需保持主分支与远程仓库同步就行。
如果多人都在同一个分支下工作的话,当一个人push后,另外一个人再push的话就会失败,必须先将分支上最新的代码pull下来,解决冲突后,再push。 -
抓取分支
pull之前必须设置本地分支与远程分支的对应关系,可以使用来将本地分支dev与远程仓库
分支dev的关系关联起来。
8.3、将本地仓库关联到远程仓库
-
我们还是先要在github上创建一个新的仓库,使用命令,就将本地仓库与远程仓库之间建立了关联。
origin 为远程仓库在本地默认的名字。
-
使用,将本地主分支与远程仓库主分支建立远程关联。
-
使用拉取远程仓库代码。
-
使用来推送本地代码到远程仓库。
最后的master表示要推送的本地分支名。
8.4、同步github账户fork的代码
-
切换到本地主分支
-
推送到自己的远程仓库
9、分支操作
平时开发的时候,新开一个项目,但又不想把还没完成的代码提交到主分支上。这时我们可以创建一个新的分支,来提交我们的代码,这样不用担心代码因未提交可能丢失,也不会影响主分支的功能。等所有功能完成后,还可将新建的分支代码合并到主分支上,并删除新建的分支。
-
新建分支 dev
-
切换分支(切换到dev分支)
1、2 两步可用直接达到。
如果需要将远程的 dev分支同步到本地 dev分支,需要先使用
设置关联,然后使用
拉取就可以了。 -
查看当前分支
从远程仓库克隆时,默认在本地只能看到主分支,使用创建即可。
使用可以同时查看远程的所有分支。
使用可以同时查看本地和远程的所有分支。
使用就会自动将本地 dev分支推送到远程的 dev分支上。
-
合并分支(将dev分支合并到当前分支)
-
删除分支
是删除本地分支。
如果要删除远程分支的话,使用
如果新建分支后,主分支一直没有提交新的操作,那么合并的时候,基本没有什么顾虑。但是新建分支后,主分支上也在继续开发,那么合并分支的时候,如果两个分支都对同一个文件的相同位置做了不同的修改,就会提示产生冲突,产生冲突后,可以用查看冲突文件,git会在文件中以与与来标注不同分支修改的内容,我们必须手动去掉这些标注来解决冲突后再提交就可以了。冲突解决后才能删除新建的分支。
- 查看分支合并图
如果当前代码已经写了一点,但不想提交到分支上,临时想切换到另一个分支分析点东西,可以使用储存工作现场。
- 保存工作现场
- 查看保存的工作现场
- 恢复工作现场(会自动删除保存的工作现场记录)
- 恢复指定的工作现场(不会自动删除保存的工作现场记录)
- 删除保存的工作现场记录
10、标签操作
标签相当于仓库的一个快照。不过标签是针对当前分支的快照。
-
创建标签
(v1.0为标签名)标签默认是打在最新的提交的那个时间点的,如果在以前的某次提交忘打的话,可以使用查看那次的提交标识,使用(3628164为版本标识)。
可以使用-a 指定标签名,-m 指定标签说明文字。
如,这样的标签称为“附注标签“,与“轻量标签”对应。 -
查看所有标签
-
查看某个标签信息
-
删除标签
-
切换到标签状态
-
推送标签
通常的时候是不会将标签也提交到git服务器上的,需要另外手动操作。
,
如果使用的github,可以去 站看看有没有推送成功。使用可以将本地所有未提交的标签一次性提交到git服务器。
-
删除远程服务器标签
先删除本地标签:。
再提交到远程:,为固定格式,后面跟标签名。
11、界面操作软件
如果使用过TortoiseSVN,比较习惯界面操作的话,可以使用TortoiseGit,TortoiseGit是开源的客户端,只支持Windows。
TortoiseGit 只是一个界面程序壳,运行必须依赖核心Git客户端,比如msysgit。
下载地址:https://download.tortoisegit.org/tgit/。
12、设置git代理
如果 url被墙的话,就需要设置 git代理了。
-
设置 git代理
localhost:1080为代理服务器 ip、端口。
如果需要用户名和密码: -
取消 git代理
文章知识点与官方知识档案匹配,可进一步学习相关知识Git技能树首页概览2890 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!