zoukankan      html  css  js  c++  java
  • [Tunny]Git常用命令与入门

    [黄映焜/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

     
  • 相关阅读:
    修复PLSQL Developer 与 Office 2010的集成导出Excel 功能
    Using svn in CLI with Batch
    mysql 备份数据库 mysqldump
    Red Hat 5.8 CentOS 6.5 共用 输入法
    HP 4411s Install Red Hat Enterprise Linux 5.8) Wireless Driver
    变更RHEL(Red Hat Enterprise Linux 5.8)更新源使之自动更新
    RedHat 5.6 问题简记
    Weblogic 9.2和10.3 改密码 一站完成
    ExtJS Tab里放Grid高度自适应问题,官方Perfect方案。
    文件和目录之utime函数
  • 原文地址:https://www.cnblogs.com/2014GTC/p/3834149.html
Copyright © 2011-2022 走看看