zoukankan      html  css  js  c++  java
  • Git学习

    工作区—(add)—>暂存区—(commit)—>本地仓库—(push)—>远程仓库

    远程仓库—(clone、pull、fetch)—>本地仓库—(reset)—>暂存库—(reset)—>工作区

    把一个项目提交到码云上

    方式一:(推荐)                                                          

      在码云上创建一个空的远程仓库

      将远程仓库克隆到本地(git clone url)

      在本地仓库增添内容

      将工作区的内容添加到暂存区(git add .)

      将暂存区中的内容提交到本地仓库(git commit -m "说明")

      将本地仓库中的内容推送到远程仓库(git push origin master)

    方式二:

      在本地初始化仓库(git init)

      向本地仓库增添内容

      将工作区的内容增添到暂存区(git add .)

      将暂存区中的内容提交到本地仓库(git commit -m "提交说明")

      在码云上新建一个空仓库

      本地仓库和远程仓库建立联系(git remote add origin 网址)

      将本地仓库的内容推送到远程仓库(git push origin master)

    git命令

    1.git status  状态

    2."git add <file>..." 更新要提交的内容

    3."git checkout -- <file>..." 丢弃工作区的改动

    4.git log       打出git 更新的log

    5.git reset --soft ...    重置软件

    6.git reset --hard ...   重置硬件

    7.git stash list  显示进度列表。此命令显然暗示了git stash 可以多次保存工作进度,并用在恢复时候    选择。

    8.git stash    保存当前的工作进度。会分别对暂存区和工作区的状态进行保存。

    9.git pull --rebase  更新本地分支

    Git 是一个很强大的分布式版本控制系统。它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势。

    Git常用操作命令:

    1) 远程仓库相关命令

    检出仓库:$ 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分支

    2)分支(branch)操作相关命令

    查看本地分支:$ git branch

    查看远程分支:$ git branch -r

    创建本地分支:$ git branch [name] ----注意新分支创建后不会自动切换为当前分支

    切换分支:$ git checkout [name]

    创建新分支并立即切换到新分支:$ git checkout -b [name]

    删除分支:$ git branch -d [name] ---- -d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项

    合并分支:$ git merge [name] ----将名称为[name]的分支与当前分支合并

    创建远程分支(本地分支push到远程):$ git push origin [name]

    删除远程分支:$ git push origin :heads/[name] 或 $ gitpush origin :[name] 

    *创建空的分支:(执行命令之前记得先提交你当前分支的修改,否则会被强制删干净没得后悔)

    $git symbolic-ref HEAD refs/heads/[name]

    $rm .git/index

    $git clean -fdx

    3)版本(tag)操作相关命令

    查看版本:$ git tag

    创建版本:$ git tag [name]

    删除版本:$ git tag -d [name]

    查看远程版本:$ git tag -r

    创建远程版本(本地版本push到远程):$ git push origin [name]

    删除远程版本:$ git push origin :refs/tags/[name]

    合并远程仓库的tag到本地:$ git pull origin --tags

    上传本地tag到远程仓库:$ git push origin --tags

    创建带注释的tag:$ git tag -a [name] -m 'yourMessage'

    4) 子模块(submodule)相关操作命令

    添加子模块:$ git submodule add [url] [path]

       如:$git submodule add git://github.com/soberh/ui-libs.git src/main/webapp/ui-libs

    初始化子模块:$ git submodule init  ----只在首次检出仓库时运行一次就行

    更新子模块:$ git submodule update ----每次更新或切换分支后都需要运行一下

    删除子模块:(分4步走哦)

     1) $ git rm --cached [path]

     2) 编辑“.gitmodules”文件,将子模块的相关配置节点删除掉

     3) 编辑“ .git/config”文件,将子模块的相关配置节点删除掉

     4) 手动删除子模块残留的目录

    5)忽略一些文件、文件夹不提交

    在仓库根目录下创建名称为“.gitignore”的文件,写入不需要的文件夹名或文件,每个元素占一行即可,如

    target

    bin

    *.db

    =====================

    Git 常用命令

    git branch 查看本地所有分支
    git status 查看当前状态 
    git commit 提交 
    git branch -a 查看所有的分支
    git branch -r 查看本地所有分支
    git commit -am "init" 提交并且加注释 
    git remote add origin git@192.168.1.119:ndshow
    git push origin master 将文件给推到服务器上 
    git remote show origin 显示远程库origin里的资源 
    git push origin master:develop
    git push origin master:hb-dev 将本地库与服务器上的库进行关联 
    git checkout --track origin/dev 切换到远程dev分支
    git branch -D master develop 删除本地库develop
    git checkout -b dev 建立一个新的本地分支dev
    git merge origin/dev 将分支dev与当前分支进行合并
    git checkout dev 切换到本地dev分支
    git remote show 查看远程库
    git add .
    git rm 文件名(包括路径) 从git中删除指定文件
    git clone git://github.com/schacon/grit.git 从服务器上将代码给拉下来
    git config --list 看所有用户
    git ls-files 看已经被提交的
    git rm [file name] 删除一个文件
    git commit -a 提交当前repos的所有的改变
    git add [file name] 添加一个文件到git index
    git commit -v 当你用-v参数的时候可以看commit的差异
    git commit -m "This is the message describing the commit" 添加commit信息
    git commit -a -a是代表add,把所有的change加到git index里然后再commit
    git commit -a -v 一般提交命令
    git log 看你commit的日志
    git diff 查看尚未暂存的更新
    git rm a.a 移除文件(从暂存区和工作区中删除)
    git rm --cached a.a 移除文件(只从暂存区中删除)
    git commit -m "remove" 移除文件(从Git中删除)
    git rm -f a.a 强行移除修改后文件(从暂存区和工作区中删除)
    git diff --cached 或 $ git diff --staged 查看尚未提交的更新
    git stash push 将文件给push到一个临时空间中
    git stash pop 将文件从临时空间pop下来
    ---------------------------------------------------------
    git remote add origin git@github.com:username/Hello-World.git
    git push origin master 将本地项目给提交到服务器中
    -----------------------------------------------------------
    git pull 本地与服务器端同步
    -----------------------------------------------------------------
    git push (远程仓库名) (分支名) 将本地分支推送到服务器上去。
    git push origin serverfix:awesomebranch
    ------------------------------------------------------------------
    git fetch 相当于是从远程获取最新版本到本地,不会自动merge
    git commit -a -m "log_message" (-a是提交所有改动,-m是加入log信息) 本地修改同步至服务器端 :
    git branch branch_0.1 master 从主分支master创建branch_0.1分支
    git branch -m branch_0.1 branch_1.0 将branch_0.1重命名为branch_1.0
    git checkout branch_1.0/master 切换到branch_1.0/master分支
    du -hs

    -----------------------------------------------------------
    mkdir WebApp
    cd WebApp
    git init
    touch README
    git add README
    git commit -m 'first commit'
    git remote add origin git@github.com:daixu/WebApp.git
    git push -u origin master

    Git的版本管理

      清空暂存区(git rm --cache 文件名)

      查看历史(过去的)版本(git log)

      查看所有(过去的和未来的)版本和操作记录(git reflog)

      回到某个版本(git reset)git reset --hard 版本号  回退到某个版本 

                                                git reset --soft 版本号  回退到某个版本,把未来文件放在暂存区

                 git reset --mixed 版本号 回退到某个版本,把未来文件放在工作区

      给当前版本添加轻量级的版本标签(git tag 标签号)

      给历史版本添加轻量级的版本标签(git tag 标签号 版本号)

      添加有备注的版本标签(git tag -a 标签号 -m "备注")

      查看标签(git tag)

      显示标签详细信息(git show 标签号)

      删除标签(git tag -d 要删除的标签号)

      对比版本之间的差异(git diff 前版本号 (标签号) 后版本号 (标签号))

      将本地仓库某一个标签推到远程仓库(git push origin 标签号)

      将本地仓库所有标签推到远程仓库(git push origin --tag)

      删除标签,先删除本地仓库的标签,再删除远程仓库标签(git push origin :refs/tags/版本号)

    团队合作

    • 集中式方式(和 SVN 类似)

      集中式方式

      步骤:

      • 负责人将团队成员添加项目开发者

      • 团队成员开发项目推送到远程仓库

      • 在提交之前要先从远程仓库拉取最新的提交(git pull)

      • 解决冲突提交到远程仓库(git add . git rebase --continue)

      • 再次推送到远程仓库

    • fork + Pull Requests 方式(推荐的方式)

      fork pull-requests

      步骤:

      • 每个人 fork 中央仓库项目
      • 推送到自己 fork 过的远程仓库(git remote add upstream 中央仓库的地址)
      • 拉取中央仓库的更新(git pull upstream master)
      • 完成某个功能发起 Pull Requests
      • 中央仓库所有者合并我们的 Pull Requests

    Git全局设置

        git config --global user.name "***"

        git config --global user.email "***@***.com"

    查看配置

        git config --list

    创建一个本地仓库

        git init

    克隆github上现有的仓库

        git clone [url]  可以在克隆仓库的时候自定义本地仓库的名字 git clone [url] name

    检查当前文件状态

        git status

        使用 git status -s 命令或 git status --short 命令,将得到一种更为紧凑的格式输出。新添加的未跟踪文件前面有 ?? 标记,新添加到暂存区中的文件前面有 A 标记,修改过的文件前面有 M 标记。M 有两个可以出现的位置,出现在右边的 M 表示该文件被修改了但是还没放入暂存区,出现在靠左边的 M 表示该文件被修改了并放入了暂存区。

    创建一个新的文件

        touch newfile.txt   或者使用   vim newfile.txt(详细指令见linux)

        echo 'My Project' >> newfile.txt 编辑文件

        cat newfile.txt  查看文件

        此时再次使用git status 命令能够看到一个未跟踪文件,需要使用git add命令将其纳入跟踪范围

    将工作区内容添加到暂存区进行跟踪

        git add newfile

    查看尚未暂存的文件更新了哪些部分

     git diff

    查看已暂存的文件将要添加到下次提交中的内容

        git diff --staged 或 git diff --cachedd

    提交更新(将暂存区的内容添加到本地仓库)

        git commit

    提交更新时添加说明

        git commit -m "added a new file named newfile"

    强制提交更新

        git commit -a

    移除文件

        如果只是手动或者在命令行使用rm从工作目录中删除文件,运行git status会发现该文件出现在未暂存清单。要从 git 中彻底移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。

        git rm newfile

        git commit -m "delete newfile"

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

        git rm -f newfile

    如果想把文件从 git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中(想让文件保留在磁盘,但是并不想让 git 继续跟踪)这时可以使用--cached

        git rm --cached newfile

    git rm 命令后面可以列出文件或者目录的名字,也可以使用glob模式(glob 模式是指 shell 所使用的简化了的正则表达式,也被称之为 shell 通配符)比如:

        git rm log/*.log 此命令删除 log/ 目录下扩展名为 .log 的所有文件。

    移动文件(常用来重命名)

        git mv oldname newname

    查看提交历史

        git log 按提交时间列出所有的更新

        git log --oneline 显示成一行

        git log --graph 显示成树形

        git log -p -2  -p 用来显示每次提交的内容差异, -2用来仅显示最近两次提交

        git log --stat  列出所有被修改过的文件、有多少文件被修改了以及被修改过的文件的哪些行被移除或是添加

        git log --pretty=**** 指定使用不同于默认格式的方式展示提交历史,还可以利用format选项定制显示的格式,eg:git log --pretty=format:"%h - %an,%ar:%s" 还可以与--graph联用,显示ASCLL图形表示的分支合并历史。

    撤销操作

        git commit --amend

    重新提交前一次的提交,如果前一次提交有任何遗漏(少提交了几个文件,文件内内容有误,提交说明写错了等),你可以随时进行弥补或者更正,然后重新提交。这样会覆盖前一次提交的记录,但前一次的提交时间会保留。重新提交时,提交信息编辑器中可以看到上次的提交说明,可以编辑覆盖。

        git reset HEAD <file> 取消暂存的文件

        git checkout -- <file> 撤销对文件的修改

    远程仓库的使用

        git remote  查看远程仓库

        git remote -v  显示需要读写远程仓库使用的Git保存的简写与其对应的URL

        git remote add <shortname> <url>  将本地仓库与远程仓库建立联系,同时指定一个简写(shortname是的简写,作为远程仓库的名字)

        git fetch 远程仓库名  访问远程仓库,从中拉取所有你没有的数据。执行完成后你将拥有哪个远程仓库所有的分支引用,但不会自动合并或修改你当前的工作,必须手动合并

        git push 远程仓库名 分支名   将本地仓库中的文件推送到远程仓库

        git remote show origin   查看某个远程仓库的更多信息

        git remote rm username2    远程仓库的移除

        git remote rename username2 newname   远程仓库的重命名

    打标签

        git tag   列出标签

        git tag -l 'v1.8.5*'   使用特定模式查找标签

    创建标签:git使用两种主要类型的标签:轻量标签(lightweight)与附注标签(annotated)

    清量标签只是一个特定提交的引用,本质上是将提交校验和存储到一个文件中 - 没有保存任何其他信息。

    附注标签:存储在 Git 数据库中的一个完整对象。 它们是可以被校验的;其中包含打标签者的名字、电子邮件地址、日期时间;还有一个标签信息;并且可以使用 GNU Privacy Guard (GPG)签名与验证。 通常建议创建附注标签。

     附注标签(运行 tag 命令时指定 -a 选项)

        git tag -a 标签号 -m "备注"

        轻量标签(运行tag命令时不指定任何选项)

        git tag 标签号

        查看标签信息与对应的提交信息

        git show 标签号

        为历史提交打标签

        git tag -a 标签号 版本号 -m "备注"

        共享标签(推送标签到共享服务器)

        git push origin 标签号

        一次性推送多个标签(将所有不再远程服务器上的标签全部传送)

        git push origin --tags

    Git分支

        Git默认分支(主分支)名字时master

        分支创建

        git branch testing   git branch命令仅仅创建一个新分支,不会自动切换到新分支

        分支切换

        git有一个名为 HEAD 的特殊指针,指向当前所在的本地分支(项目默认初始分支为master,所以HEAD一开始是指向master分支的)

        使用 git log 命令查看各个分支当前所指的对象。 提供这一功能的参数是--decorate

        git log --oneline --decorate

        切换到一个已存在的分支,使用 git checkout 命令

        git checkout testing   这样HEAD就指向testing分支了

        利用checkout新建分支的同时切换到该分支

        git checkout -b testing2

        过HEAD指针切换不同的分支工作,项目就会产生分叉,使用 git log 命令查看分叉历史。 

        git log --oneline --decorate --graph --all  输出提交历史,各个分支指向以及项目的分支分叉情况

    查看分支

        查看本地分支

        git branch

        查看所有分支(包括远程分支)

        git branch -a

        查看本地分支最后一次提交

        git branch -v

    合并分支

    当我们在新建的工作分支上修复了bug或者加入了新的内容时,可以将其合并到主分支上,首先切换到主分支,然后利用git merge命令进行合并。

        git checkout master

        git merge testing

    删除分支

        git branch -d testing

    克隆指定分支

        git clone -b testing <url>

    删除远程分支

        git push --delete origin testing

    重命名本地分支

        git branch -m testing newtest

    解决本地仓库与远程仓库不一致问题

        pull远程仓库

        git pull origin

        和本地仓库合并

        git merge origin master

        提交

        git push origin master

       

  • 相关阅读:
    什么是电信BOSS系统?
    得到windows系统图标的解决方案
    FusionChart实现金字塔分布图
    OCP-1Z0-051-V9.02-91题
    FusionChart用XML和JSON两种格式提供数据源
    OCP-1Z0-051-V9.02-156题
    OCP-1Z0-051-V9.02-155题
    OCP-1Z0-051-V9.02-154题
    OCP-1Z0-051-V9.02-153题
    OCP-1Z0-051-V9.02-151题
  • 原文地址:https://www.cnblogs.com/mxj961116/p/10321113.html
Copyright © 2011-2022 走看看