个人github https://github.com/wuhaining/-wuhaining.github.io
操作系统:window7
学习参考:
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
http://www.cnblogs.com/BeginMan/p/3591005.html
http://blog.csdn.net/wirelessqa/article/details/20152651
一、下载软件
https://git-for-windows.github.io/
二、安装
安装成功
三、配置
1、打开“Git”->“Git Bash”
2、配置使用用户
因为git是分布式版本控制系统,所以每个机器都必须自报家门:名字和email
在命令行中输入
$ git config --global user.name "Your Name" $ git config --global user.email "email@example.com"
git
config
命令的--global
参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
3、创建版本库
版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
(1)、进入一个目录
ls命令---列出所有的目录
pwd命令----显示当前路径
(2)、创建一个空目录myGit
使用命令 mkdir
注:如果你使用windows系统,为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不含中文。
(3)、把这个目录变成git可以管理的仓库
使用命令 git init
瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个.git
的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。
如果你没有看到.git
目录,那是因为这个目录默认是隐藏的,用ls
-ah
命令就可以看见。
(4)、把文件添加到版本库
编写一个test.txt文件
一定要放在myGit目录下(子目录也行)。【这是一个git仓库】
***********把一个文件放到git仓库需要两步**********
第一步:使用命令 git add,把文件添加到仓库。
没有任何消息显示,说明添加成功。【Unix的哲学是“没有消息就是好消息”】
第二步:使用命令git commit,把文件提交到仓库。
-m
后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
一次添加多个文件
$ git add file1.txt $ git add file2.txt file3.txt $ git commit -m "add 3 files."
1、git status命令查看结果
修改前
修改后
2、git diff命令查看具体修改了什么内容
3、git log命令查看历史操作记录
git log --pretty=oneline命令简化信息
4、git reset命令版本回退
1)、HEAD
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD
表示当前版本,也就是最新的提交3628164...882e1e0
(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^
比较容易数不过来,所以写成HEAD~100
。
2)、版本号
5、git reflog命令用来记录你的每一次命令
6、git checkout -- file在工作区的修改全部撤销。
命令git checkout -- readme.txt
意思就是,把readme.txt
文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt
自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt
已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit
或git
add
时的状态。
注:git
checkout -- file
命令中的--
很重要,没有--
,就变成了“切换到另一个分支”的命令。
7、cat命令查看文件内容
总结:
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file
,就回到了场景1,第二步按场景1操作。
8、rm命令删除文件
rm----直接在文件管理器中删除文件,但是工作区和版本库会不一致。
git rm---使用命令git rm删除文件,在使用命令git commit
如果不小心删除了,可以重新从版本库中checkout一份下来。
使用命令git checkout -- file
五、远程仓库
1、准备工作
第1步:创建SSH
Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa
和id_rsa.pub
这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git
Bash),创建SSH Key:
如下:
第2步:登陆GitHub,打开“Account
settings”,“SSH Keys”页面:
然后,点“Add
SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub
文件的内容:
点击“Add Key”,如下:
为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
最后友情提示,在GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能改)。所以,不要把敏感信息放进去。
如果你不想让别人看到Git库,有两个办法,一个是交点保护费,让GitHub把公开的仓库变成私有的,这样别人就看不见了(不可读更不可写)。另一个办法是自己动手,搭一个Git服务器,因为是你自己的Git服务器,所以别人也是看不见的。这个方法我们后面会讲到的,相当简单,公司内部开发必备。
2、新建远程仓库
3、关联远程库
命令:
$ git remote add origin git@github.com:wuhaining/wuhaining.github.io.git
查看
$git remote -v
推送本地内容到远程库
把本地库的内容推送到远程,用git push
命令,实际上是把当前分支master
推送到远程。
由于远程库是空的,我们第一次推送master
分支时,加上了-u
参数,Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,在以后的推送或者拉取时就可以简化命令。
到了这里遇到一个问题?
按照网上分析所说:
远程仓库中代码版本与本地不一致冲突导致的。
解决:
git pull
再自动merge或手动merge冲突
再次git push
这样就同步了
总结:
要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git
;
关联后,使用命令git push -u origin master
第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master
推送最新修改;
4、创建分支
首先,我们创建dev
分支,然后切换到dev
分支:
$ git checkout -b dev
Switched to a new branch ‘dev‘
git checkout
命令加上-b
参数表示创建并切换,相当于以下两条命令:
$ git branch dev
$ git checkout dev
Switched to branch ‘dev‘
然后,用git branch
命令查看当前分支:
$ git branch
* dev
master
git branch
命令会列出所有分支,当前分支前面会标一个*
号。
测试
改变内容
提交
现在,dev
分支的工作完成,我们就可以切换回master
分支:
$ git checkout master
Switched to branch ‘master‘
切换回master
分支后,再查看一个readme.txt文件,刚才添加的内容不见了!因为那个提交是在dev
分支上,而master
分支此刻的提交点并没有变:
现在,我们把dev
分支的工作成果合并到master
分支上:
$ git merge dev
Updating d17efd8..fec145a
Fast-forward
test.txt | 1 +
1 file changed, 1 insertion(+)
git merge
命令用于合并指定分支到当前分支。合并后,再查看test.txt的内容,就可以看到,和dev
分支的最新提交是完全一样的。
注意到上面的Fast-forward
信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master
指向dev
的当前提交,所以合并速度非常快。
当然,也不是每次合并都能Fast-forward
,我们后面会将其他方式的合并。
合并完成后,就可以放心地删除dev
分支了:
$ git branch -d dev
Deleted branch dev (was fec145a).
删除后,查看branch
,就只剩下master
分支了:
$ git branch
* master
因为创建、合并和删除分支非常快,所以Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master
分支上工作效果是一样的,但过程更安全。
Git鼓励大量使用分支:
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/qw765811529/article/details/48022447