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 ...
随机推荐
- BZOJ3160万径人踪灭
Description Input & Output & Sample Input & Sample Output HINT 题解: 题意即求不连续但间隔长度对称的回文串个数. ...
- 使用jOrgChart插件, 异步加载生成组织架构图
jOrgChart插件是一个用来实现组织结构图的Jquery的插件- 一.特点 1.支持拖拽修改子节点: 2.支持节点缩放展示: 3.方便修改css定义样式: 4.超轻量型: 5.兼容性好,基本支持所 ...
- [LeetCode] Burst Balloons 打气球游戏
Given n balloons, indexed from 0 to n-1. Each balloon is painted with a number on it represented by ...
- SQL函数汇总【精选篇】
1.绝对值 SQL:select abs(-1) value O:select abs(-1) value from dual 2.取整(大) S:select ceiling(-1.00 ...
- 如何用TypeScript开发微信小程序
微信小程序来了!这个号称干掉传统app的玩意儿虽然目前处于内测阶段,不过目前在应用号的官方文档里已经放出了没有内测号也能使用的模拟器了. 工具和文档可以参考官方文档:https://mp.weixin ...
- Zabbix2.4.7源码安装手册
一.安装Apache Server 注:使用root安装后,变更拥有者为your-user 1 安装环境 系统: CentOS release 6.6 软件: httpd-2.2.31 2 安装步骤 ...
- caffe中卷积层和pooling层计算下一层的特征map的大小
pool层,其中ceil是向上取整函数 卷积层:
- Java学习笔记(三)
今天主要学习了ant ant概述 ant是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发.在实际软件开发中,有很多地方可以用到ant 开发环境: Sy ...
- BZOJ3434 [Wc2014]时空穿梭
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- Django models .all .values .values_list 几种数据查询结果的对比
Django models .all .values .values_list 几种数据查询结果的对比