Git快速入门

如果你不想看长篇的Git教程,想快速了解Git的使用,那么本文可能会对你入门Git有所帮助。由于笔者用的是Windows系统,所以本文只写Git在Windows上的使用。
一、Git安装
去Git官网下载Git的安装程序,安装的过程我就不多说了,没啥好说的。
二、创建本地仓库
Git安装完成后有一个Git Bash,打开Git Bash。输入如下命令:
cd d:
mkdir learngit
cd learngit
上述命令表示切换到电脑D盘,然后创建一个learngit的文件夹并将目录切换到该文件夹下。不确定自己是否已切换到指定目录,可以使用pwd命令显示当前路径。
最后,输入git init命令创建并初始化版本库。初始化完后会在当前目录下生成一个.git的隐藏目录,一般情况下,Windows是默认隐藏带有隐藏属性的目录和文件的,但是可以通过设置让隐藏文件可见。使用ls -ah命令也可以直接看生成的.git目录
三、提交文件
在learngit文件夹下新建一个README.txt的文本文件,然后内容输入This is a README file.。然后输入 git add README.txt命令将文本文件添加进仓库,如果有多个文件,直接用空格隔开一次列出就可以了。接着使用git commit -m "add README file"提交操作。
四、提交修改
修改README.txt文件,将文件内容中的This改为It,使用git status查看仓库状态,显示绿色的文件已修改的状态,表示添加修改成功,接着使用git diff查看修改的内容,然后使用git add README.txt添加修改。最后使用git commit -m "modify README file"提交修改。
如果想查看提交记录,则可以使用git log命令。
五、创建SSH Key
在Git Bash中输入cd ~/.ssh命令查看根目录下有没有.ssh文件夹。如果能进入该文件夹,继续输入ls命令查看该目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可以不用创建SSH Key了。如果都没有,则用cd ~命令切回用户主目录,然后在Git Bash输入:
ssh-keygen -t rsa -C "youremail@example.com"
然后一路回车。完了,在用户主目录下会生成id_rsa和id_rsa.pub这两个文件。可以用cat ~/.ssh/id_rsa和cat ~/.ssh/id_rsa.pub查看文件的内容。
六、在代码托管平台添加公钥
为了便于多人协作开发,一般我们会在远程服务器上建立一个远程仓库用来同步不同开发者的代码。这个远程仓库可以放在某一台电脑上,也可以直接使用第三方的代码托管平台。这里我们选择名气比较大的GitHub来做实验。
登陆你的GitHub帐户。然后点击头像 -> Settings -> 左边栏SSH and GPG Keys -> New SSH key。然后复制上面id_rsa.pub文件中的内容,粘贴进Key文本域内。 Title域,随便填一个都行。
最后,使用ssh -T git@github.com命令来验证这个Key是不是正常工作。如果命令输入后,Key是正常工作的,则打印如下信息:
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
GitHub官方提供了一个非常好用的Git图形化客户端GitHub Desktop。
七、关联远程仓库
- 在GitHub首页,点击New repository创建一个仓库,具体创建步骤这里不做展开说明。
- 创建完成后,在该仓库的首页点击Clone or download->Use SSH->拷贝仓库SSH地址。我的创建的仓库地址是
git@github.com:DavidSheh/learngit.git - 在Git Bash中切换到本地仓库目录,然后输入
git remote add origin git@github.com:DavidSheh/learngit.git。实际操作时请将命令中的远程仓库SSH地址替换成你自己的。如果没有打印任何信息说明关联成功。 - 推送本地仓库内容到远程仓库。第一次推送master分支的所有内容可以使用
git push -u origin master命令。成功后,以后每次有修改后,可以直接用git push origin master命令推送了。
八、克隆远程仓库
如果本地没有远程仓库的项目,想从远程仓库克隆一个仓库到本地应该怎么做呢?
其实很简单,只需要用cd命令切换到想要存放项目的路径,然后直接执行git clone命令就行了,注意命令后面跟的是项目的URL地址。项目在GitHub上的SSH和HTTPS地址均测试成功。
到此为止,Git的操作环境已经熟悉的差不多了,只要能成功的在GitHub上提交代码,那么在国内的代码托管平台(如CSDN Code平台和Coding.Net)托管代码也是很容易的事。
九、Git 常用命令
熟悉了上面的操作后,通过举一反三,Git的其他操作都可以通过查命令文档来操作。下面附上一份常用的命令清单:
git init # 初始化本地git仓库(创建新仓库)
git config --global user.name "xxx" # 配置用户名
git config --global user.email "xxx@xxx.com" # 配置邮件
git config --global color.ui true # git status等命令自动着色
git config --global color.status auto
git config --global color.diff auto
git config --global color.branch auto
git config --global color.interactive auto
git config --global --unset http.proxy # remove proxy configuration on git
git clone git+ssh://git@192.168.53.168/VT.git # clone远程仓库
git status # 查看当前版本状态(是否修改)
git add xyz # 添加xyz文件至index
git add . # 增加当前子目录下所有更改过的文件至index
git commit -m 'xxx' # 提交
git commit --amend -m 'xxx' # 合并上一次提交(用于反复修改)
git commit -am 'xxx' # 将add和commit合为一步
git rm xxx # 删除index中的文件
git rm -r * # 递归删除
git log # 显示提交日志
git log -1 # 显示1行日志 -n为n行
git log -5
git log --stat # 显示提交日志及相关变动文件
git log -p -m
git show dfb02e6e4f2f7b573337763e5c0013802e392818 # 显示某个提交的详细内容
git show dfb02 # 可只用commitid的前几位
git show HEAD # 显示HEAD提交日志
git show HEAD^ # 显示HEAD的父(上一个版本)的提交日志 ^^为上两个版本 ^5为上5个版本
git tag # 显示已存在的tag
git tag -a v2.0 -m 'xxx' # 增加v2.0的tag
git show v2.0 # 显示v2.0的日志及详细内容
git log v2.0 # 显示v2.0的日志
git diff # 显示所有未添加至index的变更
git diff --cached # 显示所有已添加index但还未commit的变更
git diff HEAD^ # 比较与上一个版本的差异
git diff HEAD -- ./lib # 比较与HEAD版本lib目录的差异
git diff origin/master..master # 比较远程分支master上有本地分支master上没有的
git diff origin/master..master --stat # 只显示差异的文件,不显示具体内容
git remote add origin git+ssh://git@192.168.53.168/VT.git # 增加远程定义(用于push/pull/fetch)
git branch # 显示本地分支
git branch --contains 50089 # 显示包含提交50089的分支
git branch -a # 显示所有分支
git branch -r # 显示所有原创分支
git branch --merged # 显示所有已合并到当前分支的分支
git branch --no-merged # 显示所有未合并到当前分支的分支
git branch -m master master_copy # 本地分支改名
git checkout -b master_copy # 从当前分支创建新分支master_copy并检出
git checkout -b master master_copy # 上面的完整版
git checkout features/performance # 检出已存在的features/performance分支
git checkout --track hotfixes/BJVEP933 # 检出远程分支hotfixes/BJVEP933并创建本地跟踪分支
git checkout v2.0 # 检出版本v2.0
git checkout -b devel origin/develop # 从远程分支develop创建新本地分支devel并检出
git checkout -- README # 检出head版本的README文件(可用于修改错误回退)
git merge origin/master # 合并远程master分支至当前分支
git cherry-pick ff44785404a8e # 合并提交ff44785404a8e的修改
git push origin master # 将当前分支push到远程master分支
git push origin :hotfixes/BJVEP933 # 删除远程仓库的hotfixes/BJVEP933分支
git push --tags # 把所有tag推送到远程仓库
git fetch # 获取所有远程分支(不更新本地分支,另需merge)
git fetch --prune # 获取所有原创分支并清除服务器上已删掉的分支
git pull origin master # 获取远程分支master并merge到当前分支
git mv README README2 # 重命名文件README为README2
git reset --hard HEAD # 将当前版本重置为HEAD(通常用于merge失败回退)
git rebase
git branch -d hotfixes/BJVEP933 # 删除分支hotfixes/BJVEP933(本分支修改已合并到其他分支)
git branch -D hotfixes/BJVEP933 # 强制删除分支hotfixes/BJVEP933
git ls-files # 列出git index包含的文件
git show-branch # 图示当前分支历史
git show-branch --all # 图示所有分支历史
git whatchanged # 显示提交历史对应的文件修改
git revert dfb02e6e4f2f7b573337763e5c0013802e392818 # 撤销提交dfb02e6e4f2f7b573337763e5c0013802e392818
git ls-tree HEAD # 内部命令:显示某个git对象
git rev-parse v2.0 # 内部命令:显示某个ref对于的SHA1 HASH
git reflog # 显示所有提交,包括孤立节点
git show HEAD@{5}
git show master@{yesterday} # 显示master分支昨天的状态
git log --pretty=format:'%h %s' --graph # 图示提交日志
git show HEAD~3
git show -s --pretty=raw 2be7fcb476
git stash # 暂存当前修改,将所有至为HEAD状态
git stash list # 查看所有暂存
git stash show -p stash@{0} # 参考第一次暂存
git stash apply stash@{0} # 应用第一次暂存
git grep "delete from" # 文件中搜索文本“delete from”
git grep -e '#define' --and -e SORT_DIRENT
git gc
git fsck
十、参考资料
- 阮一峰老师的常用 Git 命令清单
- Git常用命令备忘
本文是笔者的学习记录,分享给大家,如有错误之处请多多指教。本文欢迎转载,但转载请注明作者和出处:Sheh伟伟的简书
Git快速入门的更多相关文章
- Git快速入门进阶篇
本文接着Git快速入门篇,继续探讨Git在管理项目中的一些应用. 远程仓库的使用 查看远程仓库 查看你已经配置的远程仓库服务器,可以运行 git remote 命令.指定选项 -v,会显示需要读写远程 ...
- git快速入门 push/clone/reset/merge/切换分支全都有
本文介绍git快速入门,从安装/创建init / 发布push/版本回退reset / branch分支切换/合并分支merge 这些基本的操作都有涉及,方便新人快速入手,有需要的朋友mark一下.首 ...
- Git 快速入门--Git 基础
Git 快速入门 Git 基础 那么,简单地说,Git 究竟是怎样的一个系统呢? 请注意接下来的内容非常重要,若你理解了 Git 的思想和基本工作原理,用起来就会知其所以然,游刃有余. 在开始学习 G ...
- Git快速入门和常用命令
一.快速入门 本地初始化一个项目 首先,你需要执行下面两条命令,作为 git 的基础配置,作用是告诉 git 你是谁,你输入的信息将出现在你创建的提交中. git config --global us ...
- git 快速入门及常用命令
身为技术人员,都知道Git是干嘛的.从服务端角度它是代码仓库,可以多人协作.版本控制.高效处理大型或小型项目所有内容:从客户端讲,它能够方便管理本地分支.且与服务端代码的同步,从拉取.合并.提交等等管 ...
- git 快速入门
介绍git的基本知识.文件状态.工作区域以及一个简单的操作示例. 目录 1. git相关介绍 2. 文件状态与工作区域 3. 快速使用 1. git相关介绍 1.1 git.github.gitlab ...
- git 快速入门(二)
一.引子 git代码托管的优秀工具之一, 其工作原理和svn截然不同.一旦拥有主干master分支权限, 只要在本地拉取主干分支, 可以随时随地切换分支. 它拥有众多优点,eg :支持在断网的情况下, ...
- git快速入门(MAC系统,github,ssh key)
如果使用过svn的话,git大致可以认为是多了本地库的svn.git先本地提交commit到本地库,然后再push到远程服务器的库.git是分布式的代码管理工具,基于SSH协议.ssh的作用就是为了不 ...
- 版本管理·玩转git(快速入门git)
如果你用过Word文档写过文章,那么你一定会有这样的经历. 我觉得某一段或者某一句写得不够好,但是,删掉之后我可能会后悔把它删掉了,进而又想把删掉的段落找回来,这时,你想到了一个好办法,将每次的修改都 ...
随机推荐
- H5单页面手势滑屏切换原理
H5单页面手势滑屏切换是采用HTML5 触摸事件(Touch) 和 CSS3动画(Transform,Transition)来实现的,效果图如下所示,本文简单说一下其实现原理和主要思路. 1.实现原理 ...
- 终于等到你:CYQ.Data V5系列 (ORM数据层)最新版本开源了
前言: 不要问我框架为什么从收费授权转到免费开源,人生没有那么多为什么,这些年我开源的东西并不少,虽然这个是最核心的,看淡了就也没什么了. 群里的网友:太平说: 记得一年前你开源另一个项目的时候我就说 ...
- JavaScript Math和Number对象
目录 1. Math 对象:数学对象,提供对数据的数学计算.如:获取绝对值.向上取整等.无构造函数,无法被初始化,只提供静态属性和方法. 2. Number 对象 :Js中提供数字的对象.包含整数.浮 ...
- 清空Github上某个文件的历史版本
title: 清空Github上某个文件的历史版本 author: 青南 date: 2015-01-08 16:04:53 categories: [经验] tags: [Github,histor ...
- Solr 排除查询
前言 solr排除查询也就是我们在数据库和程序中经常处理的不等于,solr的语法是在定语前加[-].. StringBuilder sbHtml=new StringBuilder(); shBhtm ...
- if __name__== "__main__" 的意思(作用)python代码复用
if __name__== "__main__" 的意思(作用)python代码复用 转自:大步's Blog http://www.dabu.info/if-__-name__ ...
- SNMP简单网络管理协议
声明:以下内容是学习谌玺老师视频整理出来(http://edu.51cto.com/course/course_id-861.html) SNMP(Simple Network Management ...
- Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define ...
Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define ... 这个错误是因为有两个相 ...
- 在UPDATE中更新TOP条数据以及UPDATE更新中使用ORDER BY
正常查询语句中TOP的运用: SELECT TOP 1000 * FROM MP_MemberGrade 随意更新一张表中满足条件的前N条数据: UPDATE TOP (1) MP_Member ...
- svnserver hook python
在使用中可能会遇到的错误排除 :1.Error: svn: 解析"D:\www\test"出错,或svn: E020024: Error resolving case of 'D: ...