如果你不想看长篇的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_rsaid_rsa.pub这两个文件,如果已经有了,可以不用创建SSH Key了。如果都没有,则用cd ~命令切回用户主目录,然后在Git Bash输入:

ssh-keygen -t rsa -C "youremail@example.com"

然后一路回车。完了,在用户主目录下会生成id_rsaid_rsa.pub这两个文件。可以用cat ~/.ssh/id_rsacat ~/.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

七、关联远程仓库


  1. 在GitHub首页,点击New repository创建一个仓库,具体创建步骤这里不做展开说明。
  2. 创建完成后,在该仓库的首页点击Clone or download->Use SSH->拷贝仓库SSH地址。我的创建的仓库地址是git@github.com:DavidSheh/learngit.git
  3. 在Git Bash中切换到本地仓库目录,然后输入git remote add origin git@github.com:DavidSheh/learngit.git。实际操作时请将命令中的远程仓库SSH地址替换成你自己的。如果没有打印任何信息说明关联成功。
  4. 推送本地仓库内容到远程仓库。第一次推送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

十、参考资料

  1. 廖雪峰Git教程
  2. Git命令大全
  3. 这里还有两篇整理得不错的介绍Git常用命令的文章也介绍个大家:

本文是笔者的学习记录,分享给大家,如有错误之处请多多指教。本文欢迎转载,但转载请注明作者和出处:Sheh伟伟的简书

Git快速入门的更多相关文章

  1. Git快速入门进阶篇

    本文接着Git快速入门篇,继续探讨Git在管理项目中的一些应用. 远程仓库的使用 查看远程仓库 查看你已经配置的远程仓库服务器,可以运行 git remote 命令.指定选项 -v,会显示需要读写远程 ...

  2. git快速入门 push/clone/reset/merge/切换分支全都有

    本文介绍git快速入门,从安装/创建init / 发布push/版本回退reset / branch分支切换/合并分支merge 这些基本的操作都有涉及,方便新人快速入手,有需要的朋友mark一下.首 ...

  3. Git 快速入门--Git 基础

    Git 快速入门 Git 基础 那么,简单地说,Git 究竟是怎样的一个系统呢? 请注意接下来的内容非常重要,若你理解了 Git 的思想和基本工作原理,用起来就会知其所以然,游刃有余. 在开始学习 G ...

  4. Git快速入门和常用命令

    一.快速入门 本地初始化一个项目 首先,你需要执行下面两条命令,作为 git 的基础配置,作用是告诉 git 你是谁,你输入的信息将出现在你创建的提交中. git config --global us ...

  5. git 快速入门及常用命令

    身为技术人员,都知道Git是干嘛的.从服务端角度它是代码仓库,可以多人协作.版本控制.高效处理大型或小型项目所有内容:从客户端讲,它能够方便管理本地分支.且与服务端代码的同步,从拉取.合并.提交等等管 ...

  6. git 快速入门

    介绍git的基本知识.文件状态.工作区域以及一个简单的操作示例. 目录 1. git相关介绍 2. 文件状态与工作区域 3. 快速使用 1. git相关介绍 1.1 git.github.gitlab ...

  7. git 快速入门(二)

    一.引子 git代码托管的优秀工具之一, 其工作原理和svn截然不同.一旦拥有主干master分支权限, 只要在本地拉取主干分支, 可以随时随地切换分支. 它拥有众多优点,eg :支持在断网的情况下, ...

  8. git快速入门(MAC系统,github,ssh key)

    如果使用过svn的话,git大致可以认为是多了本地库的svn.git先本地提交commit到本地库,然后再push到远程服务器的库.git是分布式的代码管理工具,基于SSH协议.ssh的作用就是为了不 ...

  9. 版本管理·玩转git(快速入门git)

    如果你用过Word文档写过文章,那么你一定会有这样的经历. 我觉得某一段或者某一句写得不够好,但是,删掉之后我可能会后悔把它删掉了,进而又想把删掉的段落找回来,这时,你想到了一个好办法,将每次的修改都 ...

随机推荐

  1. Unity3d学习 预设体(prefab)的一些理解

    之前一直在想如果要在Unity3d上创建很多个具有相同结构的对象,是如何做的,后来查了相关资料发现预设体可以解决这个问题! 预设体的概念: 组件的集合体 , 预制物体可以实例化成游戏对象. 创建预设体 ...

  2. SDWebImage源码解读之SDWebImageDownloaderOperation

    第七篇 前言 本篇文章主要讲解下载操作的相关知识,SDWebImageDownloaderOperation的主要任务是把一张图片从服务器下载到内存中.下载数据并不难,如何对下载这一系列的任务进行设计 ...

  3. python爬取github数据

    爬虫流程 在上周写完用scrapy爬去知乎用户信息的爬虫之后,github上star个数一下就在公司小组内部排的上名次了,我还信誓旦旦的跟上级吹牛皮说如果再写一个,都不好意思和你再提star了,怕你们 ...

  4. redis 学习笔记(2)

    redis-cluster 简介 redis-cluster是一个分布式.容错的redis实现,redis-cluster通过将各个单独的redis实例通过特定的协议连接到一起实现了分布式.集群化的目 ...

  5. [C#] 回眸 C# 的前世今生 - 见证 C# 6.0 的新语法特性

    回眸 C# 的前世今生 - 见证 C# 6.0 的新语法特性 序 目前最新的版本是 C# 7.0,VS 的最新版本为 Visual Studio 2017 RC,两者都尚未进入正式阶段.C# 6.0 ...

  6. JavaScript中事件处理

    先看看下面一道题目,请评价以下代码并给出改进意见: if (window.addEventListener) {//标准浏览器 var addListener = function(el, type, ...

  7. 微信小程序开发日记——高仿知乎日报(下)

    本人对知乎日报是情有独钟,看我的博客和github就知道了,写了几个不同技术类型的知乎日报APP 要做微信小程序首先要对html,css,js有一定的基础,还有对微信小程序的API也要非常熟悉 我将该 ...

  8. arcgis api for js入门开发系列八聚合效果(含源代码)

    上一篇实现了demo的图层控制模块,本篇新增聚合效果,截图如下(源代码见文章底部): 聚合效果实现的思路如下: 1.map.html引用聚合包,项目已经包含进来了的聚合文件夹: <script ...

  9. MySQL+Amoeba实现数据库主从复制和读写分离

    MySQL读写分离是在主从复制的基础上进一步通过在master上执行写操作,在slave上执行读操作来实现的.通过主从复制,master上的数据改动能够同步到slave上,从而保持了数据的一致性.实现 ...

  10. OpenGL shader 中关于顶点坐标值的思考

    今天工作中需要做一个事情: 在shader内部做一些空间距离上的计算,而且需要对所有的点进行计算,符合条件的显示,不符合条件的点不显示. 思路很简单,在vertex shader内知道顶点坐标,进行计 ...