zoukankan      html  css  js  c++  java
  • Git常用命令速记与入门

    前言:Git是什么

    Git是一个开源代码库和分布式版本控制系统。

    它不需要服务器端软件,就可以运作版本控制。可以通过命令行或GUI工具进行操作。

    参加实习工作后才发现公司是使用Git进行项目管理的,这与在校内使用的SVN还是有比较大差别。而且自己在校内过于依赖GUI界面进行项目管理,参加工作后才发现命令行的强大。本文是个人在Windows平台下学习如何使用Git(命令行)后整理的,不是标准的Git教程。欢迎Git初学者浏览学习交流。文中可能有错误,恳请各位路过的大牛指正。

    [注:本文斜体字为示例名称]

    常规初始化操作

    建立名为 folderName 的文件夹

    $mkdir folderName

    初始化git仓库,其实是增加了.git隐藏目录,把本地目录变成Git可以管理的仓库

    $git init

    复制远程目录 abc

    $https://github.com/abc

    查看状态

    $git status

    三种状态

    git管理目录下的文件存在三种状态

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

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

    Git工作流

    分支

    创建仓库的时候,会有一个叫“master” 的默认分支。

    你可以创建并命名自己的分支,这样在自己的分支上改动就不会影响到master和其它分支。

    在自己的分支上的修改确认无误后,可以随时合并到master或其它分支。

    通过让不同的开发者拥有不同分支,使得开发可以建立在同样的已有代码上却互不影响。

    不带任何参数,查看当前目录有多少本地分支,以及当前HEAD指向哪个分支

    $git branch

    此命令新建一个tmpBranch本地分支(仅仅是建立了一个新的分支,但不会自动切换到这个分支中去)

    $git branch tmpBranch

    切换到本地tmpBranch分支

    $git checkout tmpBranch

    新建并切换到本地tmpBranch分支

    $git checkout -b tmpBranch

    合并分支(将tmpBranch分支与当前所在分支合并)

    $git merge tmpBranch

    删除tmpBranch本地分支,如果该本地分支未曾合并,这会提示出错

    $git branch -d tmpBranch

    强制删除tmpBranch本地分支

    $git branch -D tmpBranch

    oldBranch本地分支重命名为newBranch

    $git branch -m oldBranch newBranch

    add(添加)操作

    执行add命令,可令文件从Change(Unstaged)状态变为Staged状态(将改动添加到缓存区)

    octocat.txt文件从change->staged状态

    $git add octocat.txt

    添加当前(aaa)目录下所有的更新到缓存区

    $git add /home/root/aaa/*

    取消已add到暂存区的文件gitTest.txt(与add执行相反的操作)

    $git reset HEAD gitTest.txt

    若编辑修改已暂存(已add到暂存区)的文件,后运行git status会出现暂存前后的两个版本(Change和Staged)。

    若此时Commit,则只会同步已暂存(Staged)的那个版本,而不会同步暂存后修改的部分。

    若要同步暂存后修改的部分,应重新add该文件。

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

    查看差异

    查看文件被修改之后还没有暂存起来的变化内容,显示的是与上次暂存文件的差异

    $git diff

    显示当前目录和另一个叫test分支的差别

    $git diff test

    查看已经暂存起来的文件和上次提交时的快照之间的差异

    $git diff --cached

    Commit(提交)操作

    Commit操作可将改动提交到本地HEAD.

    提交到仓库,包括一个message说明

    $git commit -m "Add cute octocat story"

    加上-a参数,把所有已经跟踪过的文件一次性暂存起来一起提交,这样不用先git add再git commit,跳过git add步骤

    $git commit -a -m 'message'

    以下命令将使用当前的暂存区域快照提交。如果刚才提交完没有作任何改动,直接运行此命令的话,相当于重新编辑提交说明

    $git commit --amend

    以下三条命令最终只是产生一个提交,第二个提交命令修正了第一个的提交内容,补上文件forgotten_file

    如果提交时忘了暂存某些修改,可以先补上暂存操作,然后再运行 --amend 提交

    $git commit -m 'initial commit'
    $git add forgotten_file
    $git commit --amend

    Push(推送)与Pull(更新)操作

    Push命令会把Commit过的改动提交到远端仓库。

    把本地master分支推送到远程origin仓库上

    $git push origin master

    把本地分支b1推送到远程origin仓库上,并命名为b2

    $git push origin b1:b2

    从其他的版本库(既可以是远程的也可以是本地的)将代码更新到本地(类似于SVN的Update)

    $git pull

    移除文件

    若在工作目录中手工删除了某个已跟踪(位于暂存区)的文件,则需要运行移除命令记录此次移除文件的操作。

    最后提交的时候,该文件便不再纳入版本管理。

    记录删除gitest.txt文件的操作

    $git rm gitest.txt

    若想把文件从 Git 仓库中删除(亦即从暂存区域移除),且仅是从跟踪清单中删除,

    但仍然希望文件本身保留在当前工作目录中,加--cached参数选项即可

    $git rm --cached readme.txt

    标签操作

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

    新建一个含附注(-a)的标签

    $git tag -a v1.4 -m 'my version 1.4'

    新建一个轻量级标签

    $git tag v1.5

    查看相应标签的版本信息

    $git show v1.1

    其它常用操作

    重命名操作,将文件名为file_from的文件重命名为file_to

    $git mv file_from file_to

    查看日志(使用-p选项可以展开显示每次提交的内容差异,用-2则仅显示最近的两次更新)

    $git log

    重置,撤销某次提交(HEAD指向的版本就是当前版本)

    $git reset octofamily/octodog.txt

    还原修改,把filename文件在工作区的修改全部撤销,

    若该文件在修改后还没有被添加到暂存区,则改回与版本库一样的状态,

    反之,则改回添加到暂存区后的状态

    $git checkout -- octocat.txt

    为命令配置别名,此例为查看最后一次提交信息,这样,直接输入git last就等同于输入git log -1 HEAD

    $git config --global alias.last 'log -1 HEAD'

  • 相关阅读:
    合一算法最新版
    string.at(i)
    字符串逆转
    String
    Vector
    1005POJ
    但愿天堂一切都好
    合一算法
    合一算法2
    BTREE与其它索引的优缺点对比
  • 原文地址:https://www.cnblogs.com/hykun/p/3834161.html
Copyright © 2011-2022 走看看