博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Git学习
阅读量:5007 次
发布时间:2019-06-12

本文共 9435 字,大约阅读时间需要 31 分钟。

工作区—(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)

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常用操作命令:

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

 

 

 

 

 

 

 

 

 

 

 

 

 

   

 

转载于:https://www.cnblogs.com/mxj961116/p/10321113.html

你可能感兴趣的文章
来常工富藤的第一天
查看>>
你想到了,就有别人去实现,那你为什么不去实现呢
查看>>
OSI与TCP/IP模型
查看>>
【IT笔试面试题整理】丑数
查看>>
敏捷开发一千零一问系列之六:业务人员怎样参与开发?
查看>>
双向链表
查看>>
RAL调用
查看>>
freemarker 设置文本内容超过一定长度 用省略号代替
查看>>
jQuery.reveal弹出层使用
查看>>
学习spring in action 第一天
查看>>
asp.net上传功能(单文件,多文件,自定义生成缩略图,水印)
查看>>
bash: ./t.sh:/bin/bash^M:损坏的解释器: 没有那个文件或目录
查看>>
云计算设计模式(八)——外部配置存储模式
查看>>
C++ Primer 有感(复制控制)
查看>>
[转]深入理解闭包(一)
查看>>
经典SQL语句大全(绝对的经典)
查看>>
设计者使用最多的前20专门设计LOGO的免费字体
查看>>
TCP三次握手、四次握手
查看>>
认识System,System32,Syswow64
查看>>
Jmeter如何把CSV文件的路径设置成一个变量,且变量的值是一个相对路径
查看>>