Git学习备忘

    本文参考廖雪峰写的精彩的git学习文档,大家可以直接去官网看原版,我这里只是便于自己记录梳理

原版地址:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

    ubuntu下可以直接sudo apt-get install git来安装git.如果是mac,Xcode自带git,但是版本可能比较低。你可以到git官网下载最新的git src或较旧的dmg文件到本地安装。安装完成后别忘了将原来旧的git链接指向新的git啊!第一次安装完毕后可以输入你的username和email地址:

git config --global user.name "hopy"
git config --global user.email "xxx@xxx.com"

然后新建一个目录,cd进入该目录输入:

git init

这样可以建立一个空的git仓库.在该目录下新建的每个文件,可以用add添加进git,但最后别忘了用commit提交:

git add *.h
git add *.c
git commit -m "1st create comm.h,sub.h,main.c,sub.c"

用以下命令将本地仓库和远程仓库连接起来:

git remote add origin git@code.csdn.net:xxx/xxx.git

用git status看当前仓库的状态,是否有文件被修改.用git diff看具体修改的内容:

git status
git diff

用git log看提交的日志,你也可以用git log --pretty=oneline看简化日志:

wisy@wisy-ThinkPad-X61:~/src/git_src/ccon$ git log
commit 4c8c0bd9d31c95dfb09e1c05e00c07f01aadb890
Author: hopy <hopy@live.cn>
Date:   Wed Dec 17 15:21:39 2014 +0800

    fix #if #endif

commit 4688a14ffde3efaadd76adb892079539b6117766
Author: hopy <hopy@live.cn>
Date:   Wed Dec 17 15:12:42 2014 +0800

    1st create comm.h,sub.h,main.c,sub.c

用reset将项目前进或回退到任意提交的版本,其中HEAD^表示后退到上一版本,^^表示会推到上上版本,HEAD~100表示上100个版本:

git reset --hard HEAD^

用reflog看前进或回退版本的日志:

wisy@wisy-ThinkPad-X61:~/src/git_src/ccon$ git reflog
4c8c0bd HEAD@{0}: reset: moving to 4c8c0bd
4688a14 HEAD@{1}: reset: moving to HEAD^
4c8c0bd HEAD@{2}: commit: fix #if #endif
4688a14 HEAD@{3}: commit (initial): 1st create comm.h,sub.h,main.c,sub.c

用reset加提交号切换任意置顶版本:

git reset --hard 4c8c0bd

用clone从远程库克隆工作目录

git clone git@github.com:kinds/ks.git

用checkout -b new_branch创建并切换分支,或者用branch new_branch创建分支,然后checkout new_branch切换分支:

git checkout -b new_b

or

git branch new_b

git checkout new_b

用branch查看分支,前面*号的分支是当前分支

git branch

用branch -d 删除分支

git branch -d some_b

用merge合并某分支到当前分支

git merge some_b

如果说我删除了一个分支,想恢复咋办?比如dev:main.c最后增加一行 puts("dev line");,add&commit后,切回master,然后同样修改master:main.c最后一行 puts("master line");同样add&commit,这时我想合并dev和master,于是乎输入git merge dev,会提示2个分支有冲突,需要手动修正。等到我修正后,也merge成功后,将dev分支删掉。这时我后悔了,我又想找回dev。其实很简单新建一个dev分支,查看log得知原来的dev的ID码,接着在dev分支中reset
--hard org_dev_ID即可。

可以用git log --graph查看“图形版”的log

可以用git merge --no-ff -m "msg" dev禁用Fast Forward,以在日志中生成分支历史合并记录

用git remote或git remote -v看远程工作区的push和fetch信息

用git checkout -b dev origin/dev 建立远程工作区中的对应的dev分支,然后用git pull origin dev 将dev内容抓取下来

建立远程分支和本地分支的链接:

git branch --set-upstream dev origin/dev
  • 命令git
    tag <name>
    用于新建一个标签,默认为HEAD,也可以指定一个commit
    id;

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

命令git tag可以查看所有标签,git
show可以查看某一个标签

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

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

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

命令git push origin
:refs/tags/<tagname>
可以删除一个远程标签(在已经删除本地tag的前提下)。

下面简单说下如何修改别人的git项目,在github中搜索一个感兴趣的项目比如说是:macruby,我想参与其中,如果只是git clone 原始的git macruby地址的话,只能下载到本地查看,但不能提交!这个自然是你没有权限,不能随便改别人的项目啊!但你可以在macruby项目页面中将项目fork到你自己的git中(在code.csdn.net中是"派生"),然后回到自己的git中看派生后的git地址,这时你可以用
git clone 派生的git macruby地址来下载和修改项目了,在你push修改后的代码上你的git后,可以在你的macruby项目中选择pull request(csdn git是"合并请求"),给macruby的原作者发一个请求,但原作者是否应用你的修改就是Ta的事了...

    git包括一个全局的config文件,是当前用户目录下的.gitconfig文件。对于每个git仓库还有一个局部的config文件,在仓库目录下的.git目录中的config文件里。我们可以对于常见的git命令设置别名,而别名会设置在全局或局部config文件中,看你在设置时是否指定--global选项而定。

git config --global alias.st status

git config --global alias.ci commit

git config --global alias.cim "commit -m'null'"

最后一个是作者不愿告诉我们的方法吗?呵呵。

     一些不想让git监视的文件名(比如一些密码,隐私或各种语言生成得临时文件等)可以放在git仓库的.gitignore文件中,各种语言的官方推荐的.gitignore文件可以到https://github.com/github/gitignore观赏。.gitignore文件的格式如下:

# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini

# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build

# My configurations:
db.ini
deploy_key_rsa

未完待续

时间: 2024-10-06 23:06:16

Git学习备忘的相关文章

WPF学习备忘(5)怎样修改模板中的控件

首先,想问大家一个问题,你们如果要给一个Button添加背景图片会怎么做?(呵呵,这个问题又点小白 哈) 是这样吗? <Button Height="57" HorizontalAlignment="Left" Margin="106,86,0,0" Name="button1" VerticalAlignment="Top" Width="147" BorderThickness

WPF学习备忘(4) 用WPF打个勾画个叉

<Path Grid.Column="2" Data="M43,5 L20,40 20,40 0,20 6,15 18,26 37,7 43,5 z" Fill="Green" Margin="5" Stretch="Fill" HorizontalAlignment="Right"/> <Path Margin="5" Data="M50

WPF学习备忘(3) Datagrid中的数据处理

如何从 Datagrid 中获得单元格的内容与 使用值转换器进行绑定数据的转换IValueConverter 一.如何从 Datagrid 中获得单元格的内容 DataGrid 属于一种 ItemsControl, 因此,它有 Items 属性并且用ItemContainer 封装它的 items. 但是,WPF中的DataGrid 不同于Windows Forms中 的 DataGridView. 在DataGrid的Items集合中,DataGridRow是一个Item,但是,它里面的单元格

WPF学习备忘(2)WPF获取和设置鼠标位置与progressbar的使用方法

一.WPF 中获取和设置鼠标位置 方法一:WPF方法 Point p = Mouse.GetPosition (e.Source as FrameworkElement); Point p = (e.Source as FrameworkElement).PointToScreen(pp); 方法二: API方法 /// <summary> /// 设置鼠标的坐标 /// </summary> /// <param name="x">横坐标</

WPF学习备忘(1) 用WPF画个笑脸

1.画个笑脸给大家娱乐一下: <Canvas Width="200" Height="180" VerticalAlignment="Center" Margin="772,577,466,390"> <Ellipse Canvas.Left="10" Canvas.Top="10" Width="160" Height="160"

jQuery学习笔记--JqGrid相关操作 方法列表 备忘 重点讲解(超重要)

JqGrid相关操作备忘 方法列表 1.获得当前列表行数:$("#gridid").getGridParam("reccount"); 2.获取选中行数据(json):$("#gridid").jqGrid('getRowData', id); 3.刷新列表:$(refreshSelector).jqGrid('setGridParam', { url: ''), postData: ''}).trigger('reloadGrid'); 4.选

正则表达式学习摘录-备忘【乱】

PS:之前看<精通正则表达式>部分摘录,只是备忘,不适合阅读!Sorry! #有一定的理论素养,却又始终以实践为本! 正则表达式能够得到众多语言和工具的支持是有原因的: 它们极其有用. 从较低的层面上来说,正则表达式描述的是一串文本( a chunk of text )的特征.我们可以用它来验证用户输入的数据,或者也可以用它来检索大量的文本.从较高的层面上来说,正则表达式容许用户掌控他们自己的数据--控制这些数据,让它们为自己服务.掌握正则表达式,就是掌握自己的数据. 正则表达式(Regula

技术备忘3

   shell单引号与变量 [root@test] a=55 [root@test] echo $a 55 [root@test] echo '$a' $a [root@test] echo ''$a'' #注意此处是两个单引不是一个双引 55 总结: 在单引号中引用变量,需要这样来写(单引号括起来双引号内的变量.) :   '"${a}"' 原文地址 date星期求取 <span style="font-family:Microsoft YaHei">

Git学习--&amp;gt;如何通过Shell脚本自动定时将Gitlab备份文件复制到远程服务器?

一.背景 在我之前的博客 git学习--> Gitlab如何进行备份恢复与迁移? (地址:http://blog.csdn.net/ouyang_peng/article/details/77070977) 里面已经写清楚了如何使用Gitlab自动备份功能. 但是之前的备份功能只是备份到Gitlab服务运行的那台服务器上,如果哪一天那台服务器的磁盘损坏了的话,数据无法取出,那么对于公司来说是一匹无法想象的损失,因为 代码是公司的重要资产,需要以防万一. 代码是公司的重要资产,需要以防万一. 代码