提:

      远程的主机名(远程仓库服务器名):  origin

   本地的主分支: master(本地master分支)

     远程的主分支: maste(远程仓库的master分支)

  git clone git@gitlab.com:xxx/yyy.git

  使用git clone命令克隆了一个仓库,命令会自动将其添加为远程仓库并默认以 “origin” 为简写,同时会自动设置本地master分支跟踪克隆的远程仓库的master分支。

  使用git remote, 至少应该能看到origin--这是 Git 给你克隆的仓库服务器的默认名字.

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

  origin git@gitlab.com:xxx/yyy.git (fetch)
  origin git@gitlab.com:xxx/yyy.git (push)

也可以在运行 git remote add <shortname> <url> 添加一个新的远程 Git 仓库,同时指定一个可以轻松引用的简写,如添加gs:

  这个名字是作为远程仓库服务器的别名使用, 现在你可以在命令行中使用字符串 gs 来代替整个 URL

   这个名字只能在添加远程仓库时候定义好的,后续建议不要再更改, 在后面的代码中我们就使用origin为远程仓库名. (当然可以使用更换名字git remote rename origin newName) 
假设当前所在的本地分支是master 
$ git remote add gs git@gitlab.com:xxx/yyy.git (fetch)
  $ git remote -v
  gs git@gitlab.com:xxx/yyy.git (fetch) (fetch)
  gs git@gitlab.com:xxx/yyy.git (fetch) (push)
  可以运行git fetch gs:
  $ git fetch gs
  From git@gitlab.com:xxx/yyy.git
* [new branch] master -> gs/master
$ git remote remane gs origin
$ git remote -v origin git@gitlab.com:xxx/yyy.git (fetch) (fetch)
  origin  git@gitlab.com:xxx/yyy.git (fetch) (push)

  当获取数据时候,是使用git fetch [remote-name],例如 

假设当前所在的本地分支是master 

git fetch origin master
git merge master

  必须注意 git fetch 命令会将数据拉取到本地仓库 - 它并不会自动合并或修改当前的工作,  当准备好时必须手动将其合并入你的工作区。

  如果你有一个分支设置为跟踪一个远程分支,可以使用 git pull 命令来自动的抓取然后合并远程分支到当前分支

git pull = git fetch + git merge
当前本地的分支是master, 远程仓库建立了一个分支masterBranch, 现在要关联到本地
git checkout -b masterBranchLocal origin/masterBranch (基于本地master创建一个分支masterBranchLocal,并关联远程仓库的masterBranch,同时本地切换到masterBranchLocal)
git branch (可以查看当前的分支是在masterBranchLocal上面)
  * masterBranchLocal
master
git pull origin masterBranch (从远程仓库的masterBranch下载数据到masterBranchLocal分支上)
或则直接git pull (这行语句和上面一样, 因为当前分支和远程仓库的分支已经关联起来了) 下面的三行语句和上面的是等效的,只不过拆开写了.
git branch masterBranchLocal
git checkout masterBranchLocal
git pull origin masterBranch (这里不能直接用git pull, 因为masterBranchLocal没有和任何仓库的分支关联)

  git push [remote-name] [branch-name]。 当你想要将 master 分支推送到 origin 服务器时(再次说明,克隆时通常会自动帮你设置好那两个名字),那么运行这个命令就可以将所做的备份到服务器:

 $ git push origin master (推送本地master分支到远程仓库master上)这里省略了 refs/for/master
 $ git push origin master:refs/for/master (和上面的命令效果一样)
$ git push origin masterBranch (推送本地master分支到远程仓库masterBranch分支上, 当前处在masterBranch分支上)

  git push的一般形式为 git push <远程主机名> <本地分支名>  <远程分支名> ,例如 git push origin master:refs/for/master ,即是将本地的master分支推送到远程主机origin上的对应master分支, origin 是远程主机名, 第一个master是本地分支名,第二个master是远程分支名。

  如果远程分支被省略,如上则表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在,则会被新建

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

   1. 如何撤销git reset HEAD~1的操作(其实撤销git reset HEAD~n, n为1,2,3,...):
   假如现在我们要撤销git reset HEAD~4的操作:
   首先: git reflog 出现如下

          

我们要获取git reset HEAD~4的id, 从图中可以看出, 我们要复制蓝色框里的id值, 不要复制红色框里的id, 因为我们要撤销这个命令,那么就要获得这个命令之前的id值

      复制到的id是:  c3823b7

      $ git reset --hard c3823b7

      这样就可以撤销该命令了

   =============================================================================================================================
  2. 要删除远程的分支, 直接使用命令git push origin :testBranch1

    如上图,  使用git branch -r,  查看远程的分支, 现在我们要删除远程分支testBranch1

    使用命令 git push origin :testBranch1

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

  3. 使用git管理代码,最不可避免的出现一种情况:
   假设你基于master分支新建一个分支testBranch1, 去处理一些问题。同时你的另一个同事也在master基础上新建一个分支testBranch2,
    你这个同事更改完了代码,git push到testBranch2上去了, 而且已经merge到master主分支了. 此时你想更新他的代码, 但是自己的testBranch1上代码还没有完成, 怎么办?   
下面是本人总结的流程, 亲测可以用.
(查看当前所在的分支, 这里我们是testBranch2, 个人开发用的)
git branch
$ git branch
master
testBranch1
* testBranch2 (查看当前分支修改的内容, 还没有提交到testBranch2分支上, 所以这里会显示出修改的文件)
$ git status
On branch testBranch2
Untracked files:
(use "git add <file>..." to include in what will be committed) testBranch2.txt nothing added to commit but untracked files present (use "git add" to track) (这两步是做add和commit, 但是不做git push origin testBranch2操作, 因为我还有继续更改, 你也可以push上去, 看个人习惯了)
(其实这里的操作是为了checkout分支用的, 不用提交也能切换分支, 但是当文件太多时候, 切换到其他分支, 用git status查看修改文件, 也包含这里修改的文件)
(所以建议这里是commit到本地, 即不做push操作, 个人这里是只commit到本地的操作)
$ git add testBranch2.txt
$ git commit -m "add testBranch2.txt, when checkout back, use git reset HEA~1"
[testBranch2 61acac7] add testBranch2.txt, when checkout back, use git reset HEAD~1
1 file changed, 1 insertion(+)
create mode 100644 testBranch2.txt (切换到master分支, 然后更新master代码)
$ git checkout master
$ git pull origin master (切换到testBranch2分支)
$ git checkout testBranch2 (如果你之前把testBranch2内容push上去了, 这里就不用执行)
(因为我没有push上去, 只commit到本地, 所以这里执行git reset HEAD~1)
(注意这里是先reset, 然后merge)
$ git reset HEAD~1
Unstaged changes after reset:
M testBranch2.txt (这里要merge代码, 可以选择使用 --no-ff 这个参数, 看项目需求, 个人建议使用这个参数)
(git merge –no-ff 可以保存你之前的分支历史。能够更好的查看 merge历史, 以及branch 状态)
(git merge 则不会显示 feature,只保留单条分支记录)
$ git merge --no-ff master (在上面执行git reset HEAD~1后, 查看之前修改的文件)
$ git status
On branch testBranch2
Untracked files:
(use "git add <file>..." to include in what will be committed) testBranch2.txt nothing added to commit but untracked files present (use "git add" to track)

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

未完待续...

git学习(一)的更多相关文章

  1. Git 学习看这篇就够了!

    Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. 可能新手会问"git和github有什么关系啊?" git是一个版本控制工具: githu ...

  2. Git学习笔记与IntelliJ IDEA整合

    Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:http://git-scm.com/downloads Git简要使用说明:h ...

  3. git学习之branch分支

    作为新手,站在我的角度肤浅的来理解,分支就是相当于开辟了一个新的临时工作区,在这个工作区进行文件代码改动,然后在合并到master主工作区,这样能保证主工作区的安全性和稳定性,对于团队协作尤为重要. ...

  4. git学习手册

    #git学习手册 git: Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理.[2] Git 是 Linus Torvalds 为了帮助管理 Linux内核开发而 ...

  5. Git学习笔记(10)——搭建Git服务器

    本文主要记录了Git服务器的搭建,以及一些其他的配置,和最后的小总结. Git远程仓库服务器 其实远程仓库和本地仓库没啥不同,远程仓库只是每天24小时开机为大家服务,所以叫做服务器.我们完全可以把自己 ...

  6. Git学习笔记(四)

    一.忽略特殊文件 在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件. 不需要从头写.gitignore文件,GitHub已经为我们 ...

  7. git 学习笔记6--remote & log

    git 学习笔记6--remote & log 创建SSH Keys ssh-keygen -t rsa -C "1050244110@qq.com" 本地关联远程 git ...

  8. Git学习(4)基本操作

    1.版本提交 首先,接着上个Git学习(3)继续 我们先修改test.txt文本内容,增加一些信息进去,然后保存: Add a new data 第一步:运行命令 git status 命令查看文件是 ...

  9. git学习(这个我没有整理,是我不断在学习的过程中,自己总结的,对象是我,不过有问题的,我们可以相互交流)

    每次git提交,都会有一个parent指针,指向上一次的commit ,   如果合并,master就和hotfix河道一起,就直接删除hotfix就OK     此时,虽然操作一样,大底层实现不一样 ...

  10. git学习笔记01-git最基本的工作原理分布式

    git学习的网站 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000  --廖雪峰老师 ...

随机推荐

  1. JSP错误页面

    exception是JSP九大内置对象之一,其实例代表其他页面的异常和错误.只有当页面是错误处理页面时,即isErroePage为 true时,该对象才可以使用.对于C项,errorPage的实质就是 ...

  2. 主元素问题(Java)

    x称为一个长度为n的数组的a的主元素,如果这个数组里面等于x的元素的数目不少于n/2个. 例如,a={2,3,2,2,5,3,2,4,2},x=2就是这个主元素.给定包含n个元素的数组a,主元素问题就 ...

  3. 教育网bt站点

    北京交通大学 晨光BT (http://cgbt.cn)清华晨光BT(http://thubt.cn)北京科技大学 iBeiKeBT(http://bt.ibeike.com)上海大学 乐乎BT (h ...

  4. C++基础之预处理和语句

    (1)C++语言源程序中可以使用一些预处理中的编译命令,这些命令在程序被正常编译之前执行,被称为预处理命令,这些命令所实现的功能被称为预处理功能(2)常用的预处理命令有文件包含命令.宏定义命令和条件编 ...

  5. Python实现返回指定范围内的所有素数

    # 获取a, b范围的所有素数 def func(a, b): li = [] for i in range(a, b+1): for j in range(2, i): if i % j == 0: ...

  6. java解析xml实例——获取天气信息

    获取xml并解析其中的数据: package getweather.xml; import java.io.IOException; import java.util.HashMap; import ...

  7. 《OD大数据实战》Mahout入门实例

    一.环境搭建 1. 下载 mahout-0.9-cdh5.3.6.tar.gz 2. 解压 3. mahout org.apache.mahout.clustering.syntheticcontro ...

  8. Django路由与视图

    路由层 一.路由匹配规则: 第一个参数是正则表达式,匹配规则按照从上往下一次匹配,匹配到一个之后立即匹配,直接执行对应的视图函数 url(r'login', views.login), 如果按上面的形 ...

  9. 从技术 Leader 的招聘需求看,如何转岗为当前紧缺的大数据相关人才?

    前段时间,跟候选人聊天的时候,一个有多年工作经验的资深 iOS 工程师告诉我,他最近正在学习 Machine Learning 相关的知识.他觉得,对于程序员来说,技术进步大大超过世人的想象,如果你不 ...

  10. C++基本变量类型

    算数类型表 类型 含义 最小存储空间 取值范围 bool 布尔型 –   char 字符型 8位 -2^7 ~ 2^7-1 wchar_t 宽字符型 16位   short 短整型 16位 -2^15 ...