图解Git
- 格式:pdf
- 大小:772.71 KB
- 文档页数:12
GIT 使用手册1、每天早晨到公司后需要更新代码,防止冲突。
2、Git status 可查看项目所有的文件状态。
(图1)3、新增文件: git add . 代码上传所有的新增文件git add 具体的文件或文件目录多个文件一起add可用空格或者文件夹的目录4 、新增及修改后的git commit -m ‘修改原因’保存到本地仓库GUI 操作如下:(图2)5、Git 每次push提交前先更新代码,idea操作如下:6、更新代码:(图3)7、*************************************************如果出现这两种情况(图4、图5)不要点击Merge和Push,直接push到远程分支上,应该重复第5和6的步骤。
*************************************************(图4)(图5)8、消除第7步上述提示后如下操作:(图6)(图7)(图8)注:图8 已消除了图4的Merge提示。
9、其他git 常见操作git log -p -10 查看最近10次提交记录git reset --hard 版本号回退到指定版本号git fetch 获取最新的版本号(远程已创建新分支,本地看不到分支时使用)git branch -a 查看远程分支git branch 查看本地分支git checkout -b 切换分支9、合并分支操作指南:git checkout v1.0 (待合并分支)git checkout v1.2 (目标分支)然后再v1.2的分支基础上执行mergegit merge v1.0如果没有报错,那就直接提交代码git push origin v1.2如果报错,基本是冲突了:你需要去到提示的文件里把git自动标注的版本冲突注释掉,看你具体需要的功能进行删减然后把冲突的文件git add,和commit。
Git图形化⼯具介绍随git分发的默认的图形化⼯具git gui和版本分⽀图形化⼯具gitk。
⼀、GIT GUI主界⾯:各个按钮的意思基本与界⾯⽂字⼀致,与git的命令也差别不⼤。
在了解⾃⼰所做的操作情况下,各个功能点开看下就知道是怎么操作了。
即使不了解,只要不做push操作,所有的操作都在本地,基本也没什么影响。
⼤不了重新下载整个库好了,git下载库的时间确实⽐svn快很多,这也是git优势之⼀。
1.菜单栏:2.⼯作区变更、⽂件差异对⽐:点击⼯作区变更的⽂件,右侧窗⼝会显⽰⽂件差异对⽐。
吐槽下,对⽐的时候显⽰的差异以上下的格式显⽰,差异对⽐的体验⾮常不友好。
3.索引区:使⽤命令git add或点击”stage changed”按钮后,⼯作区变更会添加到该区域。
4.基本操作按钮:stage changed:将⼯作区的所有变更提交到添加到索引区;(其他在菜单栏中都有对应项,介绍菜单栏时⼀并介绍)mit信息输⼊框:⽤于commit时输⼊变更信息,与svn提交时填写的信息⼀样,主要⽅便后续查找或了解该次提交的⽬的。
mit⽅式:创建⼀次新的提交或者修改上⼀次提交。
对应于菜单栏中commit项中,new commit和amend last commit相同。
⼆、GIT GUI菜单栏:repository:git库相关操作,基本意思就是字⾯意思。
1)资源管理器中浏览该Git库⼯作空间⽂件,省去查找路径不断点击⿏标的操作。
2)启动Git bash⼯具(命令⾏⼯具)。
3)查看当前分⽀⽂件状态,不包括未提交的信息。
4)查看某个分⽀的⽂件(弹出框中可选择需要查看的版本、分⽀或标签),跟上⼀条差不多,⽤的⽐较少,可能是没有这⽅⾯的额需求。
5)可视化当前分⽀历史、可视化所有分⽀历史:弹出分⽀操作历史,也就是gitk⼯具,放到gitk⼯具中介绍。
edit:⽤于操作commit时操作信息输⼊,只能操作⽂字输⼊部分,你没有看错。
git小乌龟常见用法Git 小乌龟是一个流行的 Git 客户端工具,提供了一个简单易用的图形用户界面(GUI),用于管理和提交代码更改。
下面是 Git 小乌龟的一些常见用法:1. 打开 Git 小乌龟:在终端或命令提示符中输入 `git gui`,然后按 Enter 键。
2. 添加文件到暂存区:在 Git 小乌龟中,选择要添加的文件,然后点击工具栏上的 "Add" 按钮,或者使用快捷键 Ctrl+A。
3. 查看提交历史:在 Git 小乌龟中,点击工具栏上的 "Log" 按钮,或者使用快捷键 Ctrl+L,可以查看提交历史记录。
4. 创建新的提交:在 Git 小乌龟中,选择要提交的文件,然后点击工具栏上的 "Commit" 按钮,或者使用快捷键 Ctrl+C。
在弹出的对话框中输入提交信息,然后点击 "OK" 按钮。
5. 查看分支:在 Git 小乌龟中,点击工具栏上的 "Branches" 按钮,或者使用快捷键 Ctrl+B,可以查看当前分支列表。
6. 切换分支:在 Git 小乌龟中,选择要切换的分支,然后点击工具栏上的"Checkout" 按钮,或者使用快捷键 Ctrl+O。
7. 合并分支:在 Git 小乌龟中,选择要合并的分支,然后点击工具栏上的"Merge" 按钮,或者使用快捷键 Ctrl+M。
8. 查看差异:在 Git 小乌龟中,选择要比较的文件,然后点击工具栏上的"Diff" 按钮,或者使用快捷键 Ctrl+D,可以查看文件差异。
9. 撤销更改:在 Git 小乌龟中,选择要撤销的文件,然后点击工具栏上的"Discard" 按钮,或者使用快捷键 Ctrl+D,可以撤销文件更改。
10. 保存更改:在 Git 小乌龟中,选择要保存的文件,然后点击工具栏上的"Save" 按钮,或者使用快捷键 Ctrl+S,可以保存文件更改。
git的配置方法如何配置git?git是一个版本控制系统,它可以追踪文件的变化,并允许多人协作开发项目。
在使用git前,我们需要对其进行一些配置,以适应个人或团队的需求。
本文将逐步介绍如何配置git,包括全局配置、项目配置、常用配置项等。
一、全局配置1. 安装git首先,确保已正确安装git。
在终端中输入以下命令,检查git是否已安装:git version如果显示出git版本号,则表示已成功安装git,否则需要先下载和安装。
2. 设置用户名和邮箱接下来,我们需要设置全局的用户名和邮箱,这样在git提交时可以显示正确的信息。
在终端中执行以下命令:git config global "Your Name"git config global user.email "your_email@example"将"Your Name"和"your_email@example"替换为自己的姓名和邮箱。
3. 配置默认编辑器git默认使用vi或vim作为编辑器,如果对于这类编辑器不熟悉,可以选择自己熟悉的编辑器进行配置。
以下是一些常见的编辑器配置示例:# 使用VS Code作为默认编辑器git config global core.editor "code wait"# 使用Sublime Text作为默认编辑器git config global core.editor "subl -n -w"# 使用Atom作为默认编辑器git config global core.editor "atom wait"执行以上命令中的一条即可将相应编辑器设置为默认编辑器。
4. 配置颜色输出git支持颜色输出,可以通过以下命令进行配置:git config global color.ui true将"true"改为"auto"将会根据终端的能力自动显示颜色输出。
1.将本地项目推送到远程仓库gitinit(初始化)gitremote-v(查看已经关联的地址)gitadd.(添加本地仓库)gitcommit-m"第一次提交"(提交说明)gitremoteaddoriginxxx(关联远程仓库)gitpull--rebaseoriginmaster(同步本地与远程仓库)gitpush-uoriginmaster(提交远程仓库)-f:强制推送至远程2.IdeaGit回退到某个历史版本找到要回退的版本号(右击项目-->Git-->ShowHistory-->选中要回退的版本-->CopyRevisionNumber)打开idea的Terminal输入命令gitreset--hard139dcfaa558e3276b30b6b2e5cbbb9c00bbdca96(后面为版本号)3.把修改推到远程服务器gitpush-f-uoriginmaster或者gitpush-f强制同步远程仓库。
4.修改项目关联远程地址方法修改命令gitremoteset-urlorigin<url>手动改去项目中.git文件夹下,编辑config配置文件中url5.Git修改分支的名称需要将分支br_rename_old修改为br_rename_new,执行如下步骤:1、执行命令gitcheckoutbr_rename_old切换到br_rename_old分支,如果已经在这个分支下,可以不执行此步骤2、执行命令gitpulloriginbr_rename_old将代码更新到和远程仓库一致3、执行命令gitbranch-mbr_rename_oldbr_rename_new将本地仓库的br_rename_old的名称修改为br_rename_new4、执行命令gitpush--set-upstreamoriginbr_rename_new将本地分支push 到远程仓库5、执行命令gitpushorigin--deletebr_rename_old将远程分支br_rename_old删除6.Git删除分支1、先切换到别的分支:gitcheckoutxxx2、删除本地分支:gitbranch-dxxx3、如果删除不了可以强制删除,gitbranch-Dxxx4、删除远程分支(慎用):gitpushorigin--deletexxx7.master分支代码复制到新的分支创建新分支:gitbranchdeveloper切换到需要合并的分支:gitcheckoutdeveloper将master分支合并当前分支:gitmergemaster推送至远程仓库:gitpushorigindeveloper8.Git迁移项目到其他代码仓库,且保留分支与提交记录gitclone--baressh://需要迁移的项目地址/项目.gitcd项目.gitgitpush--mirrorssh://其他代码仓库地址/新项目名称.git9.Git相关命令操作查看所有分支(本地+远程)gitbranch-a查看本地分支gitbranch查看远程分支:gitbranch-r创建本地新分支gitbranch<branchName>切换分支gitcheckout<branchName>将本地分支,推送到线上gitpushorigin-u<branchName>合并分支:gitmerge[name]----将名称为[name]的分支与当前分支合并拉取指定分支的代码gitclone-bdevelophttps://gitlab.xxx。
Git使用指南Li Yanruiv0.1,20080728 liyanrui.m2@前言Git是什么非常简单地说,Git是一个快速、可扩展的分布式版本控制系统,它具有极为丰富的命令集,对内部系统提供了高级操作和完全访问。
所谓版本控制系统(Version Control System),从狭义上来说,它是软件项目开发过程中用于储存我们所写的代码所有修订版本的软件,但事实上我们可以将任何对项目有帮助的文档交付版本控制系统进行管理。
2005年,Torvalds开始着手开发Git是为了作为一种过渡方案来替代BitKeeper,后者之前一直是Linux内核开发人员在使用的版本控制工具,当时由于自由软件社区中的许多人觉得BitKeeper的使用许可证并不适合自由软件社区的工作,因此Linus决定着手开发许可证更为自由灵活的版本控制系统。
尽管最初Git的开发是为了辅助Linux内核开发的过程,但是现在很多其他自由软件项目中也使用了Git实现代码版本管理,譬如,项目、许多的项目、Ruby项目等。
为什么使用版本控制系统版本控制系统是为懒人准备的,它让懒人们比那些善于备份文档的勤劳人拥有更干净的文件系统以及更多的可以活着的时间。
本文档主要内容在第1章中讲述如何使用Git管理自己的个人文档,主要是初步熟悉Git的诸多概念及其日常基本命令的使用。
第2章中主要讲述如何基于Git实现多人协作的项目开发模式,以此扭转当前实验室成员在项目研发中各自为政或不能有效沟通的现状。
第3章讲述如何利用Git强大的项目分支管理功能实现良好风格的项目协同开发模式。
第4章为Git使用之FAQ,用于记载在本实验室推广使用Git过程中诸位同学所遇到的一些细节问题。
Contents第1章使用Git管理个人文档11.1何种文档需要保存11.2建立项目仓库11.3关于建立Git仓库的一些细节31.4仓库与工作树41.5在项目中工作41.6查看版本历史51.7撤销与恢复71.8如何使用Git帮助文档81.9总结8第2章基于Git的团队协同开发92.1两个人如何协同92.2如何解决仓库合并冲突102.3三人以至更多人如何协同122.4M2GE的协同开发132.5总结14第3章项目分支管理153.1如何产生项目分支153.2分支的合并163.3M2GE新的协同开发模式163.4总结17第1章使用Git管理个人文档本章讲述如何使用Git管理我们的个人文档,用以展示Git的一些基本功能,并且秉承学以致用、用以促学的精神,引导大家积极地将Git应用于日常学习与工作中的文档备份。
Git基本操作流程技术背景Gitee是⼀款国内的git托管服务,对于国内⽤户较为友好,⽤户可以访问来创建⾃⼰的帐号和项⽬,并托管在Gitee平台上。
既然是git的托管服务,那我们就可以先看看git的⼀些基本⽤法:[dechin@dechin-manjaro ~]$ git --help⽤法:git [--version] [--help] [-C <路径>] [-c <名称>=<取值>][--exec-path[=<路径>]] [--html-path] [--man-path] [--info-path][-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare][--git-dir=<路径>] [--work-tree=<路径>] [--namespace=<名称>]<命令> [<参数>]这些是各种场合常见的 Git 命令:开始⼀个⼯作区(参见:git help tutorial)clone 克隆仓库到⼀个新⽬录init 创建⼀个空的 Git 仓库或重新初始化⼀个已存在的仓库在当前变更上⼯作(参见:git help everyday)add 添加⽂件内容⾄索引mv 移动或重命名⼀个⽂件、⽬录或符号链接restore 恢复⼯作区⽂件rm 从⼯作区和索引中删除⽂件sparse-checkout 初始化及修改稀疏检出检查历史和状态(参见:git help revisions)bisect 通过⼆分查找定位引⼊ bug 的提交diff 显⽰提交之间、提交和⼯作区之间等的差异grep 输出和模式匹配的⾏log 显⽰提交⽇志show 显⽰各种类型的对象status 显⽰⼯作区状态扩展、标记和调校您的历史记录branch 列出、创建或删除分⽀commit 记录变更到仓库merge 合并两个或更多开发历史rebase 在另⼀个分⽀上重新应⽤提交reset 重置当前 HEAD 到指定状态switch 切换分⽀tag 创建、列出、删除或校验⼀个 GPG 签名的标签对象协同(参见:git help workflows)fetch 从另外⼀个仓库下载对象和引⽤pull 获取并整合另外的仓库或⼀个本地分⽀push 更新远程引⽤和相关的对象命令 'git help -a' 和 'git help -g' 显⽰可⽤的⼦命令和⼀些概念帮助。
git使用方法Git是目前最流行的分布式版本控制系统,它是一个开源项目,可轻松实现文件的版本控制、同步和分享。
在这里,我们将简要介绍Git的基本功能,并演示如何使用Git来控制文件的版本控制、同步和分享。
1.Git简介Git是一种开源的、分布式的版本控制系统,可以跟踪文件和提交,并可以在同一张表中跟踪多个版本。
它可以很容易地将文件和文件夹同步到不同的电脑上,并可以跟踪文件的更新、查看历史版本,以及恢复历史版本的内容。
Git的灵活性和简单性使其在软件开发中大受欢迎。
2.Git的安装要使用Git,首先需要在计算机上安装Git。
安装Git的步骤很简单:从Git的官方网站上下载安装包,然后双击安装程序完成安装即可。
3.Git的基本命令Git拥有众多的命令,可以用来完成各种版本控制任务,这里介绍几个常用的基本命令:init:它可以在当前目录中创建一个 Git 仓库,并将当前目录中的文件添加到Git仓库中;clone:可以将远程Git仓库复制到本地;add:可以将本地目录中的文件添加到Git仓库中;commit:可以将本地仓库中的文件提交到Git仓库中,这样Git 仓库中就会有新的版本;push:可以将本地仓库中的文件推送到远程Git仓库中,这样远程Git仓库中也会有新的版本;pull:可以将远程Git仓库中的文件复制到本地仓库中,以便将远程Git仓库中的最新版本复制到本地;log:可以查看Git仓库的历史版本,并可以比较不同版本之间的差异;checkout:可以将Git仓库中的某个版本复制到本地仓库中,以便恢复到某个特定版本。
4.小结Git是一种开源的、分布式的版本控制系统,可以跟踪文件和提交,轻松实现文件的版本控制、同步和分享。
本文介绍了如何安装Git,以及一些常用的基本命令,可以帮助用户快速上手Git并使用它来控制文件的版本控制、同步和分享。
Git知识点汇总设置全局⽤户名git config --global "yourname"设置全局邮箱git config --global user.email "youremail"查看git版本git --version查看git⼯作⽬录情况git status查看⼯作区和版本库⾥⾯最新版本的区别git diff HEAD -- readme.txt提交⽂件⾄缓存区git add file提交⽂件⾄版本库git commit -m "这⾥是注释"回退⾄上⼀个版本git reset --hard HEAD~1回退⾄指定版本git reset --hard f21d35ef8b查看提交历史git log显⽰操作⽇志和版本号git reflog场景说明:每次修改,如果不add到暂存区,那就不会加⼊到commit中git checkout -- readme.txt 让这个⽂件回到最近⼀次git commit或git add时的状态。
场景1:当你改乱了⼯作区某个⽂件的内容,想直接丢弃⼯作区的修改时,⽤命令git checkout -- file。
场景2:当你不但改乱了⼯作区某个⽂件的内容,还添加到了暂存区时,想丢弃修改,分两步,第⼀步⽤命令git reset HEAD file,就回到了场景1,第⼆步按场景1操作。
要关联⼀个远程库,使⽤命令git remote add origin git@server-name:path/repo-name.git;关联后,使⽤命令git push -u origin master第⼀次推送master分⽀的所有内容;此后,每次本地提交后,只要有必要,就可以使⽤命令git push origin master推送最新修改;分布式版本系统的最⼤好处之⼀是在本地⼯作完全不需要考虑远程库的存在,也就是有没有联⽹都可以正常⼯作,⽽SVN在没有联⽹的时候是拒绝⼲活的!当有⽹络的时候,再把本地提交推送⼀下就完成了同步,真是太⽅便了!创建与合并分⽀在版本回退⾥,你已经知道,每次提交,Git都把它们串成⼀条时间线,这条时间线就是⼀个分⽀。
图解Git
来自:/visual-git-guide/index-zh-cn.html
基本用法
上面的四条命令在工作目录、暂存目录(也叫做索引)和仓库之间复制文件。
•git add files把当前文件放入暂存区域。
•git commit给暂存区域生成快照并提交。
•git reset--files用来撤销最后一次git add files,你也可以用git reset撤销所有暂存区域文件。
•git checkout--files把文件从暂存区域复制到工作目录,用来丢弃本地修改。
你可以用git reset-p,git checkout-p,or git add-p进入交互模式。
也可以跳过暂存区域直接从仓库取出文件或者直接提交代码。
•git commit-a相当于运行git add把所有当前目录下的文件加入暂存区域再运行。
git
commit.
•git commit files进行一次包含最后一次提交加上工作目录中文件快照的提交。
并且文件被添加到暂存区域。
•git checkout HEAD--files回滚到复制最后一次提交。
约定
后文中以下面的形式使用图片。
绿色的5位字符表示提交的ID,分别指向父节点。
分支用橘色显示,分别指向特定的提交。
当前分支由附在其上的HEAD标识。
这张图片里显示最后5次提交,ed489是最新提交。
master分支指向此次提交,另一个maint分支指向祖父提交节点。
命令详解
Diff
有许多种方法查看两次提交之间的变动。
下面是一些示例。
Commit
提交时,git用暂存区域的文件创建一个新的提交,并把此时的节点设为父节点。
然后把当前分支指向新的提交节点。
下图中,当前分支是master。
在运行命令之前,master指向ed489,提交后,master 指向新的节点f0cec并以ed489作为父节点。
即便当前分支是某次提交的祖父节点,git会同样操作。
下图中,在master分支的祖父节点maint分支进行一次提交,生成了1800b。
这样,maint分支就不再是master分支的祖父节点。
此时,合并(或者衍合)是必须的。
如果想更改一次提交,使用git commit--amend。
git会使用与当前提交相同的父节点进行一次新提交,旧的提交会被取消。
另一个例子是分离HEAD提交,后文讲。
Checkout
checkout命令通常用来从仓库中取出文件,或者在分支中切换。
checkout命令让git把文件复制到工作目录和暂存区域。
比如git checkout HEAD~foo.c把文件从foo.c提交节点HEAD~(当前提交节点的父节点)复制到工作目录并且生成索引。
注意当前分支没有变化。
分支对应的状态。
如果既没有指定文件名,也没有指定分支名,而是一个标签、远程分支、SHA-1值或者是像master~3类似的东西,就得到一个匿名分支,称作detached HEAD。
这样可以很方便的在历史版本之间互相切
换。
但是,这样的提交是完全不同的,详细的在下面。
HEAD是分离的时候,提交可以正常进行,但是没有更新已命名的分支.。
(可以看作是匿名分支。
)
如果此时切换到别的分支,那么所作的工作会全部丢失。
注意这个命令之后就不存在2eecb了。
如果你想保存当前的状态,可以用这个命令创建一个新的分支:git checkout-b name。
Reset
reset命令把当前分支指向另一个位置,并且有选择的变动工作目录和索引。
也用来在从历史仓库中复制文件到索引,而不动工作目录。
如果不给选项,那么当前分支指向到那个提交。
如果用--hard选项,那么工作目录也更新,如果用--soft
选项,那么都不变。
交,如果用--hard选项,工作目录也同样。
如果给了文件名(或者-p选项),那么工作效果和带文件名的checkout差不多,除了索引被更新。
Merge
merge命令把不同分支合并起来。
合并前,索引必须和当前提交相同。
如果另一个分支是当前提交的祖父节点,那么合并命令将什么也不做。
另一种情况是如果当前提交是另一个分支的祖父节点,就导致fast-forward合并。
指向只是简单的移动,并生成一个新的提交。
否则就是一次真正的合并。
默认把当前提交(ed489如下所示)和另一个提交(33104)以及他们的共同祖父节点(b325c)进行一次三方合并。
结果是先保存当前目录和索引,然后和父节点33104一起做一次新提交。
cherry-pick命令"复制"一个提交节点并在当前复制做一次完全一样的新提交。
Rebase
衍合是合并命令的另一种选择。
合并把两个父分支合并进行一次提交,提交历史不是线性的。
衍合在当前
分支上重演另一个分支的历史,提交历史是线性的。
本质上,这是线性化的自动的cherry-pick
上面的命令都在topic分支中进行,而不是master分支,在master分支上重演,并且把分支指向新的节点。
注意旧提交没有被引用,将被回收。
要限制回滚范围,使用--onto选项。
下面的命令在master分支上重演当前分支从169a6以来的最近几个提交,即2c33a。
同样有git rebase--interactive让你更方便的完成一些复杂操组,比如丢弃、重排、修改、合并提交。
没有图片体现着下,细节看这里:git-rebase(1)
技术说明
文件内容并没有真正存储在索引(.git/index)或者提交对象中,而是以blob的形式分别存储在数据库中(.git/objects),并用SHA-1值来校验。
索引文件用识别码列出相关的blob文件以及别的数据。
对于提交来说,以树(tree)的形式存储,同样用对于的哈希值识别。
树对应着工作目录中的文件夹,树中包含的树或者blob对象对应着相应的子目录和文件。
每次提交都存储下它的上一级树的识别码。
如果用detached HEAD提交,那么最后一次提交会被the reflog for HEAD引用。
但是过一段时间就失效,最终被回收,与git commit--amend或者git rebase很像。
Copyright©2010,Mark Lodato.Chinese translation©2012,wych.
本著作系采用创用CC姓名标示-非商业性-相同方式分享3.0美国授权条款授权。