git用法之常用命令[克隆、提交]
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用法之常用命令[克隆、提交]的更多相关文章
- git用法之常用命令
1.git 安装好后,如何配置? a: 设置本地用户名.邮箱,很重要!之后的每次提交都会用到这两条信息,说明是谁提交了更新. $ git config --global user.name " ...
- Git安装以及常用命令(图文详解)
**Git安装以及常用命令** 1.下载安装Git,傻瓜式安装相信大家都会. 官网下载地址:[https://git-scm.com/downloads] 2.Git基本操作 (1)git --ver ...
- Git的一些常用命令
一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 简单的说就是托管代码的便于多人开发的管理系统. 二.Git的一些命令,我详细的说一下 我是基于github给大家说一下git的一些常 ...
- Git Bash Here常用命令以及使用步骤
1.首先,要clone项目代码: git clone 链接地址 2.更新代码: git pull 3.添加修改过的文件.文件夹: git add 修改过的文件,文件夹 4.提交并注释: git com ...
- Git 常用命令 更新与提交
整理了一下Git 常用命令,这个版本还是比较好用的,最后附上个人终结版,帮助你快速上手. 取得Git仓库 初始化一个版本仓库 git init Clone远程版本库 git clone yourgit ...
- git初学【常用命令、上传项目到码云或从码云拉取、克隆项目】
1.下载git.https://git-scm.com/ 注册码云:https://gitee.com/2.安装git: 默认安装即可: 安装完成之后打开git bash进行最后一步配置 输 ...
- Git学习 --> 个人常用命令add,commit以及push
Git命令行配置1 安装Github2 安装msysgit3 要配置用户名和油箱 git config --global user.name <用户名> 我的命令就是:git confi ...
- Git之 基本常用命令
Git基本常用命令如下: mkdir: XX (创建一个空目录 XX指目录名) pwd: 显示当前目录的路径. git init 把当前的目录变成可 ...
- 学习Git过程中常用命令的总结
复制远程库git clone git@github.com:Hconly/learngit.git在GitHub上,可以任意Fork开源仓库:自己拥有Fork后的仓库的读写权限:可以推送pull re ...
随机推荐
- HBase Zookeeper 安装学习
https://my.oschina.net/hanzhankang/blog/129335 http://blog.itpub.net/27099995/viewspace-1394831/ htt ...
- C#实现Levenshtein distance最小编辑距离算法
Levenshtein distance,中文名为最小编辑距离,其目的是找出两个字符串之间需要改动多少个字符后变成一致.该算法使用了动态规划的算法策略,该问题具备最优子结构,最小编辑距离包含子最小编辑 ...
- Servlet的生命周期
Servlet的生命周期 Servlet的生命周期是由tomcat服务器来控制的. 1 构造方法: 创建servlet对象的时候调用.默认情况下,第一访问servlet就会创建servlet对象只创建 ...
- Mybatis关联查询和数据库不一致问题分析与解决
Mybatis关联查询和数据库不一致问题分析与解决 本文的前提是,确定sql语句没有问题,确定在数据库中使用sql和项目中结果不一致. 在使用SpringMVC+Mybatis做多表关联时候,发现也不 ...
- mysq大数据分页
mysql limit大数据量分页优化方法 Mysql的优化是非常重要的.其他最常用也最需要优化的就是limit.Mysql的limit给分页带来了极大的方便,但数据量一大的时候,limit的性能就急 ...
- BPM问题
1.安装XFormDesigner后编辑界面报错 解决方法:
- 版本管理工具svn简介
svn简介 SVN是一种C/S架构的版本管理软件 , 能够帮助我们保存开发过程中各个文件的所有历史版本, 你因此可以方便的找回软件的任何一个历史状态., 日常开发中经常用到. 安装使用 1. 在 u ...
- https简介/原理/部署【转】
转自: http://han.guokai.blog.163.com/blog/static/136718271201211631456811/ http://www.barretlee.com/bl ...
- TCP/IP协议详解——邮差与邮局
信号的传输总要符合一定的协议.比如说长城上放狼烟,是因为人们已经预先设定好狼烟这个物理信号代表了“敌人入侵”这一抽象信号.这样一个“狼烟=敌人入侵”就是一个简单的协议. 信号的传输总要符合一定的协议( ...
- ajax两张传输数据方式
encodeURI() 函数可把字符串作为 URI 进行编码. 语法 encodeURI(URIstring) 参数 描述 URIstring 必需.一个字符串,含有 URI 或其他要编码的文本. 返 ...