Git的使用流程及常用命令汇总
Git是一个很好用的版本控制系统,本文对于常用的一些命令进行了汇总。
创建一个存储仓库(repository)
https://github.com/右上角点击"+"号,New repository,创建一个仓库,之后输入仓库的名字,描述和选择pubic/private。
|  | 
配置SSH Key
为了能从远程仓库拉取文件到本地或将本地文件push到远程仓库,需要配置ssh key,否则会出现全选不允许的错误(permission denied)。点击右上角头像-->settings-->SSH and GPG keys,点击New SSH key。

然后cd ~/.ssh,进入本机ssh目录,找到xxx.pub的文件,将文件内容复制到Key文本框中,点击Add SSH key。
拷贝远程仓库到本地(git clone)
当仓库创建后,会创建一个默认的分支master,代码,文件保存在远程存储仓库中,如果我们要把远程代码拿到本地来。进入我们新创建的参考中,在右侧可以看到一个绿色的按钮“Clone or download”,点击之后可以看到一个git url,或者可以用ZIP的格式把文件下载下来,如果用git url的话需要用到命令:
git clone https://github.com/XXX/$repository_name.git
这样在当前路径下就出现了$repository_name的文件夹,里面就是远程仓库中的文件。
创建分支(git checkout -b)
从远程考本到本地后,我们是在master分支上,想要查看当前代码在哪个分支上可以使用命令,会列出本地的分支都有哪些,以及当前是在哪个分支上。
git branch
要查看本地仓库的状态可以使用命令,可以看到哪些文件进行了修改等信息。
git status
如果要再当前分支上再创建出一个新的分支,使用命令,这样就会创建出一个名字为branch_name的新分支,并且会自动换到这个分支上。
git branch branch_name // 创建branch_name分支
git checkout -b branch_name // 创建branch_name分支并从当前分支切换到新的分支
如果已经创建了branch_name分支,那么我可以在master分支和新创建的分支上进行切换,使用命令,这样又回到了master分支上。
git checkout master
但新创建出来的分支只是在本地仓库中,如果要同步到远程仓库中,需要使用命令,这样在远程仓库中就会增加一个名字为branch_name的分支。
git push origin branch_name
提交修改(git commit)
当对文件进行修改后,如果想查看具体某一个文件哪里进行了修改与之前有什么不同,可以使用命令。
git diff file_name
需要提交这些修改时,首先要使用命令,将带提交的文件加入临界存储区。
git add file1 file2
然后提交并加上提交说明,使用命令。
git commit -m "commit message"
然后同步到远程分支上。
git push
查看提交历史(git log)
在每次提交修改的时候都会带一些commit message,如果想看当前分支的提交历史,可以使用命令:
git log
还可以看一下某个文件某行内容被谁修改过,可以使用命令:
git blame file_name
将多个commit合并为一个(git rebase)
通过git log我们可以看到,每次提交都对应了一个编号(commit_id),如果我希望将多个commit合并为一个commit时,需要使用命令,但是这个合并是有限制的,必须是从最近的一次提交开始的连续几个提交。
git rebase -i commit_id
之后会进入一个配置文件,里面列出了每次commit的id和list,前面还有一个字符,表示要进行rebase的动作,将最上面那条记录的首字符修改为“r”,剩下修改为“f”。f表示后面的这条commit合并前面的这条commit,r表示使用这个commit,并且可以重新编辑commit message。修改后继续,就可以从新编辑commit message。
这时可以看到多条commit记录被合并到一条了,然后将新的修改push上去,需要使用命令,这里需要使用force-push才能将rebase后的修改推到远程仓库。
git push -f branch_name
与远程仓库同步(git fetch)
当有多人同时对项目进行开发时,可能有其他人已经向branch提交了新的commit,这是我们本地的文件就不是最新的或者说与远程仓库不同步,如果想获取远程分支都有哪些修改,可以使用命令。
git fetch // 只获取远程branch修改的信息,并不把本地分支与远程分支同步
假设现在在master分支上,如果要把本地文件与远程文件同步,需要使用命令。
git fetch // 获取远程branch修改的信息
git reset --hard origin/master // 将本地branch的指针指向远程master的位置
将当前修改暂时保存(git stash)
在开发过程中可能会遇到这样的情况,在开发一个模块的过程中,来了一个更紧急的任务,而之前的开发过程进行了一半,我们需要保留劳动成果,等待一会继续开发,这时候就需要使用命令。
git stash // 将没有提交的修改保存
git stash list // 查看stash中都有哪些记录
从git stash list中我们可以看到,每一个stash中的存储都是有编号的,stash{0},stash{1}等。如果这时候紧急的任务已经完成了,我们需要继续之前的开发,可以使用命令,将之前存储在stash中的修改恢复回来。
git stash pop stash{0} // 将编号为{0}的这个修改恢复回来
如果要清空stash,可以使用命令。
git stash drop
Git的使用流程及常用命令汇总的更多相关文章
- git flow 工作流程以及常用命令
		一.分支介绍 master 也是产品分支,只有一个,一般情况下不会在这个分支上进行代码操作 develop 只有一个,新特性的开发是基于 develop 开发的,但是不能直接在 develop 上进行 ... 
- Git笔记:Git介绍和常用命令汇总
		Git 是一个开源的分布式版本控制系统,与 CVS, Subversion 等不同,它采用了分布式版本库的方式,不需要服务器端软件支持. 工作流程 Git 的工作流程大致如下: 克隆 Git 资源作为 ... 
- Git学习总结(10)——git 常用命令汇总
		1.git 基本概念: 工作区:改动(增删文件和内容) 暂存区:输入命令:git add 改动的文件名,此次改动就放到了'暂存区'(新增的文件) 本地仓库(简称:本地):输入命令:git commit ... 
- 20145222《信息安全系统设计基础》Linux常用命令汇总
		学习Linux时常用命令汇总 通过Ctrl+f键可在该网页搜索到你想要的命令. Linux中命令格式为:command [options] [arguments] //中括号代表是可选的,即有些命令不 ... 
- Oozie命令行常用命令汇总[转]
		Oozie命令行常用命令汇总 有时候脚本跑多了就不愿意在OozieWeb端去看脚本的运行情况了.还好Oozie提供了很多命令行命令.能通过命令行直接检索自己想看到的脚本信息.在这里简单进行一下总结.一 ... 
- vim常用命令汇总
		vim常用命令汇总: http://www.cnblogs.com/softwaretesting/archive/2011/07/12/2104435.html 定位 本行第一个字符 ctrl+$ ... 
- 【Linux】Linux 常用命令汇总
		查看软件xxx安装内容:dpkg -L xxx 查找软件库中的软件:apt-cache search 正则表达式 查找软件库中的软件:aptitude search 软件包 查找文件属于哪个包:dpk ... 
- Docker笔记:常用命令汇总
		Docker常用命令汇总 启动服务 [root@localhost ~]# service docker start Redirecting to /bin/systemctl start docke ... 
- [svc][op]vim常用命令汇总
		vim常用命令汇总: 定位 本行第一个字符 ctrl+$ 本行最后一个字符 0gg 文章首行 ctrl+G 文章行尾 u 撤销(Undo) 删除 D 从当前位置删除到行尾 ("d$" ... 
随机推荐
- 3)ARP到底属于网络层还是链路层
			说白了 就是有些协议起到了承上启下的作用 比较模糊 很难给出一个精确的定位 
- python后端面试第六部分:git版本控制--长期维护
			################## git版本控制 ####################### 1,git常见命令作用 2,某个文件夹中的内容进行版本管理:进入文件夹,右键git bash 3, ... 
- Eclipse创建java web工程
			Eclipse创建java web工程 eclipse版本:eclipse-jee-4.5-win32-x64 tomcat版本:apache-tomcat-7.0.63-windows-x64 jd ... 
- flink测试用例编写
			使用tableFunction的collect总是npe, 实际可以自定义collector, 在collector中做自己想做的事 不使用现成的collector 
- 3DSMAX安装未完成,某些产品无法安装的解决方法
			3DSMAX提示安装未完成,某些产品无法安装该怎样解决呢?,一些朋友在win7或者win10系统下安装3DSMAX失败提示3DSMAX安装未完成,某些产品无法安装,也有时候想重新安装3DSMAX的时候 ... 
- 为什么有这么多人呼吁要取代Facebook?
			扎克伯格这段时间算是栽了,身为人生大赢家的他或许正在遭受最为灰暗的时刻.因为泄露5000万用户数据这一事件,Facebook股价暴跌且扎克伯格身家缩水.被英国与美国相关部门调查.#删除Facebook ... 
- <USACO09DEC>过路费Cow Toll Pathsの思路
			啊好气 在洛谷上A了之后 隔壁jzoj总wa 迷茫了很久.发现那题要文件输入输出 生气 肥肠不爽 Description 跟所有人一样,农夫约翰以着宁教我负天下牛,休叫天下牛负我的伟大精神,日日夜夜苦 ... 
- tips [ 18870 ]
			Created at 2017-08-23 Updated at 2018-01-31 Category 东方大陆 Tag 东方大陆 上面有编辑时间的,别吐槽说什么过期内容了使用 lightPIC图床 ... 
- SCSS 与 Sass 异同
			SCSS 是 Sass 3 引入新的语法,其语法完全兼容 CSS3,并且继承了 Sass 的强大功能.也就是说,任何标准的 CSS3 样式表都是具有相同语义的有效的 SCSS 文件.另外,SCSS 还 ... 
- RocketMQ介绍与实践
			一.RocketMQ介绍 1.相关术语名词 1. NameSrv:是一个几乎无状态节点,可集群部署,节点之间无任何信息同步. 2. Broker:分为Master与Slave,一个 ... 
