1、克隆/下载项目

  1)git clone git@git.soydai.cn:liuxuewen/static-file-3.0.git  或者

  2)git clone http://git.soydai.cn/liuxuewen/static-file-3.0.git

区别:

  a: 第1种使用ssh协议下载,第二种使用http协议,而Git支持多种协议包括 ssh、http、https;

  b: 通过http、https协议下载时,需要输入 Username、Password 登录成功才会下载到本地;

  c: 通过ssh支持的原生git协议速度最快。

2、git提交的常见用法

  1)git add . 或者 git add www/js/a.js  ------添加(所有改动文件/具体某个文件)到暂存区

  2)git commit -m '修改xxxbug'     ------描述并提交到本地当前分支

  3)git push origin develop        ------提交到服务器

 

分析 1)第1步 git add xxx 的目的是什么,为什么要先提交到暂存区?

  答:暂存区存在的主要目的是,为了把当前的确定好已完成的改动暂存先存储起来,来以下几种常见情况,比如:

    a. 改某一次的bug涉及到 a.js、b.js、c.js,修改完a.js后通过 git add a.js 暂时存储到暂存区。此后修改b.js,改到中途改乱了,想回退,怎么办?第一种是 ctrl + z,但可能不巧的是,中间改一半的时候关闭过页面,此时ctrl+z到中间就退不回去了。此时,暂存区就可以发挥作用了。git checkout -- b.js,b.js 回退到修改之前的版本。ctrl + z 完全不用管。

    b. 改某一次的bug涉及到 a.js 一个文件,但是修改非常复杂,涉及到其中的多处地方。快修改结束时,发现有点问题,想回退,由于修改的地方太多,此时 使用 ctrl+z 看得眼花缭乱,怎么办?可以在修改到某一个关键节点时,可以 git add a.js 暂存起前面已经确定的修改。然后可以往后修改,确定改好一处,就暂存一次,这样想回退时,就可以 git checkout -- a.js 退到上次已确定的地方。

  顺便说下,git add . 和 git stage ./xxx 的作用是一样的,stage 翻译过来是阶段,Git是非常鼓励上面几种情况的分阶段暂存的。推荐使用 git stage ...

分析 2)第二步 git commit -m 'xxx' 的意义是什么?最好什么时候使用该命令?

  答:该命令是提交到本地当前分支,-m 'xxx' 是描述这次提交所完成的内容描述。什么时候使用?在某次大的功能开发中,在完成每个小功能模块的开发时,可以先commit到本地分支。

  比如,自己某次的功能开发涉及到三个任务,每个任务的开发过程中,可以通过 git add xxx 暂存的形式小步前进,在完成一个个具体的任务时,通过 git commit -m 'xxx' 描述并提交到本地分支。

  注意:有时候,只是一个很小的bug改动,如果先 git add xxx 再 git commit -m 'xxx' 觉得两步有点麻烦,可以简写成一步:git commit -a -m 'xxxx' 即可。但是,要注意的是,如果你有新增的 文件,一步可是不能到位的,必须要 git add xxx 来一下。

分析 3)第三步 git push origin develop 的几种命令方式?可能遇到的问题?

  答:该命令是将在本地分支上的代码,提交到服务器。

    git push 的几种命令方式:

      1: git push origin xxx  提交到服务器的xxx分支

      2: git push   直接提交,你会发现,有时候是可以直接 git push ,但有时候会有提示:  

fatal: The current branch test has no upstream branch.
To push the current branch and set the remote as upstream, use git push --set-upstream origin test

   会让你先通过 --set-upstream 提交,什么意思?简单点说,提交时如果不指定分支,在服务器那边,是没有一个上游分支去对接。所以需要你先--set-upstream 设置上游分支到服务器,告诉他当前 test 分支的服务器上游分支就是 test 分支。此后在test分支的提交,直接:git push 即可。

   只要之前,有人设置过某个上游分支,其他人就可以直接通过 git push 的形式提交。

   可能遇到的问题有?

   a. 提交时,服务器上的文件有改动,git push 时,会提示:

To git@git.soydai.cn:liuxuewen/soeasy-complete-event-static.git
! [rejected] test -> test (fetch first)
error: failed to push some refs to 'git@git.soydai.cn:liuxuewen/soeasy-complete-event-static.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

   因为该项目服务器下已经有过改动,然后本地在提交时,需要先 git pull 下来。目的是:在提交时做好代码合并工作。

   b. git pull origin xxx 后,如果本地修改的文件 正好其他人也修改了并且提交了,此时,git 会在pull下来后 会出现冲突,提示如下:

remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From git.soydai.cn:liuxuewen/soeasy-complete-event-static
96916d0..a7224ce test -> origin/test
Auto-merging a.txt
CONFLICT (content): Merge conflict in a.txt
Automatic merge failed; fix conflicts and then commit the result.

  告诉你:在 merge a.txt 时发生 冲突。在a.txt里的显示如下:

<<<<<<< HEAD
111122233hahha3
=======
111122aa2333
>>>>>>> a7224ce63514c4a5f92f5341fe53f8bf66c86653

  通过 ====== 区分,上面是本地的改动,下面是服务器当前分支的改动。此时需要手动合并,自己确认哪个是需要修改的。修改完后,再重复上面 1、2、3步

关于git pull

  该命令是拉服务器的最新代码,有两种形式:

  1: git pull origin xxx   直接拉取xxx分支代码到本地

  2: git pull  以默认行为拉取当前分支代码到本地,但是有时候会拉不下来,并会提示:

   490d665..69a9c93  test2      -> origin/test2
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details. git pull <remote> <branch> If you wish to set tracking information for this branch you can do so with: git branch --set-upstream-to=origin/<branch> test2

  让你要么用1的形式指定分支,或者是 先设置上游分支的形式,然后再通过 git pull 来拉取最新代码。如下:

liuxuewens-MacBook-Pro:soeasy-complete-event-static liuxuewen$ git branch --set-upstream-to=origin/test2 test2
Branch test2 set up to track remote branch test2 from origin.
liuxuewens-MacBook-Pro:soeasy-complete-event-static liuxuewen$ git pull
Updating 5dc29be..69a9c93
Fast-forward
d.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

  为什么要这么设置一下?原因是:git pull 意味着 git fetch + git merge,先把服务器代码fetch拉到本地,并且要merge合并到某个分支。如果没有设定上游分支,服务器并不知道 pull 的这个分支,需要合并到你本地的 哪一个分支上!所以,

git branch --set-upstream-to=origin/test2 test2

  设置后,意味着,git pull 当前test2分支时,把服务器的 test2 分支代码 合并到 本地的test2分支。

git用法之常用命令[克隆、提交]的更多相关文章

  1. git用法之常用命令

    1.git 安装好后,如何配置? a: 设置本地用户名.邮箱,很重要!之后的每次提交都会用到这两条信息,说明是谁提交了更新. $ git config --global user.name " ...

  2. Git安装以及常用命令(图文详解)

    **Git安装以及常用命令** 1.下载安装Git,傻瓜式安装相信大家都会. 官网下载地址:[https://git-scm.com/downloads] 2.Git基本操作 (1)git --ver ...

  3. Git的一些常用命令

    一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 简单的说就是托管代码的便于多人开发的管理系统. 二.Git的一些命令,我详细的说一下 我是基于github给大家说一下git的一些常 ...

  4. Git Bash Here常用命令以及使用步骤

    1.首先,要clone项目代码: git clone 链接地址 2.更新代码: git pull 3.添加修改过的文件.文件夹: git add 修改过的文件,文件夹 4.提交并注释: git com ...

  5. Git 常用命令 更新与提交

    整理了一下Git 常用命令,这个版本还是比较好用的,最后附上个人终结版,帮助你快速上手. 取得Git仓库 初始化一个版本仓库 git init Clone远程版本库 git clone yourgit ...

  6. git初学【常用命令、上传项目到码云或从码云拉取、克隆项目】

    1.下载git.https://git-scm.com/   注册码云:https://gitee.com/2.安装git:  默认安装即可:  安装完成之后打开git bash进行最后一步配置  输 ...

  7. Git学习 --> 个人常用命令add,commit以及push

    Git命令行配置1 安装Github2 安装msysgit3 要配置用户名和油箱  git config --global user.name <用户名> 我的命令就是:git confi ...

  8. Git之 基本常用命令

    Git基本常用命令如下: mkdir:         XX (创建一个空目录 XX指目录名) pwd:          显示当前目录的路径. git init          把当前的目录变成可 ...

  9. 学习Git过程中常用命令的总结

    复制远程库git clone git@github.com:Hconly/learngit.git在GitHub上,可以任意Fork开源仓库:自己拥有Fork后的仓库的读写权限:可以推送pull re ...

随机推荐

  1. CentOS 7搭建SVN服务器

    安装步骤如下: 1.yum install subversion 2.查看安装版本 svnserve --version 3.创建SVN版本库目录 mkdir -p /var/svn/svnrepos ...

  2. Centos 7 minimal install 无网络无ifconfig的解决

    Centos7这个比较不厚道, minimal install下居然不带net-tools 先要连上网络 修改/etc/sysconfig/network-scripts/ifcfg-ens12312 ...

  3. Unity中脚本的执行顺序总结(@WhiteTaken)

    (Editor)以上是Unity官方文档中的截图,脚本在被挂载到物体上,会启用Editor的方法Reset. (Initialization)当执行脚本开始,初始化的过程中,依次执行的是Awake-& ...

  4. [LeetCode] Wiggle Sort 摆动排序

    Given an unsorted array nums, reorder it in-place such that nums[0] <= nums[1] >= nums[2] < ...

  5. [LeetCode] Reverse Linked List 倒置链表

    Reverse a singly linked list. click to show more hints. Hint: A linked list can be reversed either i ...

  6. [LeetCode] Customers Who Never Order 从未下单订购的顾客

    Suppose that a website contains two tables, the Customers table and the Orders table. Write a SQL qu ...

  7. IT培训行业揭秘(五)

    前面说了一大堆,简单揭露了一些目前培训行业鱼龙混在的情况,那么今天我就站在一个即将毕业的大学生角度来谈谈如何选择一个靠谱的培训机构. 你即将大学毕业了,在大学里面浑浑噩噩的混了几年,马上就要离开校园, ...

  8. Drop it

    FCC题目:队友该卖就卖,千万别舍不得. 让我们来丢弃数组(arr)的元素,从左边开始,直到回调函数return true就停止. 第二个参数,func,是一个函数.用来测试数组的第一个元素,如果返回 ...

  9. ubuntu修改163软件源

    cd /etc/apt cat sources.list sudo su root sudo echo '' > sources.list nano sources.list 复制163软件源 ...

  10. bzoj 4016: [FJOI2014]最短路径树问题

    bzoj4016 最短路路径问题 Time Limit: 5 Sec Memory Limit: 512 MB Description 给一个包含n个点,m条边的无向连通图.从顶点1出发,往其余所有点 ...