创建版本库(又名仓库,repository),可以理解为一个仓库,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录:

 
<span style="color:#3366ff">1.
$ mkdir learngit
$ cd learngit
$ pwd2.
初始化一个Git仓库,使用git init命令。3.
添加文件到Git仓库,分两步:第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文件;(多次add不同的文件)第二步,使用命令git commit,完成。(commit可以一次提交很多文件)4.
随时掌握工作区的状态,使用git status命令。如果git status告诉你有文件被修改过,用git diff可以查看修改内容。</span>
5. 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
git reset --hard commit_idgit reset --hard head^(回到上一个版本)git reset --hard 版本号(回到未来或过去都可以)

6. 只是指针在变化:

7. 版本库的管理

8. 为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件。

9. 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时(还没add之前),用命令git checkout -- file(--前后各有一个空格)。git checkout -- readme.txt

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。git reset head readme.txt git checkout -- readme.txt

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

git  reset --hard  版本号

10.

vim test.txt(退出方式:i(表示插入),esc准备退出。ZZ,保存并退出;:q!(不保存退出)

git add test.txt    git commit -m"add a new file"

想要从版本库中删掉该文件:git rm test.txt, git commit -m"delete the test.txt"

命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。

11. 远程仓库:

要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;(git remote add origin ....)关联后,使用命令git push -u origin master第一次推送master分支的所有内容;(git push -u origin master)此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;(git push origin master)此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;(git push origin master)

分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作,而SVN在没有联网的时候是拒绝干活的!当有网络的时候,再把本地提交推送一下就完成了同步,真是太方便了!

git和SVN的区别:

Git和SVN还是挺像的,都有提交,合并等操作

下面是区别:

1. Git是分布式的,SVN是集中式的,好处是跟其他同事不会有太多的冲突,自己写的代码放在自己电脑上,一段时间后再提交、合并,也可以不用联网在本地提交;

2. Git下载下来后,在本地不必联网就可以看到所有的log,很方便学习,SVN却需要联网;

3. Git鼓励分Branch,而SVN,说实话,我用Branch的次数还挺少的,SVN自带的Branch merge我还真没用过,有merge时用的是Beyond Compare工具合并后再Commit的;

4. Tortoise也有出Git版本;

5. SVN在Commit前,我们都建议是先Update一下,跟本地的代码编译没问题,并确保开发的功能正常后再提交,这样其实挺麻烦的,有好几次同事没有先Updata,就Commit了,发生了一些错误,耽误了大家时间,Git可能这种情况会少些。

参考博文:https://blog.csdn.net/a117653909/article/details/8952183

12. 远程仓库的克隆:

要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。

Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快

13。 分支管理;

分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。

现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。

14. 创建合并分支:

Git鼓励大量使用分支:

查看分支:git branch(git branch)

创建分支:git branch <name>(git checkout -b dev)

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>(git merge dev)

删除分支:git branch -d <name>(git branch -d dev)

15. 解决合并的冲突:

当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。

git log --graph命令可以看到分支合并图。

16. 不使用fast forword方式来合并分支:

17. bug分支管理:

修复bug时,我们可以通过创建新的bug分支进行修复,然后合并,最后删除;git checkout -b dev; git merge dev;

git checkout master;git branch -d dev

当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场

git stash ; git stash list; git stash pop;git stash list.

18. feature分支:

开发一个新feature,最好新建一个分支;git checkout -b dev; git add test.txt;git commit -m"add a test.txt";git checkout master;git merge dev之前

如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。git branch -D dev(强行删除)

19. 多人协作:

多人协作的工作模式通常是这样:

  1. 首先,可以试图用git push origin branch-name推送自己的修改;git push origin dev

  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;(如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。)git branch --set-upstream dev origin/dev;git pull

  3. 如果合并有冲突,则解决冲突,并在本地提交;

  4. 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!git push origin dev

这就是多人协作的工作模式,一旦熟悉了,就非常简单。

总结:

  • 查看远程库信息,使用git remote -v

  • 本地新建的分支如果不推送到远程,对其他人就是不可见的;

  • 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;

  • 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

  • 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name

  • 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

20. 创建标签

  • 命令git tag <name>用于新建一个标签,默认为HEAD,也可以指定一个commit id;git tag v1.0 fedsf1

  • git tag -a <tagname> -m "blablabla..."可以指定标签信息;git tag -a v0.9 -m "add a new tag"

  • git tag -s <tagname> -m "blablabla..."可以用PGP签名标签;

  • 命令git tag可以查看所有标签。

21. 操作标签

  • 命令git push origin <tagname>可以推送一个本地标签;git push origin v1.0

  • 命令git push origin --tags可以推送全部未推送过的本地标签;git push origin --tags

  • 命令git tag -d <tagname>可以删除一个本地标签; git tag -d v1.0

  • 命令git push origin :refs/tags/<tagname>可以删除一个远程标签git push origin :refs/tags/v1.0

22. 使用github

  • 在GitHub上,可以任意Fork开源仓库;fork之后使用:git clone git@github.com:linhj-james/learngit-1.git

    git@github.com:linhj-james/learngit-1.git
    git@github.com:linhj-james/learngit-1.git
  • 自己拥有Fork后的仓库的读写权限; pull request

  • 可以推送pull request给官方仓库来贡献代码。

23. 最后,供上版本管理常用命令:

git clone git@github.com:linhj-james/learngit.git(你的远程地址)

git init (初始化一个新建的仓库)

git status (所在文件夹的文件状态)

git diff(显示两次文件的修改的不同之处)

git add (+filename)

git commit -m"add some chages"

git log(显示记录)

git branch (查看分支)

git checkout -b dev(新建并切换到另一个分支dev分支去)

git branch master (切换到master分支去)

git branch -d dev(删除dev分支)、

git tag v1.0(贴上v1.0的标签)

git remote -v(查看远程里连接的状态)

(git remote add origin (远程仓库地址))

git remote show <remote>(显示remote的信息)

git pull <remote><branch>(看上面)

git fetch <remote>

git push <remote><branch>(git push origin maste)

git merge <branch>(dev)

git rm <resolved files>

git reset --hard head^

自己总结一下常用 的操作:

一。 . 上传本地文件到github

步骤:

1. 先各自在远程仓库和本地仓库建一个文件夹(仓库)

2. git init(初始化仓库)

3. git add (+文件名)

4. git commit -m"add a new file"

5.git remote -v(查看远程仓库的连接情况,把无关的git remote rm origin(移出掉))

6. git remote add origin (+远程仓库地址)(建立远程仓库)

7. git pull --rebase origin master

git pull = git fetch + git merge

git pull --rebase = git fetch + git rebase(创建一个新的虚拟提交R)(关于git merge和git rebase 的区别可以参考:https://www.cnblogs.com/kevingrace/p/5896706.html)

8. git push -u origin master(有时候会出错,如果排除7的问题可以使用:git push -f origin master(利用本地分支去覆盖远程仓库))

新手如何提交本地文件到github上,几步走:

1、本地创建文件夹,创建本地仓库,【git init】;

2、执行【git add .】,将文件都提交到仓库;

3、执行【git commit -m "注释语句" 】命令,将索引内容添加到仓库中;

4、在github上创建一个repository;

5、将本地的仓库关联到Github上,git remote add origin https://github.com/……(你的用户名)/Test.git(你项目的名字)

6、上传代码到github远程仓库,git push -u origin master

二。 克隆:

git clone (+远程仓库地址)

https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013744142037508cf42e51debf49668810645e02887691000(转载博文)

git学习入门~~~相关推荐

  1. Git学习记录 力做全网最强入门教程

    目录 Git学习记录 力做全网最强入门教程 什么是GitHub? 什么是Git? Git的配置 Git的安装(只介绍windos操作系统下) Git的配置 至此我们的入门教程到此结束,更新中级教程要等 ...

  2. 最全白话文git学习教程,最适合入门及深造

    git学习前言 之前的学习过程中老是遇到git,但是也没有必须用到的地方,也没在意.但是因为一次偶然的机会写其他代码,回过头来发现,原来那时候已经模模糊糊的学过了git,现在正好也需要系统的回忆下,所 ...

  3. GIT学习0基础到入门(附图)

    GIT学习 1.git 常用命令代码 提交,或者修改代码到暂存区 git add 2.设置签名 git config user.name JackMa git config user.email 13 ...

  4. Git高速入门——Git安装、创建版本号库以及经常使用命令

    Git高速入门--Git安装.创建版本号库以及经常使用命令 学习Git最全面的资料,在我看来是这本书-- Pro Git,网上关于Git的教程有非常多,包含当中一些非常优秀的教程.这一系列的博客,主要 ...

  5. 30分钟git命令入门到放弃

    30分钟git命令入门到放弃 Helkyle・ 15 小时前 172 | 暂无评论 这是一篇给像我这样的新手或者是熟悉图形工具的老鸟看的.仅作为快速入门的教程. learn-git git 现在的火爆 ...

  6. 深度学习入门笔记系列(三)——感知器模型和 tensorboard 的使用方法

    本系列将分为 8 篇 .今天是第三篇 .主要讲讲感知器模型和 tensorboard 的基本使用方法 . 1. 感知器模型 因为小詹之前写过一篇感知器模型的介绍 ,这里就不赘述了 .有需要巩固的点击如 ...

  7. 深度学习入门笔记系列 ( 二 )——基于 tensorflow 的一些深度学习基础知识

    本系列将分为 8 篇 .今天是第二篇 .主要讲讲 TensorFlow 框架的特点和此系列笔记中涉及到的入门概念 . 1.Tensor .Flow .Session .Graphs TensorFlo ...

  8. Git 学习看这篇就够了!

    2019独角兽企业重金招聘Python工程师标准>>> Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. 可能新手会问"git和gi ...

  9. (一)Git学习记录(不断更新)

    作为程序员如果你还不知道 Git 和 GitHub,说不过去吧,赶紧来学习一波. 一.认识GitHub Git 是个版本控制系统,说明白点就是进行代码的各种管理,比如你写错代码进行回滚啊.追寻 Bug ...

最新文章

  1. springboot使用Map接收请求参数
  2. 关于华为mate9安装apk缺少证书的问题(更新版)
  3. Oracle 位图索引
  4. 《编程能力基础》刷题笔记(41 题)
  5. Linux下部署Spring Boot项目
  6. 去除datatable列中重复的值
  7. Eclipse启动提示“subversive connector discovery”
  8. eeglab绘制脑电头皮图、通道对应光谱图
  9. Mybatis实现mysql分页查询
  10. excel计算机课程表,Excel如何制作课程表
  11. 万字长文:复盘 8 年副业经历,耗时一周,我总结出了独特的「复利思维复业赚钱法」,不看后悔...
  12. 网络编程(6)--------javaweb(TCP协议)
  13. while 循环进入死循环?
  14. UE4 射击类游戏 手机端视角随触摸改变方法
  15. Java下载文件时文件名中的中文变成下划线,其他正常
  16. javascript入门及基础语法结构
  17. Qt利用QtXlsx操作excel文件
  18. 删除的监控视频怎么恢复?用数据恢复软件解决
  19. HTML元素居中定位与尺寸拉伸
  20. spring boot+Mybatis+mysql+atomikos+jta实现多数据源分布式事务

热门文章

  1. 2021最新Python量化A股投资必赚策略
  2. html里面怎么ul加高度,div里面嵌套了ul,为什么div的高度小于ul高度
  3. c语言 1 %3c%3c -253,结构体嵌套 姓名前后怎么输出两次??
  4. 识别产品外观的合格软件_你还在犹豫?外观检测设备使用已成主流!
  5. 如何修改操作系统运行服务器,如何设置Bios 最常见bios设置与修改详细图解教程...
  6. 计算机管理关机在哪,电脑点了关机为什么却关不了
  7. 计算机盐城工学院和常熟理工,【选专业】这6所二本院校的专业,就业不输一本学生!...
  8. 服务器能像客户端发信息吗,服务器怎么向客户端发信息吗
  9. 绳索受力分析的软件_【硕士论文】供热管网管道支架载荷分析与优化设计
  10. sendmail发送html邮件,尝试使用sendmail发送/发送html电子邮件,但显示电子邮件的源代码...