gitGuide

git

  working directory    repository

             stage   master(branch)

git init

git add filename

git commit -m "explanation information"

git status

git diff filename  #when you edit one file but before you add it to stage

git diff HEAD -- filename  #可以查看工作区和版本库里最新版本的区别(版本库包括stage和branch)

git checkout --filename    #把该文件在工作区的修改全部撤销。这里有两种情况

    #一种是在工作区修改后,还没有add到stage,这时撤销命令执行后,回到跟版本裤一模一样的状态;

      #一种是该文件已经add到stage然后又在工作区对该文件进行了修改,这时撤销命令执行后,文件回到跟stage里一样的状态

git reset HEAD filename

    #文件修改并add到stage后但还没执行commit,执行该命令可以撤销stage里的修改,把该文件重新放回工作区

git rm filename

git commit -m "explanation msg"

    #在实际开发中删掉了某个文件,但是并没有在git中删掉对该文件的跟踪,git status会提示该文件已经被删除

    #然后需要在git删除对该文件对跟踪, git rm filename确认对该文件对删除,并从版本库中删除该文件

    #执行git rm需要执行commit以提交当前版本

git checkout --filename

    #在实际开发删除了某个文件后,但是还没执行git rm 之前,可以用该命令恢复删除的文件

git log

git log --pretty=oneline

    #查看每次的commit信息,包括每次的commit_ID

git reset --hard HEAD^

git reset --hard commit_ID

    #回退到上一个commit版本,HEAD指代当前commit版本,HEAD^表示上一个commit版本

    #直接指定commit_ID可以直接回退到指定的commit版本

git reflog

    #回退到某个以前的版本,但是又想回到后来的某个版本时,不知道commit_ID的话就不能回到该版本

    #git reflog可以查看每次版本改变的信息

git remote add

git remote add origin [email protected]:lactic-h/learngit.git

    #在远端建立一个远程库,但是该远程库是空。于是该命令把本地库与远程库相链接

    #origin是远程库的默认名称

#如果输入$ git remote add origin [email protected]:djqiang(github帐号名)/gitdemo(项目名).git
  #提示出错信息:fatal: remote origin already exists.
  #解决办法如下:
    #1、先输入$ git remote rm origin
    #2、再输入$ git remote add origin [email protected]:djqiang/gitdemo.git 就不会报错了!

git push

git push -u origin master

    #将本地库的内容推送到远程库

    #实质上是把本地库到master分支推送到远程库,

    #第一次推送master分支时,加上参数-u,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

git push origin master

git clone [email protected]:lactic-h/gitskills.git(git_address_url)

    #远程库已经存在,从远程库克隆到本地并在本地建立一个与远程库相同的本地库

    #git_address_url可以是ssh链接,也可以是https链接,https链接需要输入账号密码

git branch

git branch branch_name_b

git checkout branch_name_b

git checkout -b branch_name_b

git checkout branch_name_a

git merge branch_name_b

  #git merge命令用于合并指定分支到当前分支。合并后,再查看readme.txt的内容,就可以看到,和dev分支的最新提交是完全一样的。
  #注意到上面的Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。
  #当然,也不是每次合并都能Fast-forward,我们后面会将其他方式的合并。

git branch -d branch_name_b

#merge conflict

git merge branch_name_b

  #error_merge_conflict

git status

  #show the conflict information

vi filename

  #modify the conflict file 

  #in fact, this step will modify the two files at the same time

git merge branch_name_b

#ff or no-ff

git merge branch_name_B

git merge --no-ff -m "merge with no-ff" branch_name_B

  #ff和no ff的结果都是一样的,都会合并,
  #其最大区别在于,ff会"默默"地合并,其仅仅是将指针移动到分支的最新处(当然删除分支并不会对master产生任何影响),
  #而no ff则是重新建立了一个commit,然后将合并当做一个comiit来处理,自然就产生了合并的信息.

git stash
git stash list
git stash apply <choosed parameter which can assign the stash ID>
git stash drop <choosed parameter which can assign the stash ID>

git branch -d branch_name #after merge
git branch -D branch_name #enforce delete

git remote

git remote -v

    #查看远程库信息,-v参数查看详细信息

git push origin master
git push origin dev #other branch

    #将本地库提交到远程库

#多人合作,push时冲突

#another workmate

git clone [email protected]:lactic-h/learngit.git
git checkout -b dev
git add
git commit
git push origin dev

#myself
git push origin dev

  #因为小伙伴在我之前已经提交过一次dev,所以我再次提交dev时,可能会冲突
  #solution:先把remote的dev pull下来,在pull的时候会自动merge,merge的时候会出现conflict,然后在本地解决冲突,commit后再push
git pull
  #pull的时候可能会报错,因为本地的dev分支并没有与远程的origin/dev分支相链接
  #solution:设置dev与origin/dev链接
  git branch --set-upstream dev origin/dev
  #上面这个命令好像不能用了
  git branch --set-upstream-to origin/dev dev

    #假设远程公共仓库,有一个master和一个dev分支,进行多人协作开发时候(每个人的公钥必须加入到远程账号下,否则无法push),
    #每个人都应该clone一份到本地。
    #但是clone的只是master,如果远程的master和dev一样,没关系;如果不一致,则需要clone出dev分支
    #git checkout -b dev origin/dev
    #之后每个人在本地的dev分支上独自开发(最好不要在master上开发),
    #开发完成之后push到远程dev
    #git push origin dev。
    #之后审核人再确定是否合并dev到master。

#tag

git tag tag_name

     #给当前分支的最近提交的commit打标签

git tag

     #查看标签
git log --pretty=oneline --abbrev-commit
    #查看之前commit的信息
git tag tag_name commit_ID

     #给之前提交的commit打标签
git show tag_name

     #查看标签信息。
git tag -a tag_name -m "explanation message"
     # -a参数指明tag_name, -m参数指定说明文字
git tag -s v0.2 -m "signed version 0.2 released" fec145a(commit_ID)
    # 可以通过-s用私钥签名一个标签
    #签名采用PGP签名,因此,必须首先安装gpg(GnuPG),如果没有找到gpg,或者没有gpg密钥对,就会报错:
git tag -d tag_name

     #删除标签
git push origin tag_name

     #因为创建的标签都只存储在本地,不会自动推送到远程。所以,如果要推送某个标签到远程,
git push origin --tags

     #一次性推送全部尚未推送到远程的本地标签

#如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:
#然后,从远程删除。删除命令也是push,但是格式如下:
git tag -d v0.9
git push origin :refs/tags/v0.9

#config

.gitignore

    #本地配置文件

current_repository.git/config

    #当前仓库的git配置文件
~/.gitconfig

    #当前用户的git配置文件

git config --global alias.st status
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.unstage ‘reset HEAD‘
git config --global alias.last ‘log -1‘
git config --global alias.lg "log --color --graph --pretty=format:‘%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset‘ --abbrev-commit"

时间: 2024-10-11 13:42:51

gitGuide的相关文章

还在使用pdf、word简历?简单五步实现github托管个人逼格简历

写在前面: 什么是git.github? git 版本控制工具 github 通过git工具做的版本控制的项目托管平台 项目开发肯定不止一个程序猿,多个程序猿针对同一个文件进行代码读写操作时,是先保存程序猿a还是程序猿b呢?这就很容易冲突,所以就有了git这种版本控制工具解决项目更新.慢慢的随着开源精神的发展以及在线的需求就有了github项目托管平台,对于git本地服务来说,github就是一个远程的仓库. 逼格在哪里? Github已经取代Sourceforge,成为最活跃的代码交流社区,一

网址收集

JQuery之家: http://www.htmleaf.com/html5/html5muban/ 毕向东JAVA基础教程全套收藏版:  https://pan.baidu.com/share/link?shareid=656116772&uk=2401520044#list/path=%2F&parentPath=%2Fjava JAVA自学资料: http://www.bjpowernode.com/Video.html?zb1511-yllqqun 微信小程序解决方案: https

Git 入门 ---- Git 与 SVN 区别

一. Git 是什么? Git 是目前世界上最先进的分布式版本控制系统 二. 基础知识 有中心的 SCM(Software Configuration Management) 服务端:单数据库 客户端:工作目录.状态 无中心的 SCM 任何人都可以是服务端 工作目录也是仓库 操作无需网络连接 三. SVN 与 Git 异同? 相同: 能记录文件的所有更改记录.这样是为了大量更改后,但是最后觉得还是原来的版本代码好,可以有记录回到过去,而不用采用 Copy 旧代码另存为某文件,然后某个时间从大量文

看着看着就哭了的前端地址大全

原文地址:http://www.w3cfuns.com/notes/16438/db8e9e0bf80676f32b2cafb9b4932313.html 综合类 | 地址--- | --- 前端知识体系|http://www.cnblogs.com/sb19871023/p/3894452.html前端知识结构|https://github.com/JacksonTian/fksWeb前端开发大系概览|https://github.com/unruledboy/WebFrontEndStack

git常用操作命令

自动换到新部门后,每晚九点到十点的正常下班,也没多少时间做整理.虽然事情多,空闲时间少了,但这不是不做总结的借口.废话不多说,先从一篇简单的开始吧!关于git命令原理相关的介绍网上 一大堆,这里只是整理下自己平常工作中用到的最多的几个命令,做做笔记. 1.新建分支 新建分支并切换到新建的分支 git checkout -b hotfix_newbranch_20150417 推送本地的分支到远端 git push -u origin hotfix_newbranch_20150417 切换到指定

Coding 代码管理快速入门(转)

当项目创建好了之后,我们该如何上传代码到 coding 上呢? Coding 网站使用“ Git 仓库”(类似 github )来管理代码. 其操作原理在于:利用 git 服务,将本地的项目目录下的文件同步到 coding 的“ Git 仓库” 本文主要包含如下内容: 命令行上传代码 图形界面上传代码 常见问题 注:以下演示均在 windows8 系统上进行 若在创建项目时,并未选择“启用 readme.md 文件初始化项目”,“开源许可证”和“ gitignore 文件 ”这三个选项(当然我们

Git学习资源推荐

Git在线练习 http://pcottle.github.io/learnGitBranching/ https://try.github.io/levels/1/challenges/1 Git入门 http://code.tutsplus.com/tutorials/easy-version-control-with-git–net-7449 http://blog.jobbole.com/25775/ http://rogerdudler.github.io/git-guide/inde

【Tools】Pro Git 一二章读书笔记

记得知乎以前有个问题说:如果用一天的时间学习一门技能,选什么好?里面有个说学会Git是个很不错选择,今天就抽时间感受下Git的魅力吧. Pro Git (Scott Chacon) 读书笔记: 第一章:Git起步 版本控制出现的原因及分类 类别 基本原理 优点 缺点 本地版本控制系统 自己把复制整个项目,改名或加上备份时间来区别 采用某种简单的数据库来记录文件的历次更新差异 简单 有时会混淆所在的工作目录, 丢了文件毛了数据就没有后退的路 集中化的版本控制系统 解决在不同系统上的开发者协同工作,

linux-mint下搭建android,angularjs,rails,html5开发环境

目录[-] 必备软件: 环境配置: [open-jdk-6.0] [android-sdk] [ant] [github] [node.js] [rvm](ruby-1.9.3 rails-4.0.0 gemfile) 必备概念: 关于自动化部署我推荐大家参谋一下Fortune Zhang的一篇文章:android开发过程中我是怎么一步步让项目自动化起来的 最新更新链接:https://gist.github.com/Channely/8296901 系统以64bit为例进行配置/2013/11