欢迎各位兄弟 发布技术文章
这里的技术是共享的
之前一直想一篇这样的东西,因为最初接触时,我也认真看了廖雪峰的教程,但是似乎我觉得讲得有点多,而且还是会给我带来很多多余且重复的操作负担,所以我希望能压缩一下它在我工作中的成本,但是搜索了一下并没有找到满意的教程,新的一年自己梳理一下自己的经验。
可能男生们大神比较多,觉得Git是如此简单,便已觉得命令行操作就是SO EASY,甚至或许有看不起可视化这样面对低端用户的心理,好的,那您就当我是水货可以右上角了。
我一直觉得类似GIT这样的东西,他对于我而言只是个不完全必须的工具,我并不想成为使用他的专家,类似的东西,今天有GIT,明天可能有GAT,或者GAY?所以快速地掌握它我需要的重要日常操作,最好是10分钟,那就好了,如果你有类似的想法,好吧,那不要废话了,咱们赶紧开始。
(全文限windows系统。)
何为GIT?
权限校验
首先,您的数据保存在远端服务器一份,服务器需要对您的身份识别。一段RSA加密字符串。
启动GUI,菜单-帮助,【Step1-创建密钥】Generate SSH KEY
【Step2-添加密钥】去你的代码托管服务器,你的账号设置中,添加它。
比如在Github中的地址,title随意,比如你可以用Home,company等作为标识来区别。
Gitlab中的演示
账号保存
如果不做设置的话,每次提交的时候,都会询问你填写密码。于是我们先来把这个设置好。
【Step3.1-添加环境变量】
我的电脑 - 属性 - 高级系统设置 - 环境变量 - 新建变量
变量名HOME,变量值%USERPROFILE%
【Step3.2-创建账号文件】
开始 - 运行 中打开%Home%,即windows的管理员账号文件夹。
新建一个名为"_netrc"的文件,填写你要保存的服务器地址及账号密码,保存。
操作流程
如果你用过SVN的话就会大致了解操作流程,如果没有也没关系。
初始化(Git init)
顾名思义,就是新建一个项目,跟你用PS新建一张画布一样。在你新建好的文件夹中右键创建即可,若点击Git bash则以此目录作为当前目录进入命令行状态。
添加(Git add)
添加并不是提交代码到远程Git库,Git也并不会你修改了代码它自动帮你保存你修改的每一个过程。你修改了很多文件,但未必所有的修改,最终打算提交上去,那么哪些是你打算提交的,你可以添加进来待会提交,叫做缓存改动。很简单,比如本地电脑上我有整个项目完整的东东,甚至包含了账号密码的一些文件,但是我只是ADD除账号密码之外的文件,并不缓存账号密码文件的改动。不被ADD它就不会参与后续的操作。通常我都会直接全部缓存,它会自动寻找所有有改动的文件,而不需要提交的文件放在忽略的文件夹中。(关于忽略下面我们就会说到)
忽略(.gitignore)
但实际上大部分我们的文件都是一起提交的,并不会逐一去甄选,又或者类似PSD这样的大源文件以及并不作为产品最终展示的过渡文件,我们可以统一放在临时文件夹中,并忽略此文件夹。
提交(Git commit)
提交则代表此前被添加ADD的文件已确认被提交到Git库了。需要注意的是,如果你改变代码的缩进(尽管没有修改内容),默认状态下会被识别为整个代码全部变更。提交的时候是要求必须要写备注的。
上传(Git push)
顾名思义,上传则是上至远端服务器了,小伙伴们可以看到咱们的渣渣代码了(好羞涩。
获取远程代码(Git remote/fetch)
比如你在公司做好的东东,今夜难眠十分亢奋,回家准备继续搬砖,那咱们就在家里的电脑上,同上进行好各种安装配置账号,先把公司做好的东东嫩下来(不过公司是内网不可以,但是假如是Github上是可以的)。又或者和小伙伴一起开发个啥,你也要先fetch他的下来。至于怎么操作,下面上图。现在你只要知道,大大们下齿全露刷牙表情对你口口念念的fetch是个啥子~
先来设置与远程地址的关联,Git remote:
填写SSH地址与项目名。下面有3个选项:
第一个:立刻获取最新改动(所以如果是本地克隆远程一个项目,也可以这样操作)。
第二个:本地新建的项目,初始化远程仓库并发布过去。
第三个:什么也不做。
在项目的进行过程中,获取仓库的最新改动Git fetch
选择从远程仓库哪个分支中获取更新,如果没有则只有主支。
提示成功则改动的已经被存放到临时区了,你一会还需要进行合并操作,如果没有任何改动,则列表中是空的,比如:
合并(Git merge)
请注意啦,不管你本地有没有代码,fetch之后呢,是都要merge的,也就是说,fetch下来后,大大的代码还在一个小黑屋里,我们需要把它装到自己兜里。
选择合并 - 本地合并,然后选择本地的分支(如果你没有创建分支,则只有1个主支master)
冲突处理(Conflict)
合并的过程中可能会出现一些红色的文件与一堆叹号,这时候慌慌张张的点啥它都不管用,不用担心,不是程序坏了,只是有冲突的文件,例如A童鞋写了width:1180px,你写了width:auto。那到底用你们谁的呢。
在GUI界面正文区,正文区右键可以选择,Use local version(使用本地版本)或Use remote version(使用远程版本),到底用你的还是小伙伴的?或者你也可以自己再整合。
其他还有分支和一些高级功能,如果需要了解可以自己再摸索摸索,以上的操作已经可以满足简单的开发需求了。
总结
1.先进行安装,密钥添加,账号等一次性操作。
2.操作流程:
是不是觉得so easy了呢,赶紧have a try!
来源:http://www.cnblogs.com/iruxu/p/gitgui.html
来自 http://www.runoob.com/w3cnote/git-gui-window.html
来自 http://www.2cto.com/kf/201607/528455.html
现在很多都有Git来托管项目或者来查找资料,但是看起来操作不是很方便,现在由于win下可以直接使用git gui,让使用git变得方便,当然这只是针对日常简单的使用,如果想详细的使用,可以去参考廖学峰写的教程
http://pan.baidu.com/s/1b8mC3s
1.选择下载的安装包
2.安装步骤省略,直接下一步即可。
出现下面的图片安装成功
1.在本地新建一个文件夹test,选中后点击右键,选择Git GUI Here
出现下图,选择第二个,克隆已经存在的仓库
2.填写Source Location(源地址)和Target Directory
3.完成克隆
点击上图的clone后,会提示下输入你github的用户名和密码,出现下面的界面,克隆完成。你可以看看你本地克隆的文件。
1.修改属性配置-改为utf-8
2.获取改动文件之后,选择Stage Changed.我在本地添加了一个1.md文件
3.选择Stage Changed,在新弹窗中选择是
4.然后点击 commit,再点击push,输入用户名和密码,就提交到远程仓库了。下图是远程仓库,就看到刚刚提交的内容
1.服务端重置项目后,把本地文件直接push,或修改本地文件,待扫描到有文件改动时在提交 同样也会出错,这是由于git本地与服务器端文件不一致产生冲突导致的。
2.遇到这种情况需要先从远程仓库拉取一下文件,解决下合并冲突的问题再push
1.获取仓库的最新改动Git fetch。选择Remote->Fetch from-origin,同样需要输入项目的用户名和密码
成功后显示2.解决一下文件冲突问题
菜单->Merge->Local Merge,在Merge弹窗中选择Merge按钮,成功后会有Success弹窗出现。
3.如果合并之后检测到文件有冲突,是会提示Command Failed失败的,并且Git Gui是会获取到冲突文件,对于冲突文件的解决,可以右键选择使用远程版本还是本地版本,并且本地已经被打开的话,是会提示是否overwritten.按照此方法挨个解决下冲突文件即可。
初始化(Git init)
顾名思义,就是新建一个项目,跟你用PS新建一张画布一样。在你新建好的文件夹中右键创建即可,若点击Git bash则以此目录作为当前目录进入命令行状态。
添加(Git add)
添加并不是提交代码到远程Git库,Git也并不会你修改了代码它自动帮你保存你修改的每一个过程。你修改了很多文件,但未必所有的修改,最终打算提交上去,那么哪些是你打算提交的,你可以添加进来待会提交,叫做缓存改动。很简单,比如本地电脑上我有整个项目完整的东东,甚至包含了账号密码的一些文件,但是我只是ADD除账号密码之外的文件,并不缓存账号密码文件的改动。不被ADD它就不会参与后续的操作。通常我都会直接全部缓存,它会自动寻找所有有改动的文件,而不需要提交的文件放在忽略的文件夹中。(关于忽略下面我们就会说到)
忽略(.gitignore)
但实际上大部分我们的文件都是一起提交的,并不会逐一去甄选,又或者类似PSD这样的大源文件以及并不作为产品最终展示的过渡文件,我们可以统一放在临时文件夹中,并忽略此文件夹。
提交(Git commit)
提交则代表此前被添加ADD的文件已确认被提交到Git库了。需要注意的是,如果你改变代码的缩进(尽管没有修改内容),默认状态下会被识别为整个代码全部变更。**提交的时候是要求必须要写备注的。**
上传(Git push)
顾名思义,上传则是上至远端服务器了,小伙伴们可以看到咱们的渣渣代码了(好羞涩。)
获取远程代码(Git remote/fetch)
比如你在公司做好的东东,今夜难眠十分亢奋,回家准备继续搬砖,那咱们就在家里的电脑上,同上进行好各种安装配置账号,先把公司做好的东东嫩下来(不过公司是内网不可以,但是假如是Github上是可以的)。又或者和小伙伴一起开发个啥,你也要先fetch他的下来。至于怎么操作,下面上图。现在你只要知道, 来,跟我念,fetch~~(我怕你们脑补不出来……)
**先来设置与远程地址的关联,Git remote**
填写SSH地址与项目名。下面有3个选项: 第一个:立刻获取最新改动(所以如果是本地克隆远程一个项目,也可以这样操作)。 第二个:本地新建的项目,初始化远程仓库并发布过去。 第三个:什么也不做。
**在项目的进行过程中,获取仓库的最新改动Git fetch**
选择从远程仓库哪个分支中获取更新,如果没有则只有主支。
提示成功则改动的已经被存放到临时区了,你一会还需要进行合并操作,如果没有任何改动,则列表中是空的,比如:
合并(Git merge) :
请注意啦,不管你本地有没有代码,fetch之后呢,是都要merge的,也就是说,fetch下来后,大大的代码还在一个小黑屋里,我们需要把它装到自己兜里。
选择合并 - 本地合并,然后选择本地的分支(如果你没有创建分支,则只有1个
冲突处理(Conflict) :合并的过程中可能会出现一些红色的文件与一堆叹号,这时候慌慌张张的点啥它都不管用,不用担心,不是程序坏了,只是有冲突的文件,例如A童鞋写了width:1180px,你写了width:auto。那到底用你们谁的呢。
在GUI界面正文区,**正文区右键**可以选择,Use local version(使用本地版本)或Use remote version(使用远程版本),到底用你的还是小伙伴的?或者你也可以自己再整合。
其他还有分支和一些高级功能,如果需要了解可以自己再摸索摸索,以上的操作已经可以满足简单的开发需求了。
GIT学习笔记
1、git是一个版本控制软件,与svn类似,特点是分布式管理,不需要中间总的服务器,可以增加很多分支。
2、windows下的git叫msysgit,下载地址https://git-for-windows.github.io/或者https://git-scm.com/download/win
3、git只是终端操作,可以使用一个图形化管理界面,有了图像化界面TortoiseGit,可以像SVN一样标识出哪个文件夹是用来同步的,哪些是需要上传的。下载地址https://tortoisegit.org/
4、git需要一个仓库来放项目,这个仓库可以放在某一个任何一个安装了git的电脑上。也可以使用网上的仓库。
5、网上的git仓库比较好的是github。
6、一般项目会在一台服务器上做一个仓库,其他人下载,并实现分支。
7、每次看github上的内容都要登陆了github,可以下载一个github的桌面版。
8、git需要如果需要连接到github的仓库,需要注册github账户。
1、 A、git Bash Here可以从当前文件夹打开git命令行界面
B、git GUI Here 可以打开图形界面
2、A、use git from git bash only只能从git bash里面使用git命令,即不能在cmd命令行中使用,应为这个选项不会把git命令加入到环境变量中。
B、user git from the widowscommand prompt在cmd命令行中使用git命令,可以在git bash和cmd中同时使用git命令,会自动在增加环境变量
C、user git and optionalunix tools from the windows command prompt在第二个选项的基础上增加了unix系统中的一些工具。
3、因为GIT是用C语言写的,所以服务器里面都是按照UNIX系统格式保存的。所以客户端再提交和下载的时候,需要对文件进行格式的转换。
A、checkoutwindows-style,commit unix-style line endings按照windows系统格式来下载,按照unix系统格式去上传,这种配置应用在跨平台系统整合代码时,windows系统需要的配置。完后默认配置文件core.autocrlf中会进行修改为true。
B、 checkout as-is,commitunix-style line endings按照它原本的格式直接下载,按照unix系统格式去上传,这种配置应用在跨平台系统整合代码时,unix系统需要的配置。完后默认配置文件core.autocrlf中会进行修改为input。
C、 checkout as-is ,commit a-is 按照它原本的格式直接下载,按照原本的格式直接上传。这种配置不能应用在跨平台系统上面。完后默认配置文件core.autocrlf中会进行修改为false。
4、设置GIT Bash终端仿真器的样式。
A、use mintty是一种仿真样式,比cmd窗口好在可以调节大小,字体样式啥的。
B、use windows defaultconsole window使用windows系统自带的cmd窗口打开git bash。
5、A、enable file system caching允许文件缓存。即在提交文件的时候,可以先将文件放到缓存区,然后再统一提交。
B、enable git credentialmanager允许git许可证管理(会检测并下载.netframework v4.5)
1、右键点击Git GUI Here。
2、若当前文件夹是仓库,则会直接打开仓库管理界面。
若当前页面不是仓库,则显示选项:
A、create new repository新建仓库
B、clone existing repository下载仓库
C、open existing repository打开仓库
3、新建仓库(create new repository)
4、克隆仓库(clone existing repository)
1)下载gitHub中的文件,要先复制文件的路径
2)点击clone existing repository,写好配置,source location数据源地址,即gitHub上到项目地址。
Target ddirectory目标路径,即本地的文件夹地址。recursivelyclone submodules too指在下载的同时,把改项目下的子模块也下载下来。
3)开始下载
4)下载完成,打开主页面
5、git配置
1)repository仓库
Exploreworking copy打开工作空间
Gitbash打开git命令行界面
Browsemaster’s files查看主干文件
Browse Branch files查看分支文件
Visualize master’s History 查看主干历史记录
VisualizeAll Branch History查看所有分支历史记录
CreateDesktop icon 设立桌面快捷方式
2)edit标记——option选项
左侧UserName是当前仓库用户名,右侧是全局用户名。
左侧Email Address是当前仓库邮箱,右侧是全局邮箱。
邮箱和仓库必须填写,否则在点击sing-off时会提示请告诉我你是谁。
3)Branch分支
Create创建分支
有了分支后,提交时可以通过分支提交
6、文件的上传下载
1)修改文件夹中的内容
2)在GUI中查看
3)rescan刷新列表,stage changed改变状态,sign off检查完成,commit提交到缓存区,push上传到服务器。
依次点击stage changed,sign off,commit,push,将文件上传到服务器。
4)如果是直接从服务器下载的项目,则会直接上传
5)如果是新建的仓库,则在提交时需要填写服务器仓库的地址。如果是gitHub的仓库,先需要在gitHub上新建一个仓库。并把地址复制给git提交时的输入框中。
6)上传成功
1、 安装完软件后,使用git version查看git版本,若可以使用,则表示安装成功。若不可以,则查看环境变量是否配置好(若默认安装,则会自动进行配置)。
GitHub提供一个给个人或者项目建站的功能。
说明文档在https://pages.github.com/
1、说明书介绍:
1)给自己建站还是给项目建站
2)在gitHub中,新建一个仓库,的名字必须是自己的gitHub用户名,后面加.github.io
3)使用什么操作git。Git自带的终端,gitHub的windows端,gitHub的msc端,我不知道。
4)在cmd终端或git bash中通过命令下载这个仓库
5)在仓库中写index.html,然后把index.html上传到github
6)浏览器访问你的名字.github.io就能到这个index.html页面。
图形界面GUI:有平台限制,目前仅支持Windows系统,Linux(Unix)都是命令行模式,并且图形界面每次提交好像Display显示文件数有限制(如:最大显示20000个文件)
命令行Command:没有平台限制,Windows、Linux(Unix、Mac OS X)下都支持,通过 gid add dir/files 添加文件,没有文件数限制
下面详细介绍 Git 管理和操作的两个方式:
1、图形界面GUI
首先,下载Windows下的Git图形界面工具:msysgit 或 官方下载
接着,安装 msysgit ,如下载最新的 Git-1.7.10-preview20120409.exe 后安装,操作方式有Git GUI 和 Git Bash两种,默认为 Gui Bash Only
然后,安装完后,在开始 —> 所有程序 —> Git 中,有 Git Bash 和 Git Gui 两个图标,点击启动 Git Gui 界面如下:
可以创建新的版本库(本地)、克隆已有版本库(远程)、打开已有版本库(本地或远程)
例如:克隆已有的版本库(远程),如 克隆下载 linux-kernel-source 步骤:
a、 点击“克隆已有版本库”,依次输入远程版本库(xxx)和本地目录(xxx),如下图
2、命令行Command
a、Git 远程下载
git clone git://git.kernel.org/pub/scm/ project_path
例如:下载 linux-kernel-source,Git 命令如下
git clone https://code.google.com/p/linux-kernel-source/ /E/Fruit/code_google/linux-kernel-tmp
例如:下载 Linux 内核 git.kernel.org
git clone git://git.kernel.org/pub/scm/ /home/homer/Linux-kernel-3.3.4
b、 Git 本地上传
添加新文件:git add dir/files
提交文件:git commit
上传文件:git push
Linux git命令参数及用法详解 http://www.linuxidc.com/Linux/2012-01/51205.htm
Fedora通过Http Proxy下载Git http://www.linuxidc.com/Linux/2009-12/23170.htm
在Ubuntu Server上安装Git http://www.linuxidc.com/Linux/2009-06/20421.htm
服务器端Git仓库的创建(Ubuntu) http://www.linuxidc.com/Linux/2011-02/32542.htm
Linux下Git简单使用教程(以Android为例) http://www.linuxidc.com/Linux/2010-11/29883.htm
Git权威指南 PDF高清中文版 http://www.linuxidc.com/Linux/2013-10/91053.htm
本文永久更新链接地址:http://www.linuxidc.com/Linux/2014-09/10729.htm
来自 http://www.linuxidc.com/Linux/2014-09/107298.htm
Git是一个分布式版本控制软件,原来是linux内核开发者林纳斯·托瓦兹(Linus Torvalds)为了更好地管理linux内核开发而创立的。但Git也同样可以用于其它需要版本控制的场合。
如果不太明白上面的一段话,可以参考:
http://zh.wikipedia.org/wiki/Git
http://zh.wikipedia.org/wiki/%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6
1、Git的安装
从http://git-scm.com/download/win 下载,安装选择默认,一路next。
注:如果是非windows系统,请访问http://git-scm.com下载。
2、Git的初始化
Git安装好之后,随便在一个文件下点右键,会发现多了三个菜单"Git Init Here"、"Git Gui"、"Git Bash",如下图。
刚开始,我们选择"Git Bash",会出现下面的对话框:
第一步,我们要设置Git的使用者信息,就像使用Word写文章,设置作者和单位一样,这里设置一下用户名和邮箱,输入如下代码:
git config --global user.name "YourName"
git config --global user.email "YourEmail"
注:把"YourName"、"YourEmail"替换成自己的。
3、Git结构
图1
Git一共分三个区,工作区(WorkSpace)、暂存区(Stage)和版本库(Repository)。另外,还有服务器(Server)端,不在本文讨论范围之内。
下面举一个例子说明,假设有这样一个项目,目录在E:\git\project1下面。
1、项目的初始化
在E:\git\project1下点右键,选择"Git Init Here"。
此时会在文件夹多一个".git"的文件夹(也可能看不到,这个文件夹默认是隐藏的,不过没关系)。当你再点击右键的时候,如果出现下面的菜单,就表示此项目建立Git仓库成功了。
2、添加、修改文件
上一步完成之后,你就可以把需要进行版本控制的文件、文档拷过来了。比如,我添加一个test.txt文件,里面的内容为"你好Git!",然后保存、关闭。
然后在文件夹下右键,选择Git Gui
会发现,我们刚才添加的test.txt文件没有缓存,存在于工作区,没有提交到暂存区。只要选择"缓存改动"就可以了。如果出现提示,选择"Yes"。
此时,test.txt就跑到"已缓存的改动"里去了。(图1红色区域)
在"初始的提交描述"里输入此次修改的信息,然后点击"提交",就提交到版本库了(图1绿色区域)。
提交完了之后,是看不到任何文件的,说明图1中的蓝色、红色、绿色三个区域的文件都是一模一样的。
如果想要看到修改记录,应该怎么办呢?
把这个Git Gui关了,再点右键Git History,如下图。
红色框框里显示的是修改的历史,当前只有一条。
蓝色框框里显示的是有哪些文件被修改了(红色框框里对应的修改历史)。
黄色框框里显示的是文件哪些内容被修改了(蓝色框框里对应的文件)。
下面,我们再修改一下test.txt,再提交。我在test.txt里添加一句话"今天很热"。
然后重复下面步骤:
1)打开Git Gui
2)缓存改动
3)添加描述内容
4)提交
再打开Git History
红色区域多了一条"今天很热",是我提交的描述。
蓝色区域还是test.txt文件。
黄色区域显示了修改记录,多了一条"今天很热!"。
注:黄色区域里,带"-"号的表示这一行被删除了,带"+"号的表示这一行是新添加的。
3、时间倒流
为了找会某一次提交的修改,我们可以从下面开始。假设又提交了几次,如下图。
我们想要回到"今天很热"这个时候的test.txt文件。
为了在寻找的时候方便,我们可以给某一次修改记录加上标签,如果是软件项目,比如v0.1 等等。
在"今天很热"上面点右键Create tag,然后输入标签内容,就比如v0.1吧。
加完之后,再看黄色区域:
"今天很热"前面多了一个"v0.1"的标签。
如果我们要回到v0.1这个版本,在上面右键,选择Reset master branch to here
此时会出来提示:
注意看说明:
Soft模式是当前工作区和暂存区都不动,只是把仓库里的版本跟v0.1的同步。
Mixed模式是当前工作区不动,暂存区和仓库里的版本跟v0.1的同步。
Hard模式是工作区、暂存区、仓库全部回到v0.1的历史版本。(这一步比较危险,你当前工作区域里修改的东西,如果没有提交,全部会丢失)
建议是用Mixed模式,没有错,给你后悔的机会。
为了回到过去,还能再回到现在,我们给当前的版本也加上标签,如v0.2。
然后,我们选择了一条"危险"的操作,选择了"Hard"模式。(因为我当前工作区域的所有文件都已经提交了,所以可以这么演示)。如下图:
此时,master指向了v0.1的地方,我们再打开test.txt文档。
又回到了最初添加的两条。
那么,再回到过去,在v0.2上右键Reset master branch to here,再选择Hard模式。Master又飞过去了!
再打开test.txt
哈哈,是不是有一种穿越时空感觉?
有人要问?如果我想从v0.1的地方重新开始一个版本,跟v0.2不是原来一条线,而我又不想动v0.2,那怎么办?
好办!
在v0.1上右键,Create new branch
新的branch(分支)的名字,比如weather,是一条关于天气的分支。如下图:
但你会发现,此时test.txt并没有发生变化。
你再到文件夹下,右键Git branch,你发现了什么?
你在master和weather之间切换,再看看test.txt,有没有发现文件变化?
好了,那我们切换到weather后,再修改test.txt。随便提交两次。
再打开Git History,发现了什么?
原来的master和v0.2都不见了,现在都是从v0.1开始的提交。
再把Git Branch切换到master,打开Git History
v0.2和master都还在!
现在明白了吗?branch就是分支的意思,从原来v0.1分出去之后,另一条线,跟master这一条一点关系都没有,除了起点v0.1是相同的。
4、删除文件
比如我在文件夹下添加了一个new.txt,提交了之后,这个文件我又觉得是多余的,想删掉怎么办?
直接删!
删完了再打开Git Gui
跟添加、修改文件一样,缓存改动,提交就行了。
最重要一点:
所有的记录都是保存在项目文件夹下的.git隐藏文件夹里的,如果把.git文件夹删了,所有记录都没了!
来自 http://www.tuicool.com/articles/v22iAr