Git的一些东西(后续补充)

查看帮助,要装git-doc,另外推荐git的图形客户端gitg,比gitk好看多了,用apt-get install就可

HEAD是当前工作版本的指针

--global保存的是当前用户的配置,配置文件保存在~/.gitconfig

--system是系统中所有用户,配置文件一般在/etc/gitconfig

什么都不加就是当前目录下项目的配置文件,在项目的.git文件夹中

git config --list 可以查看所有配置信息,有重名的因为有不同的配置文件,实际会采用最后一个

基本设置 
git config --global user.name yisen 
git config --global user.name [email protected] 
git config --global core.editor vim

给git着色
git config --global color.ui true 这样会好看一些

自动完成脚本

git默认要输入全命令,而且还不能像svn那样st,ci,co,有点不方便

其实在git的源代码文件夹中,contrib/completion 目录下的 git-completion.bash脚本可以实现自动完成

把它复制到~/.git-completion.bash,然后source之,并且把命令加到启动脚本中echo "source ~/.git-completion.bash >> ~/.bashrc"

现在我们就可以用我们习惯的<tab><tab>来自动补全命令了

Git 命令别名

$ git config --global alias.co checkout

$ git config --global alias.br branch

$ git config --global alias.logg "log --pretty=format:‘%h - %an -%ad -%s‘"

git log -p 查看每个版本的差异

git log a..b 查看a版本到b版本之间的log

git reflog 可以查看每个改动

git reset HEAD~1 撤销最近的一次改动

恢复数据 用reflog查看已经没了的提交的SHA值,然后直接git branch recover-branch ab1afef(SHA值前几位)

git checkout -b newbranch = git branch newbranch + git checkout newbranch 
git checkout -b newbranch develop = git checkout develop + git checkout -b newbranch

永远不要rebase那些已经推送到公共仓库的更新。

如果你遵循这条金科玉律,就不会出差错。否则,人民群众会仇恨你,你的朋友和家人也会嘲笑你,唾弃你。

如果把rebase当成一种在推送之前清理提交历史的手段,而且仅仅rebase那些永远不会公开的 commit,那就不会有任何问题。如果rebase那些已经公开的 commit,而与此同时其他人已经用这些 commit 进行了后续的开发工作,那你有得麻烦了。

忽略添加某些文件 
习惯git add .来增加所有更改,如果有不想被默认添加进仓库的,可以在项目目录下新建一个.gitignore文件,把文件名输进去,空行分隔,可以用*号。

局域网内共享仓库

无SSH的:

本机上用git clone --bare xxx xxx.git 克隆一个纯仓库

xxx.git放到服务器上一个项目组都能访问到的共享目录下,比如NFS,假设/mnt/git/xxx.git 
对方先mount到自己的/mnt/git,然后 git clone /mnt/git/xxx.git

添加远程主机: git remote add origin file://192.168.x.x/opt/xxx.git

获取更新: git fetch origin 这时得到一个origin/master分支的指针,不能修改, 
可以合并到自己的主干 git co master, git merge origin/master,或者新建一个分支来工作,git checkout -b new_br origin/master

获取更新并合并到当前分支的命令可以合并为: git pull origin master  (master:master)

改变最后一次提交
修改了文件后,git status看到有更改,git checkout -- . 可以撤销这些修改
git commit --amend可以重新提交一次,以便更改说明 
也可以先add或者rm一下后再使用上面的命令,可以修改上次提交。因为会更改sha值,所以不要在push之后再修改

取回前版本
git reset --hard/soft/mixed xxxxx, 取消所有修改,保留所有修改,默认,清空文件状态
git reflog 查看所有操作log

暂存工作
git stash 可以把你当前工作的杂乱无张的状态先暂存起来,然后你就可以切换到别的分支去工作
git stash list 可以看当前的暂存列表后
git stash apply 应用最新的一个暂存,git stash drop [email protected]{0}来删掉暂存

格式化的困扰
你可能会遇到行尾结束符问题。这是因为Windows使用回车和换行两个字符来结束一行,而Mac和Linux只使用换行一个字符。虽然这是小问题,但它会极大地扰乱跨平台协作。
git config --global core.autocrlf input 签出时不转换,提交是把CRLF转换成LF
git config --global core.autocrlf true 如果服务器是linux,工作在windows,提交时自动地把行结束符CRLF转换成LF,而在签出代码时把LF转换成CRLF。 
服务器跟工作都在windows上,设成false取消此功能

以上引用:http://my.oschina.net/yisenn/blog/23646

时间: 2024-10-19 05:13:26

Git的一些东西(后续补充)的相关文章

Drupal 初次使用感受,后续补充。

很久以前就接触过,下载下来安装,结果界面太丑,太难看,直接删除. 最近重新想到开源CMS,好奇看到那么多人推崇drupal,也便下载来重新研究了下. 刚接触了下,不过整体使用感觉很差,尤其几个地方: 1)本地安装都非常缓慢,途中还提示执行超时. 可想而知,如果放到网上去,会怎么样的卡资源?空间提供者非封了网站不可. 2)数据库表没有前缀. 这多都多少年代了,数据库表还是直接一次性安装连前缀都不给了.对比中国的那些CMS 开源产品真的是太落伍了. 3)数据库设计非常耗费资料. 看了一些网上对dru

Git在服务器安装完成后续工作

一.在服务器端: Git创建版本库 在普通用户下(下面以gong为例) 建个git文件下yydb(随便起个名) $ mkdir -p git/yydb 通过命令 git init --bare(不要用git init)把这个目录变成git可以管理的裸仓库,如下: $ git init --bare 下面在普通用户下新建个文件夹www $ mkdir -p www/ 把仓库clone在这个文件下 $ git clone ../git/yydb 完成!!! 二.在windows下: 随便找个地方打开

git零基础【慢慢补充】

git branch dev   //创建新分支 git checkout dev   //切换到新分支 git add .  //把当前修改加到暂存区 git commit -m "代码描述" git pull   //从远程拉取代码 解决差异问题 git push  //把本地代码push到远程仓库 [git push --set-upstream origin lpt]  // 远程创建分支?? git checkout master // 切换到本地主分支 扩展阅读:http:

Java中一些零碎知识点集合(后续补充)

-----------------------------------关于封装------------------------------------- 封装原则 将不需要对外提供的内容隐藏起来. 把属性隐藏,提供公共方法对其进行访问.之所以对某些信息进行封装然后提供公共接口让外人进行访问,是因为可以对访问操作方式进行控制,来规范用户输入的数据,限制不合理信息,提高代码的健壮性. -----------------------------------构造函数方法-----------------

spring循环依赖问题分析——待后续补充

新搞了一个单点登录的项目,用的cas,要把源码的cas-webapp改造成适合我们业务场景的项目,于是新加了一些spring的配置文件. 但是在项目启动时报错了,错误日志如下: 一月 08, 2016 11:01:34 下午 org.apache.catalina.core.StandardContext filterStart 严重: Exception starting filter springSecurityFilterChain org.springframework.beans.fa

cocos2dx Scene 生命周期(replaceScene,popScene后续补充)

cocos2dx 在多场景切换中,生命周期打印的效果如下: 从 MyScene 场景进入,切换到 HelloWorld 场景,再推出 HelloWorld 场景,流程图(见附件,,,,不知道怎么上传图片,不能粘贴图,郁闷...) 打印 log 如下, MyScene 代码: MyScene::MyScene() { CCLog("wangss------------->MyScene"); } MyScene::~MyScene() { CCLog("wangss---

有关IDEA的Settings常用设置(后续补充....)

1.字体设置  Editor-->Font 2.文档注释设置 Editor-->File and Code Templates-->Includes-->File Header /** @author songke @company xxx @create ${YEAR}-${MONTH}-${DAY} ${TIME} */ 效果如下: 原文地址:https://www.cnblogs.com/songxiaoke/p/12165867.html

Python 爬取 北京市政府首都之窗信件列表-[后续补充]

日期:2020.01.23 博客期:131 星期四 如果想要看到前面的铺垫,请看第130期博客! [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 我试着改写了一下爬虫脚本,试着运行了一下,第一次卡在了第27页,因为第27页有那个“投诉”类型是我没有料到的!出于对这个问题的解决,我重新写了代码,新的类和上一个总体类的区别有以下几点: 1.因为要使用js调取下一页的数据,所以就去网站上下载了FireFox的驱动 安装参考博客:https://www.cnblogs.com

Git可视化极简易教程 —— Git GUI使用方法

前言 之前一直想一篇这样的东西,因为最初接触时,我也认真看了廖雪峰的教程,但是似乎我觉得讲得有点多,而且还是会给我带来很多多余且重复的操作负担,所以我希望能压缩一下它在我工作中的成本,但是搜索了一下并没有找到满意的教程,新的一年自己梳理一下自己的经验. 可能男生们大神比较多,觉得Git是如此简单,便已觉得命令行操作就是SO EASY,甚至或许有看不起可视化这样面对低端用户的心理,好的,那您就当我是水货可以右上角了. 我一直觉得类似GIT这样的东西,他对于我而言只是个不完全必须的工具,我并不想成为