zoukankan      html  css  js  c++  java
  • git命令(一)

    git中每个版本的保存是记录每个版本的快照,只在乎这个文件是否改变。

    Workspace:工作区
    Index / Stage:暂存区
    Repository:仓库区(或本地仓库)
    Remote:远程仓库

    1、git init 

      在git的根目录执行git init在这个目录下会多出一个.git的目录,关于版本的信息都在这个目录里。

    2、git clone <url>

      克隆远程目录,由于是将远程服务器上的仓库完全镜像一份至本地,而不是取某一个特定版本,所以用clone而不是checkout。

    3、git add <file>

      添加文件,只不过这个文件是放在暂存区,需要Git commit才能把他加到远程仓库里面。

    4、git status

      查看git的状态。

      详细信息如下图所示:

      

    5、git reset HEAD <file>...

      取消暂存文件,就是把暂存区的文件取消。

    6、git checkout -- <file>... 

      修改了一个文件,想还原修改。

    7、git diff

      查看了修改了哪些地方

      

      ---a表示修改之前的文件,+++b表示修改后的文件,上图表示在fileb的第一行后添加了一行"bb",原来文件的第一行扩展为了修改后的1、2行。

      "git diff"显示的是文件修改后还没有暂存起来的内容。

    8、git diff --cache

      比较暂存区的文件与之前已经提交过的文件,文件存在于暂存区。

      

      /dev/null表示之前没有提交过这一个文件。

    9、git diff --staged

      比较暂存区的文件与之前已经提交过的文件,文件存在于暂存区。

    10、git rm <file>...

      移除一个文件让GIT不再将其纳入版本控制.

    11、git rm <file>...  --cached

      将一些文件从版本控制中剔除出去,但仍保留这些文件在工作目录中。

    12、git mv 

      git mv file /demon/file1     移动文件

      git mv old_name new_name  重命名文件

    13、git add -i

      开启交互式暂存

      

    14、git clean [options]  

      移除所有未跟踪的文件。

      一般会加上参数-df,-d表示包含目录,-f表示强制清除。

    15、git stash

      git stash list   查看stash列表

      git stash apply   紧急事情处理完了,需要重新回来这里进行原来的工作时,

              只需把Stash区域的内容取出来应用到当前工作目录就行

      git stash apply --index  可能存储的位置改变了,这个命令可以不改变之前的存储状态。

      stash@{filename}

      git stash show   显示stash中的内容,同git stash apply

      git stash drop  文件apply stash后应该就可以把它从stash列表删除,就用这个命令

      git stash pop  可以同时完成apply跟drop的功能

      暂停手中的工作,把正在做的工作保存。等到处理完其他的再回来做。

    16、git commit

      把暂存区的内容提交。

    17、git log

      查看提交历史

      

    18、git commit -a

      跳过暂存区直接提交修改的文件

     19、git commit -m 'commit message'

      快捷地填写提交说明可使用"-m"参数

    20、git commit --amend

      如果我们提交过后发现有个文件改错了,或者只是想修改提交说明,这时可以对相应文件做出修改,

      将修改过的文件通过"git add"添加到暂存区,然后执行这个命令,然后修改提交说明覆盖上次提交,

      但只能重写最后一次提交。

    21、 git rebase -i HEAD~2 或 git rebase -i 3366e1123010e7d67620ff86040a061ae76de0c8

      

      HEAD~2表示倒数第三个提交,这条命令要指定要重排的最旧的提交的父提交,此处要重排

      Second commit与Third commit,所以要指定Initial commit的Commit ID。

      如果我们想交互这两个提交,只需把开头的这两行交换下位置就OK了,交换位置后保存。

      把pick改为reward   修改某个提交。

      pick改为squash     把这个行合到上一行提交。

    22、git revert <commit-id>

      撤销提交。

     23、git reset [options] <commit>

      git reset会修改HEAD到指定的状态 

    • --soft: 只改变HEAD的State,不更改工作区与暂存区的内容
    • --mixed(默认): 撤销暂存区的修改,暂存区的修改会转移到工作区
    • --hard: 撤销工作区与暂存区的修改

    24、git branch <branch-name>

      新建分支

    25、git checkout -b <branch-name>

      切换分支到新建的分支

    git banch -b demon user/demon

    26、git branch -d <branch-name>

      删除分支

    27、git branch -D <branch-name>

      如果在指定的分支有一些unmerged的提交,删除分支会失败,这里可以使用-D参数强制删除分支。

    28、git checkout <branch-name> | <commit>

      检出某一分支或某一提交是同一个命令

    29、git checkout -b [branch_name] --track|-t <remote>/<remote-banch>

      远程分支以(远程仓库名)/(分支名)命令,远程分支在本地无法移动修改,当我们clone一个远程仓库时会

      自动在本地生成一个名叫original的远程仓库,下载远程仓库的所有数据,  并新建一个指向它的分支

      original/master,但这个分支我们是无法修改的,所以需要在本地重新一个分支,比如叫master,并跟踪

      远程分支。

      Clone了远程仓库后,我们还会在本地新建其他分支,并且可能也想跟踪远程分支,这时可以用以下命令

    30、git fetch <remote>

      拉取某个远程仓库的数据

    31、git pull

      本地与远程同步

    32、git push <remote> <local-branch>:<remote-branch>

      当在本地修改提交后,我们可能需要把这些本地的提交推送到远程仓库,这里就可以用git push命令,由于

      本地可以由多个远程仓库,所以需要指定远程仓库的名字,并同时指定需要推的本地分支及需要推送到远程

      仓库的哪一个分支

    33、git push <remote> <branch-name> 等价于 git push <remote> refs/heads/<branch-name>:refs/for/<branch-name>

      如果本地分支与远程分支同名,命令可以更简单

      如果本地分支的名字为空可以删除远程分支

    33、git remote add <short-name> <url>

      添加远程分支的方法

    一个Git对象(object) 包括三个部分:类型大小内容。大小就是指内容的大小,内容取决于对象的类型,有四种类型的对象:"blob"、"tree"、 "commit" 和"tag"。

    • “blob”用来存储文件数据,通常是一个文件。
    • “tree”有点像一个目录,它管理一些“tree”或是 “blob”(就像文件和子目录)
    • 一个“commit”指向一个"tree",它用来标记项目某一个特定时间点的状态。它包括一些关于时间点的元数据,如提交时间、提交说明、作者、提交者、指向上次提交(commits)的指针等等。
    • 一个“tag”是来标记某一个提交(commit) 的方法。
  • 相关阅读:
    window.clipboardData(转载)
    动态添加样式(转载)
    IE6 IE7 FF的CSS Hack总结(转载)
    [轉貼] linux解壓 tar 命令
    [轉]用 snprintf / asprintf 取代不安全的 sprintf
    寫一個函數計算當參數為 n(n很大) 時的值 12+34+56+7……+n
    [轉]vi 與 vim 的指令整理
    MySQL和php採用UTF8的方法
    [轉]printf 引數說明
    [C] warning: ISO C90 forbids mixed declarations and code
  • 原文地址:https://www.cnblogs.com/zhangjiansheng/p/7956502.html
Copyright © 2011-2022 走看看