美文网首页
Git 学习之路

Git 学习之路

作者: 楼上那位 | 来源:发表于2016-05-25 20:38 被阅读93次
290760-e8491f69473bf200.jpg

目录

  • clone
  • add
  • commit
  • checkout
  • pull
  • push
  • branch
  • reset
  • diff
  • log
  • status
  • tag
  • rebase
  • cherry
  • stash
  • config
  • revert
  • reflog
远程仓库操作

检出仓库:$ git clone git://github.com/jquery/jquery.git
查看远程仓库:$ git remote -v
添加远程仓库:$ git remote add [name] [url]
删除远程仓库:$ git remote rm [name]
修改远程仓库:$ git remote set-url --push [name] [newUrl]
拉取远程仓库:$ git pull [remoteName] [localBranchName]
推送远程仓库:$ git push [remoteName] [localBranchName]

分支操作

  • 提交本地分支到远程分支
    如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,如下:
    $ git push origin test:master // 提交本地test分支作为远程的master分支
    $ git push origin test:test // 提交本地test分支作为远程的test分支
  • 删除远程分支:
    git push origin :branch-name
    冒号前面的空格不能少,原理是把一个空分支push到server上,相当于删除该分支。

分支(branch)操作相关命令
查看本地分支:$ git branch
查看远程分支:$ git branch -r (如果还是看不到就先 git fetch origin 先)
创建本地分支:$ git branch [name] ----注意新分支创建后不会自动切换为当前分支
切换分支:$ git checkout [name]
创建新分支并立即切换到新分支:$ git checkout -b [name]
直接检出远程分支:$ git checkout -b [name] [remoteName] (如:git checkout -b myNewBranch origin/dragon)

git clone

git clone <repository> <directory>,将repository指向的版本库创建一个克隆到directory目录中。目录directory相当于克隆版本库的工作区,文件都会检出,版本库位于工作区下得.git目录中。
git clone --bare <repository> <directory.git>
git clone --mirror <repository> <directory.git>
上面的两种克隆版本都不包含工作区,直接就是版本库的内容,这样的版本库称为裸版本库。

git branch

git branch,显示当前所在的分支
git branch <branchname>,创建新的分支branchname
git branch -d <branchname> ,删除名称为branchname的分支

git checkout

git checkout branchname,会改变HEAD头指针,主要用于切换分支
git checkout -b branchname,用于创建一个新的分支,并且切换到创建的新的分支上
git checkout --filename,用暂存区中的filename文件来覆盖工作区中的filename文件
git checkout branch --filename,用版本库中的filename文件来覆盖暂存区和工作区中的filename文件
git checkout <commit> --filename,用指定提交中的文件覆盖暂存区和工作区中对应的文件
git checkout -- .或者git checkout .,用暂存区的所有文件直接覆盖本地文件,取消所有的本地的修改,是一条危险的操作

git rm

rm命令删除的文件只是在本地进行了删除,尚未添加到暂存区,也就是说,直接在工作区删除,对暂存区和版本库没有任何影响。
git rm命令会将删除动作加入暂存区,这是执行提交动作,就从真正意义上执行了文件删除

git reset

把当前分支指向另一个位置,并且有选择的变动工作目录和索引
git reset --hard <commit>,替换引用的指向,替换暂存区和工作区
git reset --soft <commit>,只更改引用的指向,不影响暂存区和工作区的内容,但是**将commitID之后的修改置为暂存区状态,版本库的内容变更为上个提交之前的内容**。撤销版本库的提交至暂存区git reset,用HEAD指向的目录树重置暂存区,不会影响工作区的内容,但是暂存区和版本库的内容就变更为commitID 之前的。撤销版本库和暂存区的提交至工作区,变为未提交状态`
git reset -- filename,将文件filename的改动撤出暂存区,暂存区其他文件不变,但不影响工作区。

git add

git add 在提交你修改的文件之前,你需要把它们添加到暂存区。如果该文件是新创建的,你可以执行将该文件添加到暂存区
git add . Git会递归地将你执行命令时所在的目录中的所有文件添加上去,所以如果你将当前的工作目录作为参数,它就会追踪那儿的所有文件
git add -u 使用-u参数调用了git add命令,会将本地有改动(包括删除和修改)的已经追踪的文件标记到暂存区中。
git add -A 使用-A参数会将添加所有改动的已跟踪文件和未跟踪文件。
git add -i,交互式的方式进行添加。

git status

git status,查看你的代码在缓存与当前工作目录的状态
git status -s,将结果以简短的形式输出

git diff

git diff <file> 比较当前文件和暂存区文件差异 git diff
git diff <id1><id2> 比较两次提交之间的差异
git diff <branch1> <branch2> # 在两个分支之间比较
git diff --staged 比较暂存区和版本库差异
git diff --cached 比较暂存区和版本库差异
git diff HEAD <file> 工作区和分支版本库
git diff --stat 仅仅比较统计信息

git cat-file

git cat-file -t 查看Git对象的类型,主要的git对象包括tree,commit,parent,和blob等。
git cat-file -p,查看Git对象的内容

git log

git log --oneline 可以显示更加短小的提交ID.
git log --graph 显示何时出现了分支和合并等信息.
git log --pretty=raw 显示提交对象的parent属性.

git config

git config <section>.<key>,读取和更改INI配置文件的内容。
git config <section>.<key> <value>,修改INI配置文件中某个配置的键值
在全局空间中添加新的用户
git config --global user.name "harvey liu"
git config --global user.email harvey_liu@163.com
设置git命令的别名
git config --global alias.ci commit
git config --global alias.co checkout
删除git全局配置文件中的用户名
git config --unset --global user.name
git config --unset --global user.email

git revert

撤销某次提交
git revert HEAD^ , HEAD之前的提交的反转提交,不会影响工作区,只是针对版本库

  • 注意事项

在clone完成之后,Git 会自动为你将此远程仓库命名为origin(origin只相当于一个别名,运行git remote –v或者查看.git/config可以看到origin的含义),并下载其中所有的数据,建立一个指向它的master 分支的指针,我们用(远程仓库名)/(分支名) 这样的形式表示远程分支,所以origin/master指向的是一个remote branch(从那个branch我们clone数据到本地),但你无法在本地更改其数据。

  1. **git branch -r **
    (to show remote branches git knows about)
    origin/HEAD -> origin/master
    origin/master
    可以发现origin/master是远程分支

$git diff origin/master master (show me the changes between the remote master branch and my master branch).

需要注意的是,remotes/origin/master和origin/master的指向是相同的

  1. git push origin master
    origin指定了你要push到哪个remote

master其实是一个“refspec”,正常的“refspec”的形式为”+<src>:<dst>”,冒号前表示local branch的名字,冒号后表示remote repository下 branch的名字。注意,如果你省略了<dst>,git就认为你想push到remote repository下和local branch相同名字的branch。比如:
**$git push origin master:master **
(在local repository中找到名字为master的branch,使用它去更新remote repository下名字为master的branch,如果remote repository下不存在名字是master的branch,那么新建一个)

$git push origin master (省略了<dst>,等价于“git push origin master:master”)

$git push origin master:refs/for/mybranch (在local repository中找到名字为master的branch,用他去更新remote repository下面名字为mybranch的branch)

**$git push origin HEAD:refs/for/mybranch **(HEAD指向当前工作的branch,master不一定指向当前工作的branch,所以我觉得用HEAD还比master好些)

**$git push origin :mybranch **(再origin repository里面查找mybranch,删除它。用一个空的去更新它,就相当于删除了)

相关文章

  • Git 学习之路

    Git 常用命令: 从远程仓库获取项目到本地 $ git remote add origingit@github....

  • Git 学习之路

    常用单词 HEAD --> 当前版本(HEAD^ --> 上一个版本,HEAD^^ --> 上上版本,HEAD~1...

  • Git学习之路

    为什么下定决心做下笔记,只是因为在公司使用git管理开发项目的时候,只会简单的几个命令,偶尔遇到问题也是在网上搜一...

  • Git 学习之路

    目录 clone add commit checkout pull push branch reset diff ...

  • git 学习之路

    windows 使用git & mac 使用git 1. 创建文件夹workspace 2.进入要管理的目录 右键...

  • git学习之路(git命令)

    初始化 提交代码 分支 合并代码步骤 比如我们要将 test 分支合并到 master 分支 分支拉取

  • 小白学git

    git学习之路 什么是git? git是一些命令工具的集合它可以用来追踪,记录文件的变动。它是采取分布式管理,分布...

  • git学习之路1

    git 本地基本命令

  • git的学习之路

    1、git init——初始化一个git仓库2、git add . 和git add 文件名——添加到本地仓库3、...

  • git学习之路 (代码合并)

    代码合并 现在我们有两个分支 test 和 master现在我们要将test分支合并到master分支上有两种方法...

网友评论

      本文标题:Git 学习之路

      本文链接:https://www.haomeiwen.com/subject/vdvtdttx.html