git学习心得总结

Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理

有两种取得 Git 项目仓库的方法。

第一种是在现存的目录下,通过导入所有文件来创建新的 Git 仓库。

第二种是从已有的 Git 仓库克隆出一个新的镜像仓库来。

一.从当前目录初始化 Git init

初始化后,在当前目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。

二.git clone ssh://[email protected]/git/mx28/linux-2.6-imx.git

将远程仓库克隆到本地,目录名为linux-2.6-imx并在目录下创建.git目录。如果希望在克隆的时候,自己定义要新建的项目目录名称,

可以在上面的命令最后指定:/linux-2.6-imx.git  Mylinux

SSH 为建立在应用层和传输层基础上的安全协议。

在客户端执行

Ssh 用户名@192.168.10.124  //使用192.168.10.124某一指定的用户名和密码登陆

后面的git/mx28就是目录了

Git中从远程的分支获取最新的版本到本地有这样2个命令:相反就有一个命令

git fetch:相当于是从远程获取最新版本到本地,不会自动merge

git fetch origin master
git log -p master..origin/master
git merge origin/master

以上命令的含义:

首先从远程的origin的master主分支下载最新的版本到origin/master分支上
   然后比较本地的master分支和origin/master分支的差别
   最后进行合并

git pull:相当于是从远程获取最新版本并merge到本地

git pull origin master

上述命令其实相当于git fetch 和 git merge
在实际使用中,git fetch更安全一些
因为在merge前,我们可以查看更新情况,然后再决定是否合并

git pull origin master是将origin这个版本库的代码更新到本地的master主分支

git log    查看提交信息  看你commit的日志

git log -p    查看历次的log信息及更改情况   看到的是跟补丁一样的修改信息

git log -p -4    查看距现在最近的4次的log信息及更改情况

git log frameworks/    查看关于frameworks/目录修改相关的log信息

git log --stat    查看log显示文件修改情况

git log --stat packages/apps/Contacts/    查看关于packages/apps/Contacts/目录修改相关的log显示的文件修改情况

git与gitk的区别

有时候图形化工具更容易展示历史提交的变化,随 Git 一同发布的 gitk 就是这样一种工具。它是用 Tcl/Tk 写成的,基本上相当于 git log 命令的可视化版本,凡是 git log 可以用的选项也都能用在 gitk 上。在项目工作目录中输入 gitk 命令后。上半个窗口显示的是历次提交的分支祖先图谱,下半个窗口显示当前点选的提交对应的具体差异。

git status    查看工作目录和代码仓库的改动情况

git diff 查看工作目录和本地仓库的差异或者本地仓库各个版本的差异

git diff 会使用文件补丁的格式显示具体添加和删除的行。

请注意,单单 git diff 不过是显示还没有暂存起来的改动,而不是这次工作和上次提交之间的差异。所以有时候你一下子暂存了所有更新过的文件后,运行 git diff 后却什么也没有,就是这个原因。 可以cat diff看一下实际的输出信息 cat: diff: No such file or directory

git diff packages/apps/Contacts/AndoridManifest.xml    查看工作目录中AndoridManifest.xml和本地仓库中AndoridManifest.xml的不同

git diff b46cae3b9a377bcd9cfc249a5778fce647feb961 dc94bf29aab18168e79d6496a89e47dba7a1d494    查看这两个版本的不同(git diff history_old history_current)

git commit 提交当前修改内容 提交只是提交到本地仓库

git commit file1 file2 -m "log message"    提交file1,file2到本地仓库

git commit -a -m "log message" 提交所有在Git索引中的改动  有-a代表不用add了

有时候我们提交完了才发现漏掉了几个文件没有加,或者提交信息写错了。想要撤消刚才的提交操作,可以使用 --amend 选项重新提交:

$ git commit -m ‘initial commit‘

$ git add forgotten_file

$ git commit --amend

上面的三条命令最终得到一个提交,第二个提交命令修正了第一个的提交内容。

git add 增加文件到Git索引

git add file3 file4    将file3,file4加入到Git索引中   git add 仅是暂存不是提交

git rm 从Git索引移除文件

git rm file3    将file3从Git索引中删除

git branch    对分支的增、删、查操作

git branch    显示所有本地分支

git branch new_branch    在当前版本创建一个名为new_branch的分支

git branch -D new_branch    强制删除名为new_branch的分支

git checkout    在不同的branch切换和还原文件

git checkout branch1    切换到branch1分支 切换前最好把工作目录add并提交 否则切换后会报错或者工作目录不换还原

git checkout /packages/apps/Contacts/AndroidManifest.xml    会将AndroidManifest.xml文件从上一次提交的版本更新回来,未提交的部分会全部回滚

git remote查看当前配置有哪些远程仓库

git remote add pb git://github.com/paulboone/ticgit.git要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用

git remote show origin查看某个远程仓库的详细信息

git tag列显已有的标签

git tag -a v1.4 -m ‘my version 1.4‘创建一个含附注类型的标签 V1.4

git revert 是撤销某次操作,此次操作之前的commit都会被保留

git reset 是撤销某次提交,但是此次之后的修改都会被退回到暂存区

git reset 将当前的工作目录完全回滚到指定的版本号

git reset [--fixed] 3204f2f0bdfd6ada86c587b8927cdc5a15c586c1    只更新索引,不更新工作目录,也就是说所有的本地文件都不会更新

打补丁

一.方法一比较通用

Git commit  比如在PATH分支提交后

Git diff master>patch 创建补丁文件

Git checkout master 回到主分支

Git apply patch 通过patch打补丁

二.

Git conmmit 先在一个分支提交

Git format_patch –M master 生成.patch补丁文件

Git checkoutmaster 回到需要打补丁的分支

Git am ***.patch 打补丁          打完补丁相当于完成一次提交

遇到问题  错误提示信息

previous rebase directory /home/hailong/Workspace/zhl/.git/rebase-apply still exists but mbox given.

在用git am提交patch时,有时在提交失败后,继续提交时会出现/.git/rebase-apply still exists but mbox given错误,因为错误的提交导致git内部的数据出现了错误,因此继续提交patch就会报错,1.使用git am --abort命令将git的状态恢复到之前状态就可以继续提交patch了。2. 直接删除/home/hailong/Workspace/zhl/.git/rebase-apply这个目录的。

每次提交patch之前需要执行review-commits命令来检查patch的编程规范,有错误的地方,都会有warning或error的提示,修改之后执行1. git add xxx 2. git commit –amend 再push。

git可以学习的东西还有很多。git协议,分布式协作,git项目管理,git技巧,github的使用和实践,git分支管理的深入理解和使用,这些估计要以后慢慢学习了。毕竟我们公司用svn,而且没有开发大型项目。学到这个程度,基本达到我的目的:能应用git来管理自己的代码,能用git来连接svn进行部门补丁管理,扩展自己的知识面,了解开源项目的开发。以后有机会可以通过开源项目进一步学习。

时间: 2024-10-27 10:06:04

git学习心得总结的相关文章

git学习心得(1)

这次是第一次用git这个平台,还非常不熟练,尤其是在上传代码的步骤上,有好几次都出了问题,多次询问了同学才将代码上传到平台上,git是一个分布式版本控制系统,相对于集中式的来说具有很多优点,但是中文资料很少,对于学习者来说有很高的英语水平的要求,这要求自己在学习过程中要提高自己很多的能力. git平台对于以后的学习和工作有很大的作用,在接下来的学习里,要多学习,尽快熟练掌握,以便于更好地使用它 https://github.com/heartgo/test

Github链接及git学习心得总结

https://github.com/luhan420 Git 是一个分布式管理工具,通过指纹字符串来时刻保持数据的完整性,关心的是文件数据整体的变化,并不保存变化前后的差异数据:Git 在本地磁盘保存有关项目的历史更新,所有绝大多数操作只需要访问本地文件资源,并不需要Internet.当然可以使用GitHbub将代码托管,进行远程开发,方便团队比较分散的情况(这正体现Git分布式的优势):开发人员只需将项目clone到本地,进行相应的开发然后push上传到 GitHub(GitHub使用的是u

git学习心得

创建仓库并且用gitbash远程上传代码 1.在GitHub上建立项目 登录GitHub后,你可以在右边靠中那里找到一个按钮“NewRepository”,点击过后,填入项目名称.说明和网址过后就可以创建.2.配置Git以及上传代码安装Git成功后,选择Git Bash,用命令行中完成,首先初始设置Git:1 git config --global user.name"用户名"     2 git config --global user.email 邮箱地址 然后开始设置ssh协议,

git学习心得之远程仓库

本文主要知识点均来源于廖雪峰官方网站http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 其实一台电脑上也是可以克隆多个版本库的,只要不在同一个目录下.不过,现实生活中是不会有人这么傻的在一台电脑上搞几个远程库玩,因为一台电脑上搞几个远程库完全没有意义,而且硬盘挂了会导致所有库都挂掉,所以我也不告诉你在一台电脑上怎么克隆多个仓库. 实际情况往往是这样,找一台电脑充当服务器的角色,每天2

马舒婕:GIT操作与学习心得

参考:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 1.在Windows上安装Git 1)下载msysgit安装程序,下载地址:http://pan.baidu.com/s/1liyU: 2)按照默认选项完成安装: 3)在开始菜单里找到“Git->Git Bash”,弹出如下命令窗口,说明安装成功. 2.远程仓库 1)注册GitHub账号(已有账号): 2)创建SSH Key:

GitHub学习心得之 简单操作

作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 前言 本文对Github的基本操作进行了总结, 主要基于以下文章: http://gitref.org/zh/inspect/#diff (Git 参考手册)http://www.runoob.com/w3cnote/git-guide.html (Github 简明教程)http://mherman.org/blog/2013/09/16/managing-multiple-github

github的学习心得

github的学习心得 准备工作: 安装git: 1.下载地址:http://msysgit.github.io/ 2.安装:本人是一路next的,现在没发现有什么问题.详细的安装过程参考:https://jingyan.baidu.com/article/925f8cb8a8e91cc0dce05647.html 3.注册git账号,官网地址:https://github.com/ 配置git的ssh密匙: 1.打开Git Bash(可在菜单和鼠标右键中打开)查看电脑上是否已经存在SSH密钥:

Linux系统理解以及Linux系统学习心得

原创作品转载请注明出处  <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 作者:严哲璟 说一下我对Linux系统的理解 1.加载Linux内核准备:在加载基本输入输出模块(BIOS)之后,从磁盘的引导扇区读入操作系统的代码文件块到内存中,之后开始整个系统的初始化. 2.main.c的start_kernel函数是整个操作系统的入口,这也与Linux是基于C语言的特性相符,start_kernel具体做的动作很多

git 学习小记之记住https方式推送密码

昨天刚刚学了点git基础操作,但是不幸的是[email protected]给出公告说尽量使用 https 进行操作.可是在用 https 进行 push 时,都需要输入帐号和密码. 各种百度谷歌之后在[email protected]官网找到了解决方法<https方式使用[email protected]设置密码的方式>文中给出了几个方法,并且都非常简单. 关于 cache 缓存方式,我不太喜欢,因为要设置时间,而且会过期.而 store 相应的非常方便,设置全局后,方便多个库使用.当然如果