个人github链接及git学习心得总结

系统 1869 0

组长:杨磊(计科高职13-3)201303014107

Github 仓库: https://github.com/yangleiwangximin/

https://github.com/yangleiwangximin/test/blob/master/Test3.java

第三题

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

http://code.google.com/p/msysgit/  可以下载 windows 版本的

http://www.pudn.com/search_db.asp?keyword=git  可以下载 git  源码安装在 linux

1) 解压  tar -zxvf git-1.6.0.tar.gz        2) 进入解压目录  cd git-1.6.0        3) 执行  make prefix=/usr/local all        4) 执行   make prefix=/usr/local install

 

有两种取得  Git  项目仓库的方法。第一种是在现存的目录下,通过导入所有文件来创建新的  Git  仓库。第二种是从已有的  Git  仓库克隆出一个新的镜像仓库来。

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

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

二. git clone ssh://r10003@192.168.10.124/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 config --global user.name "Hailong"    设置用户信息

$ git config --global user.email Hailong@example.com

git config –list 查看配置信息

 

获取帮助

想了解  Git  的各式工具该怎么用,可以阅读它们的使用帮助,方法有三:

$ git help

$ git --help

$ man git-

 

(转)技巧和窍门

在结束本章之前,我还想和大家分享一些  Git  使用的技巧和窍门。很多使用  Git  的开发者可能根本就没用过这些技巧,我们也不是说在读过本书后非得用这些技巧不可,但至少应该有所了解吧。说实话,有了这些小窍门,我们的工作可以变得更简单,更轻松,更高效。

2.7.1  自动完成

如果你用的是  Bash shell ,可以试试看  Git  提供的自动完成脚本。下载  Git  的源代码,进入  contrib/completion  目录,会看到一个  git-completion.bash  文件。将此文件复制到你自己的用户主目录中(译注:按照下面的示例,还应改名加上点: cp git-completion.bash /.git-completion.bash ),并把下面一行内容添加到你的  .bashrc  文件中:

source ~/.git-completion.bash

也可以为系统上所有用户都设置默认使用此脚本。 Mac  上将此脚本复制到  /opt/local/etc/bash_completion.d  目录中, Linux  上则复制到  /etc/bash_completion.d/  目录中即可。这两处目录中的脚本,都会在  Bash  启动时自动加载。

如果在  Windows  上安装了  msysGit ,默认使用的  Git Bash  就已经配好了这个自动完成脚本,可以直接使用。

在输入  Git  命令的时候可以敲两次跳格键( Tab ),就会看到列出所有匹配的可用命令建议:

$ git co

commit config

此例中,键入  git co  然后连按两次  Tab  键,会看到两个相关的建议(命令)  commit  和  config 。继而输入  会自动完成  git commit  命令的输入。

命令的选项也可以用这种方式自动完成,其实这种情况更实用些。比如运行  git log  的时候忘了相关选项的名字,可以输入开头的几个字母,然后敲  Tab  键看看有哪些匹配的:

$ git log --s

--shortstat --since= --src-prefix= --stat --summary

这个技巧不错吧,可以节省很多输入和查阅文档的时间。

2.7.2 Git  命令别名

Git  并不会推断你输入的几个字符将会是哪条命令,不过如果想偷懒,少敲几个命令的字符,可以用  git config  为命令设置别名。来看看下面的例子:

$ git config --global alias.co checkout

$ git config --global alias.br branch

$ git config --global alias.ci commit

$ git config --global alias.st status

现在,如果要输入  git commit  只需键入  git ci  即可。而随着  Git  使用的深入,会有很多经常要用到的命令,遇到这种情况,不妨建个别名提高效率。

使用这种技术还可以创造出新的命令,比方说取消暂存文件时的输入比较繁琐,可以自己设置一下:

$ git config --global alias.unstage 'reset HEAD --'

这样一来,下面的两条命令完全等同:

$ git unstage fileA

$ git reset HEAD fileA

显然,使用别名的方式看起来更清楚。另外,我们还经常设置  last  命令:

$ git config --global alias.last 'log -1 HEAD'

然后要看最后一次的提交信息,就变得简单多了:

Scott Chacon Pro Git 2.8 节 小结

$ git last

commit 66938dae3329c7aebe598c2246a8e6af90d04646

Author: Josh Goebel

Date: Tue Aug 26 19:48:51 2008 +0800

test for current head

Signed-off-by: Scott Chacon

可以看出,实际上  Git  只是简单地在命令中替换了你设置的别名。不过有时候我们希望运行某个外部命令,而非  Git  的附属工具,这个好办,只需要在命令前加上  就行。如果你自己写了些处理  Git  仓库信息的脚本的话,就可以用这种技术包装起来。作为演示,我们可以设置用  git visual  启动  gitk

$ git config --global alias.visual "!gitk"

 

个人github链接及git学习心得总结


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论