常用命令:
一、常见命令
git init
: 初始化 git 仓库,即将一个文件夹初始化为一个 git 仓库。具体的操作是创建一个.git
隐藏文件夹git status
: 查看仓库的状态git add <file>
: 将文件提交到暂存区git commit -m <代码提交信息>
: 将暂存区的文件提交到仓库中,并附带说明信息git log
: 查看所有产生的 commit 记录git config -l
: 查看自己的配置,默认配置都在.git/config
文件中
1.2 分支相关的命令
git branch <branch_name>
: 如果不加上<branch_name>
,查看当前分支情况。如果加上,就是创建一个分支。git checkout <branch_name>
: 切换到<branch_name>
的分支上git checkout -b <branch_name>
: 创建一个分支并切换到这个分支上,效果相当于合并上面 2 个命令。git merge <branch_name>
: 将<branch_name>
分支合并到当前所在的分支上git branch -d <branch_name>
: 将<branch_name>
分支删除git branch -D <branch_name>
: 将<branch_name>
分支强制删除。如果<branch_name>
分支存在未合并的代码时,那么用-d
是删除不了。
1.3 标签相关的命令
git tag
: 查看历史 tag 记录。git tag <tag_name> <commit_id>
: 在指定提交 id 上创建一个 tag。如果不写<commit_id>
,那就在最新的 commit 上创建一个 tag。git checkout <tag_name>
: 切换到<tag_name>
标签git show <tag_name>
: 查看标签信息git tad -d <tag_name>
: 删除标签git push origin <tag_name>
: 将某个标签推送到远程仓库git push origin :refs/tags/<tag_name>
: 可以删除一个远程标签。
1.4 SSH
提前申明, windows 系统并不自带 SSH, 但是安装的 Git 中带有 SSH。所以以下命令请在 Git bash 下执行。
ssh-keygen -t rsa
: 指定 rsa 算法生成密钥。ssh -T git@github.com
: 测试 ssh 是否成功添加到 github 中
1.5 Github 操作
git clone ...
: 将 github 项目复制到本地的当前目录git push origin <本地分支>:<远程分支>
: 把本地分支中本地代码同步到远程分支git pull orgin <branch_name>
: 把远程 <branch_name> 分支的最新的代码同步到本地当前分支中get remote add origin git@github.com:xxx/xxxx.git
: 将当前本地仓库与远程进行联接git remote -v
: 查看我们当前项目有哪些远程仓库
1.6 补充命令
-
alias 别名
git config --global alias.<别名> "<原命令>"
。比如git config --global alias.c "checkout"
,之后git c
==git checkout
-
diff
git diff
: 比较工作区文件和暂存区文件差异。如果加上文件名,就仅比较这个文件在工作区与暂存区的区别git diff <commit_id1> <commit_id2>
: 比较两次提交之间的差异
-
checkout
- 作用 1 :切换分支、标签以及 commit。本质是「用某个 HEAD 中的最新内容替换掉你的工作区中的文件」。切换时,暂存区的内容不受影响但相当于在切换前执行了
git stash
- 作用 2 :撤销还没进入暂存区的修改的作用。举个例子,假设我们在一个分支开发一个小功能,刚写完一半,这时候需求变了,而且是大变化,之前写的代码完全用不了了,好在你刚写,甚至都没有 git add 进暂存区,这个时候很简单的一个操作就直接把原文件还原:
git checkout a.md
,本质上是将 HEAD 内容覆盖掉工作区的内容。注意,checkout 命令只能撤销还没有 add 进暂存区的文件。
- 作用 1 :切换分支、标签以及 commit。本质是「用某个 HEAD 中的最新内容替换掉你的工作区中的文件」。切换时,暂存区的内容不受影响但相当于在切换前执行了
-
stash
- 作用:把当前分支中的工作区的所有修改先暂存到栈上。
- 运用场景:假设我们正在一个新的分支做新的功能,这个时候突然有一个紧急的bug需要修复,而且修复完之后需要立即发布。当然你说我先把刚写的一点代码进行提交不就行了么?这样理论上当然是ok的,但是这会产品垃圾commit,原则上我们每次的commit都要有实际的意义,你的代码只是刚写了一半,还没有什么实际的意义是不建议就这样commit的,那么就用
git stash
保留。 git stash
: 把当前分支所有没有 commit 的代码先暂存起来git stash list
: 查看所有 stash 记录git stash apply
: 将暂存的代码还原git stash drop
: 把最近一条 stash 记录删除。注意:每次还原代码后,最好删除这条 stash 记录git stash pop
==git stash apply
+git stash drop
- 注意:执行了
git add
的数据在切换分支时,会自动暂存一起。本质上是因为切换分支不影响暂存区的数据。但需要手动恢复。
二、常用概念
2.1 工作区、暂存区与 HEAD
- 工作区就是你还没有执行
git add
的文件,它持有实际文件; - 暂存区就是你执行了
git add
但没执行git commit
的文件,它像个缓存区域,临时保存你的改动; - HEAD 就是你执行完
git commit
,它指向你最后一次提交的结果并且清空暂存区。
在实际中,工作区有一个隐藏目录 .git
,它不属于工作区,而是 Git 的版本库。Git 的版本库里存了很多东西,其中最重要的就是称为 stage(或者叫 index )的暂存区,还有 Git 为我们自动创建的第一个分支
master ,以及指向master的一个指针叫 HEAD。
与此同时,History 保存着所有分支信息,HEAD 指针指向当前分支。
上述命令有待验证。
2.2 分支 branch
stormzhang 从0开始学习 GitHub 系列之「团队合作利器 Branch」
2.3 标签 tag
本质:标签作用于提交上,可以看成是某个提交的别称。
运用:主要用于标记软件的版本号。
2.4 SSH
简单点说,SSH是一种网络协议,用于计算机之间的加密登录。目前是每一台 Linux 电脑的标准配置。而大多数 Git 服务器都会选择使用 SSH 公钥来进行授权,所以想要在 GitHub 提交代码的第一步就是要先添加 SSH key 配置。
命令生成的密钥会存放在两个文件 id_rsa 和 id_rsa.pub ,而 id_rsa 是私钥,id_rsa.pub 就是公钥。这两文件默认分别在如下目录里生成:
Linux/Mac 系统 在 ~/.ssh
下,win系统在 /c/Documents and Settings/<username>/.ssh
下,都是隐藏文件,相信你有办法查看的。
接下来要做的是把 id_rsa.pub 的内容添加到 GitHub 上,这样你本地的 id_rsa 私钥跟 GitHub 上的 id_rsa.pub 公钥进行配对,授权成功才可以提交代码。
2.5 Github 操作
Push
如果你本地代码有更新,那么就需要把本地代码推到远程仓库,这样本地仓库跟远程仓库就可以保持同步了。
Pull
如果远程仓库有更新,那么需要把远程仓库的最新代码更新到本地,然后保证两端代码的同步。一般我们在 push 之前都会先 pull ,这样不容易冲突。
先有远程仓库,后有本地仓库:Clone
使用 git clone
命令,将远程仓库复制到本地中。然后,修改本地仓库并进行 git commit
。然后,git pull orgin <远程分支>
建立本地仓库和远程仓库之间联系以及保持同步。最后,git push origin <本地分支>:<远程分支>
将本地仓库的修改提交到远程仓库中
通过 git clone
命令复制的仓库,不需要使用 git init
初始化,同时也不需要声明与远程仓库关联(因为已经声明了)。
先有本地仓库,后有远程仓库:关联本地已有项目
如果我们本地已经有一个完整的 git 仓库,并且已经进行了很多次 commit ,我们想将本地仓库提交到 github 上。
假设本地仓库 test2,要提交到 github test 项目中,一般步骤是:
- 在 github 创建 test 项目
- 在 test2 目录中输入
git remote add origin git@github.com:xxxx/test.git
将本地 test2 项目与 github 的 test 项目关联起来 git push origin master
合并操作:merge & rebase
git merge branch_a
与 git rebase branch_a
的效果是一样,都是将 branch_a
分支合并到当前的分支中。但两者合并方式不同:rebase 跟 merge 的区别你们可以理解成有两个书架,你需要把两个书架的书整理到一起去,
- 第一种做法是 merge ,比较粗鲁暴力,就直接腾出一块地方把另一个书架的书全部放进去,虽然暴力,但是这种做法你可以知道哪些书是来自另一个书架的;
- 第二种做法就是 rebase ,他会把两个书架的书先进行比较,按照购书的时间来给他重新排序,然后重新放置好,这样做的好处就是合并之后的书架看起来很有逻辑,但是你很难清晰的知道哪些书来自哪个书架。
合并冲突
如果两个分支 a,b 同时修改了同一个位置时,合并到 master 时就会报冲突。不管两个分支合并的先后顺序、中间是否还合并了其他的分支(即任何情况下),都会报冲突。发生冲突的地方,Git 会在发生冲突的位置使用 <<<<< 、======、>>>>> 标记出不同分支的内容。如
<<<<<<< HEAD # HEAD 内容
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1 # feature1 分支的内容
此时,你需要手动地进行正确的合并后,再 git add .
与 git commit
就可以了。
2.6 Git 与 SVN 对比
Git 属于分布式版本控制系统,而 SVN 属于集中式。集中式版本控制只有中心服务器拥有一份代码,而分布式版本控制每个人的电脑上就有一份完整的代码。
参考:
工
链接:https://www.jianshu.com/p/3a437dbc6f2a
来源:简书
https://blog.csdn.net/Hanani_Jia/article/details/77950594源博客地址
首先,我先对GitHub来一个简单的介绍,GitHub有一个很强大的功能就是,你在服务器上边可以创建一个库(稍后会介绍怎么创建),写代码是一件很重的任务,尤其是很多人完成一个很大的项目的时候,就十分的复杂,一群人一起来写某个项目,大家完成的时间,完成的进度都是不相同的,你写一点我写一点,甚至可能你今天写的出现了错误,影响到了我昨天写的代码,最后怎么才能将大家的代码轻松的汇总起来,又怎么在汇总所有人的代码之后发现错误等等一系列问题。这样我们就用到了GitHub这个软件。我们在GitHub服务器上有一个主仓库,这里用来储存你的所有代码,如果不付费的话是所有人都可以看的,如果你不想让别人看到你的代码,可以选择付费仓库。我们创建了主仓库之后,就可以在电脑上创建分支,之后你就可以在电脑上完成自己的代码,写完之后直接同步在电脑的分支,当你认为可以上传的自己的主仓库时,就可以申请更新,当通过审核的时候,你代码就出现在了自己的主仓库中,这样全世界的程序员都可以查看你的代码。全世界现在已经有300万的注册用户,甚至还有一些相当知名的开源项目也在其中公布代码。在GitHub上你可以看到很多计算机领域的精英所分享的自己的代码。这是GitHub的两个主要优点,适合团队协作,以及下载其他优秀者的代码。
今天,GitHub已是:一个拥有143万开发者的社区。其中不乏Linux发明者Torvalds这样的顶级黑客,以及Rails创始人DHH这样的年轻极客。
· 这个星球上最流行的开源托管服务。目前已托管431万git项目,不仅越来越多知名开源项目迁入GitHub,比如Ruby on Rails、jQuery、Ruby、Erlang/OTP;近三年流行的开源库往往在GitHub首发,例如:BootStrap、Node.js、CoffeScript等。alexa全球排名414的网站。
https://github.com/ 这是GitHub的官方网站,在官网上可以注册属于自己的GitHub账号,网上是全英文的,对于英语不好的同学建议使用谷歌浏览器,谷歌浏览器可以翻译网页变为中文使用起来十分方便。
通过简单的步骤之后你就会有一个属于自己的GitHub账号。再简单注册完成之后会需要验证你所输入的邮箱才能正常使用你的GitHub。
在注册完成之后,完成一些简单的设置之后,你需要创建一个属于自己的库
在登陆自己的GitHub账号之后,在网页右上角的小加号是用来创建自己的库的按钮,之后的步骤将网页翻译成中文之后,按提示进行创建自己的库即可。
第一个框是自己为自己的库起一个名字,第二个框是自己对库的一个简单介绍
在创建完成自己的库之后,下面就要让自己的电脑克隆一个自己所创建的库,方面自己电脑上的代码同步到GitHub你所创建的库当中。
为了实现,就需要安装一个软件,Git Bash。
下面我就介绍一下这个软件的安装,以及简单的配置。
git-scm.com 首先进入GitHub官网,下载适合自己电脑的版本
下载完安装包之后运行
在安装过程中直接默认选项即可。
在对git bash进行配置的时候大多数新手都是一头雾水,下面我对配置的每一步就会有详细的记录。代码我也是从网上和学长那边要来的。
我第一次打开软件后看到这个界面也是一脸懵逼的,然后通过查阅了各种各样的资料之后才有了一些思路。
首先要在本地创建一个ssh key 这个的目的就是你现在需要在你电脑上获得一个密匙,就是咱们平时的验证码一样的东西,获取之后,在你的GitHub账号里边输入之后,你的电脑就和你的GitHub账号联系在一起了,这样以后就可以十分方便的通过Git bash 随时上传你的代码。下边介绍一下如果获得这个钥匙,又是如何输入到你的GitHub里边的呢。
很多人第一次打开这个GitHub的时候一脸懵逼,认为这是什么。对于一个新手来说看到这个是没有任何思路,没有任何想法的。
这一栏 开始是你的计算机的名字在我这里就是Hanani @后边的内容是你的计算机型号,很多时候有的人打开之后@后边是乱码,这个时候也不要在意,因为有些电脑型号是中文的,可能在显示的时候出现了问题,不影响你后期的操作。
接下来,就要开始获取属于你自己的密匙。在git bash中所有功能都是通过简单的一些代码来实现的。获取密匙的时候需要输入
$ ssh-keygen-t rsa-C "your_email@youremail.com"
需要输入这个代码,引号内需要改成你在注册GitHub的时候绑定的邮箱账号。之后会有一些简单的让你确认的操作,之后让你会提示操作路径、密码等等,一般情况下就直接按回车一路过就可以。
如果之后你出现了这个界面之后,就说明你的密匙已经成功创建了。现在你就需要去他刚刚显示的存储位置打开它,把其中的内容复制出来。
在.ssh这个文件夹中
之后你会看到这些内容,有的人会在id_rsa后边带有一个pub,之前看网上教程需要找到带pub的文件,因为我在生成后没有带.pub的文件,怀着忐忑的心打开id_rsa后发现这里边的密匙也是可以使用的。打开id_rsa的时候需要用记事本的方式打开。
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIskXqZF3SSFtACK6zoNGJabikTBC3kig6+4j4dCq1tswhA9YkuJCi0WpRmGYWBQ67dyT2or7RedFZlULLZN3nL6AWlo5V2jRXw4WQxCon2rU1p122wmiTzqYOfsykjwullWV4bYcZU4n77A4/9WwlSqZCpEbcdwV8IMkvwfJUInSWqTvmYMcKTWu8yad5DZ2v7LBWfgsL/Tfx7aEB8UjDNJ6SPw30Yijy+62YrftYGgbuwoiL9hDNGO2LfjgOkglHTBJaZe31uQLLWc5uCzd+7Dgh7RaKMmeuz2Uv7yqm/IEU9jH8cPMR9YRPIhmzg38G2s9ILn27QqW9j1hrFY1V 15229020556@163.com
这就是我所获取的密匙,打开之后很长的一段,不要惊讶,没有问题,这就是你所需要的密匙。
现在你就需要登录到你的GitHub上边添加这个密匙,
打开你GitHub的设置界面,找到SSH and GPG keys这个选项之后,在网页右上角有一个添加新的SSH keys 点击
这里的title 是让你给你的密匙起一个名字,根据个人喜好,什么名字都可以,然后把你在刚刚文件中复制的密匙,填写在下边的大框里。保存即可。
之后你就可以回到你的Git bash上边了
然后输入上边的代码,来检查是否成功绑定。第一次绑定的时候输入上边的代码之后会提示是否continue,在输入yes后如果出现了:You've successfully authenticated, but GitHub does not provide shell access 。那就说明,已经成功连上了GitHub。接下来还需要简单的设置一些东西。
输入上边的代码,name最好和GitHub上边的一样,email是一定要是注册GitHub的那个邮箱地址
这两个的顺序可以颠倒,没有固定的顺序。
下面就要将你的库克隆下来到本地电脑中,方便以后进行上传代码。
在库创建完成之后 会有一个网址出现在网页中。
个人习惯将自己的文件储存在d盘之中,所以你先需要将git bash定位在d盘中
在git bash中输入 cd /D 注意盘名字一定要是大写。如不输入这个语句 不给git bash定位的话,默认的本地文件位置是在c盘中。
输入之后会出现/D说明定位成功。
之后输入
git clone后边的网址就是你创建库成功之后的网址
之后打开我所定位的D盘
可以看到,D盘中已经有以我的库名所创建的文件夹了。
打开这个文件夹,然后在其中创建一个任意格式,任意名称的文件。
之后重新定位git 把书 的位置,定位在你库的文件夹。
之后输入ls语句 ls的作用是查看你目前所定位的文件夹中的文件,现在可以看出来,我刚刚所创建的test文件已经出现了。
然后输入 git add test.txt
之后输入然后git commit -m "cc" 引号内的内容可以随意改动,这个语句的意思是 给你刚刚上传的文件一个备注,方便查找记忆而已
输入之后出现以上情况,然后在输入git push origin master 之后会出现一个
界面,在这里登陆你之前注册的GitHub账号之后点击login。
如果之后出现这种情况的话,就是登陆失败了,这时候你就需要输入你GitHub的账号名称
输入之后会出现这个界面,然后再次输入你的GitHub密码。
出现类似界面,你就可以欢呼了,代表你成功了。
现在打开你的GitHub网站,找到你创建的库
发现今天的格子已经绿了,说明你已经上传了你刚刚所创建的文件。
再之后,你只需要将你的代码,放到库的对应的文件夹中,然后使用 先CD到你库里面,再git add 、git commit -m " " 、最后git push origin master,将你的代码提交就可以了。
同样我感觉网页版的github更适合新手小白,https://blog.csdn.net/hanani_jia/article/details/79855429 这是我写的一篇网页版github的简单操作,需要的可以看一下。