[黄映焜/Tunny,20140709]

Git 仓库就是那个.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控制。.git目录位于工作目录内。对于任何一个文件,在 Git 内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged)。

Git的三种状态:

  1. Change(Unstaged):你改动了一个,没有调用任何git命令前,就是这种状态。
  2. Staged暂存区:调用git add或者git commit -a之后,进入Staged状态,表示申明要变动了。
  3. Committed:Commit,生成新的版本commit号,进入此状态。

常见状态提示:

  1. nothing to commit (working directory clean): 所有已跟踪文件在上次提交后都未被更改过
  2. Untracked files: 未跟踪文件
  3. Changes to be committed: 已跟踪文件(在添加add命令之后的文件与修改后又添加add命令之后的文件)
  4. Changes not staged for commit:已跟踪文件的内容发生了变化,但还没有放到暂存区,这样状态的文件即使Commit上去也只是Commit暂存区的版本而不是改文件最新版本

若编辑修改已暂存的文件,后运行git status会出现暂存前后的两个版本(Change和Staged),若此时Commit,则只会同步已暂存(Staged)的那个版本,而不会同步暂存后修改的部分。若要同步暂存后修改的部分,应重新add该文件。

提交时记录的是放在暂存区域的快照,任何还未暂存的仍然保持已修改状态,可以在下次提交时纳入版本管理。

在 Git 中,HEAD是一个指向你正在工作中的本地分支的指针(将 HEAD 想象为当前分支的别名。)

任何包含未解决冲突的文件都会以未合并(unmerged)的状态列出。可以使用git mergetool使用图形工具引导合并解决冲突。

[命令速记]初始化仓库

  • mkdir folderName 建立名为folderName的文件夹
  • touch README 创建一个空文件
  • git init 初始化git仓库,其实是增加了.git隐藏目录,把本地目录变成Git可以管理的仓库
  • git clone 复制远程目录
  • git status 查看状态(一般在commit之前查看当前修改和仓库里面差别多少;git status -s)

[命令速记]分支操作

  • git branch不带任何参数,查看当前目录有多少本地分支,以及当前HEAD指向哪个分支
  • git branch tmpBranch此命令新建一个tmpBranch本地分支(仅仅是建立了一个新的分支,但不会自动切换到这个分支中去)
  • git checkout tmpBranch转换到新建的本地tmpBranch分支
  • git checkout -b tmpBranch新建并切换到本地tmpBranch分支
  • git merge brunchName合并分支(与当前分支合并)
  • git rebase brunchName衍合分支(与当前分支衍合)
  • git rebase --onto master server client找出 client 分支和 server 分支的共同祖先之后的变化,然后把它们在 master 上重演一遍
  • git rebase master server先取出特性分支 server,然后在主分支 master 上重演
  • git branch -d develop删除develop本地分支,如果该本地分支未曾合并,这会提示出错
  • git branch -D develop强制删除develop本地分支
  • git branch -m oldBranch newBranch此命令将oldBranch本地分支重命名为newBranch
  • git push origin :branch-name 删除远程分支(冒号前的空格不可少)

[命令速记]操作仓库

  • git remote 查看当前远程库
  • git remote -v 显示对应克隆地址
  • git remote add pb git://github.com/paulboone/ticgit.git创建一个新的远程仓库,命名为pb
  • git remote show origin查看克隆的origin仓库
  • git remote rename pb paul 将名为pb的远程仓库重命名为paul
  • git remote rm paul移除远程仓库paul
  • git fetch [remote-name]从远程仓库抓取数据到本地(该命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支)

[命令速记]Add操作(进入Staged状态)

运行了 git add 之后又作了修订的文件,需要重新运行 git add 把最新版本重新暂存起来。

add添加到暂存区的文件,git才会监控它的变化。在Unstaged状态的文件变化并不会在命令行中体现出来。

  • git add octocat.txt把文件从change->staged状态(修改现有文件也要git add来修改状态)
  • git add /home/root/aaa/*(当前目录下所有的更新)
  • git reset HEAD gitTest.txt 取消已add到暂存区的文件(与add执行相反的操作)

[命令速记]查看差异

如果已暂存了所有修改过的文件,后运行git diff会什么都没有(因为该命令显示的是当前文件与暂存文件之间的差异)

  • git diff查看文件被修改之后还没有暂存起来的变化内容,显示的是与上次暂存文件的差异
  • git diff test显示当前目录和另一个叫'test'分支的差别
  • git diff --cached查看已经暂存起来的文件和上次提交时的快照之间的差异
  • git diff --staged同上

[命令速记]Commit操作

  • git commit -m "Add cute octocat story" 提交到仓库,必须要一个message说明,–m返回提交时的信息(如果不加-m,则会调用默认编辑器供填写提交信息说明)
  • git commit -a -m 'message'(加上-a参数,把所有已经跟踪过的文件一次性暂存起来一起提交,这样不用先git add再git commit,跳过git add步骤)
  • git commit --amend此命令将使用当前的暂存区域快照提交。如果刚才提交完没有作任何改动,直接运行此命令的话,相当于重新编辑提交说明,但将要提交的文件快照和之前的一样。
  • git commit -m 'initial commit'
  • git add forgotten_file
  • git commit --amend上面的三条命令最终只是产生一个提交,第二个提交命令修正了第一个的提交内容.如果提交时忘了暂存某些修改,可以先补上暂存操作,然后再运行 --amend 提交

[命令速记]移除文件

若在工作目录中手工删除了某个已跟踪(位于暂存区)的文件,则需要运行以下命令记录此次移除文件的操作,最后提交的时候,该文件就不再纳入版本管理了

如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f

若想把文件从 Git 仓库中删除(亦即从暂存区域移除),仅是从跟踪清单中删除,但仍然希望文件本身保留在当前工作目录中,加--cached参数选项即可

  • git rm gitest.txt记录删除gitest.txt文件的操作
  • git rm --cached readme.txt加--cached参数选项

[命令速记]Push与Pull操作

  • git push origin master把本地master分支推送到远程origin仓库上
  • git push origin b1:b2 把本地分支b1推送到远程origin仓库上,并命名为b2
  • git pull从其他的版本库(既可以是远程的也可以是本地的)将代码更新到本地(类似于SVN的Update),与git fetch的不同是会自动合并

[命令速记]标签操作

Git 使用的标签有两种类型:轻量级的(lightweight)和含附注的(annotated)

  • git tag -a v1.4 -m 'my version 1.4' 新建一个含附注(-a)的标签
  • git tag v1.5新建一个轻量级标签
  • git show v1.1 查看相应标签的版本信息

[命令速记]其它常用操作

  • git mv file_from file_to重命名操作,将文件名为file_from的文件重命名为file_to
  • git log查看日志(使用-p选项可以展开显示每次提交的内容差异,用 -2 则仅显示最近的两次更新)
  • git log --pretty=oneline要求版本信息只能在一行中显示,外还有 short,full 和 fuller 可以用,展示的信息或多或少有些不同
  • git reset octofamily/octodog.txt重置,撤销某次提交(HEAD指向的版本就是当前版本)
  • git checkout -- octocat.txt 还原修改,把filename文件在工作区的修改全部撤销,若该文件在修改后还没有被添加到暂存区,则改回与版本库一样的状态,反之,则改回添加到暂存区后的状态
  • git config --global alias.last 'log -1 HEAD'为命令配置别名,此例为查看最后一次提交信息,这样,直接输入git last就等同于输入git log -1 HEAD

[版本v2.0]

黄映焜/Tunny Wong:

2014-07-09发表v1.0

2014-07-11第一次更新v1.1

2014-07-12第二次更新v2.0

 

[Tunny]Git常用命令与入门的更多相关文章

  1. Git常用命令与入门

    Git 仓库就是那个.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控制..git目录位于工作目录内.对于任何一个文件, ...

  2. Git常用命令和Git团队使用规范指南

    转自:https://wsgzao.github.io/post/git/ 前言 在2005年的某一天,Linux之父Linus Torvalds 发布了他的又一个里程碑作品——Git.它的出现改变了 ...

  3. git常用命令(持续更新中)

    git常用命令(持续更新中) 本地仓库操作git int                                 初始化本地仓库git add .                       ...

  4. Git 常用命令详解

    Git 是一个很强大的分布式版本管理工具,它不但适用于管理大型开源软件的源代码(如:linux kernel),管理私人的文档和源代码也有很多优势(如:wsi-lgame-pro) Git 的更多介绍 ...

  5. Git 常用命令大全

    Git常用操作命令: 1) 远程仓库相关命令 检出仓库:$ git clone git://github.com/jquery/jquery.git 查看远程仓库:$ git remote -v 添加 ...

  6. Git常用命令总结

    Git常用命令总结 git init      在本地新建一个repo,进入一个项目目录,执行git init,会初始化一个repo,并在当前文件夹下创建一个.git文件夹.   git clone ...

  7. GIT常用命令备忘

    Git配置 git config --global user.name "storm" git config --global user.email "stormzhan ...

  8. Git 常用命令2

    Git 常用命令 Git 是一个很强大的分布式版本控制系统.它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势. Git常用操作命令: 1) 远程仓库相关命令 检出仓库:$ gi ...

  9. git常用命令-基本操作

    git常用命令-基本操作 1)      新增文件 新增了Test_1.java git add Test_1.java git commit –m “新增了Test_1.java” git push ...

随机推荐

  1. 小米2在Eclipse 调试,要注意下列步骤。(转)

    小米2在Eclipse 调试,要注意下列步骤.1.连接线,打开设置:USB线连接小米2,在设置-->开发者选项->USB 调是打开.如果这一步,就业在Eclipse中真机调试,下面的步骤不 ...

  2. C/C++ 编译器优化

    0. gcc -o gcc -o 的优化仍然是机械的,想当然的.只有做到深入理解计算机系统,加深对编程语言的理解,才能写出最优化的代码. Linux下gcc 优化等级的介绍 gcc -o0 ⇒ 不提供 ...

  3. POJ1113:Wall (凸包:求最小的多边形,到所有点的距离大于大于L)

    Once upon a time there was a greedy King who ordered his chief Architect to build a wall around the ...

  4. Snowflake算法 ID生成

    Snowflake算法 ID生成 http://blog.csdn.net/w200221626/article/details/52064976 使用UUID或者GUID产生的ID没有规则 Snow ...

  5. hdu5829 Rikka with Subset

    首先考虑本题的$O(n^2)$做法. $Part1$ 对原序列从大到小排序后,考虑每个数字对最终答案的贡献,有第x个数字对答案的贡献十分难以计算,所以考虑计算数字x是集合第K大的方案数,作为数字x对$ ...

  6. Python网络爬虫之BeautifulSoup模块

    一.介绍: Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮 ...

  7. hdoj1003【DP】

    这道题目的DP,写到现在才明白... 每次加或者不加的条件就是这个前面这个子序列合是不是大于等于0,如果不是加了就会让这个位置的值没有意义,如果大于0,他还是在往递增的方向继续前进. 以及这个条件的继 ...

  8. 洛谷P2564 [SCOI2009]生日礼物(单调队列)

    传送门 准确的来说这个应该叫尺取法? 先对所有的点按$x$坐标进行排序 我们维护两个指针$l,r$,每一次令$r$不断右移直到所有颜色齐全,再不断右移$l$直到颜色数不足,那么此时$[l-1,r]$这 ...

  9. Luogu P1754球迷购票问题【dp/卡特兰数】By cellur925

    题目传送门 虽然是水dp,但我感到还是有些无从下手== f[i][j]表示还剩i个50元没考虑,j个100元没考虑的方案数,可有转移f[i][j]=f[i-1][j]+f[i][j-1] 但其实它也可 ...

  10. 51Nod 1092 回文字符串

    最开始毫无头绪,然后参照了一位dalao的博客,思路是一个正序的字符串将其逆序,然后求最长公共子序列(LCS),emm也属于动态规划. #include <iostream> #inclu ...