一、git在windows下的安装和本地仓库的创建和操作

、git安装完成后的标志查看和基本配置(自报家门配置)

1.git在window下一直下一步安装完成后的标志

在桌面右击会看到两个图标:Git GUI Here(图形工具,一般不用)和Git Bash Here(命令行工具,一般使用)

2.git进入命令行工具,然后自报家门的基本配置

在开始菜单处,输入git——点击Git Bash即可进入命令行的git命令行工具界面,使用git前先报家门(两个配置:你是谁和怎么联系到你),否则代码不能提交,抱一个自己的名号:

在命令行窗口输入:

lenovo@LAPTOP-PNM73HBA MINGW64 ~

$ git config --global user.name shi                    #你是谁

lenovo@LAPTOP-PNM73HBA MINGW64 ~

$ git config --global user.email 1441107787@qq.com     #怎么联系到你

lenovo@LAPTOP-PNM73HBA MINGW64 ~

3.git的常用3个区域:

工作区:就是开放代码的区域,此时文件没有纳入版本管理控制,文件名为红色。

暂存区:git add 指定文件名或.(当前仓库所有文件)   #add后会将文件添加的暂存区,文件名为绿色。

版本库: 暂存区文件可通过git commit -m “提交说明信息” 命令,将文件提交到版本库,所有都提交后工作区就是空的了

、git代码管理:(本地的代码开发、依步骤提交到暂存区和本地仓库)

1.创建版本库(将指定目录初始化成本地版本仓库):(先到F盘下创建一个test,然后进入空目录test,将test初始化成本地仓库)

lenovo@LAPTOP-PNM73HBA MINGW64 ~

$ cd F:/

lenovo@LAPTOP-PNM73HBA MINGW64 /f

$ mkdir test                               #创建一个空目录

lenovo@LAPTOP-PNM73HBA MINGW64 /f

$ cd test                                   #进入空目录

lenovo@LAPTOP-PNM73HBA MINGW64 /f/test

$ ls

lenovo@LAPTOP-PNM73HBA MINGW64 /f/test

$ git init                                 #将空目录初始化成本地仓库

Initialized empty Git repository in F:/test/.git/

lenovo@LAPTOP-PNM73HBA MINGW64 /f/test (master)

$ ls -a

./  ../  .git/

lenovo@LAPTOP-PNM73HBA MINGW64 /f/test (master)

2.在上面初始化的仓库test中进行开发代码,如下:

在windows下双击进入初始化的仓库文件夹,在里面创建开发文件即可。或者利用软件工具开发代码,将开发文件保存到该本地仓库目录中即可。

3.打开git命令行,对仓库中的代码文件进行管理(追踪、添加到暂存区、提交到版本库和修改或删除文件等操作,注意进入命令行后,需要cd到相应代码仓库目录下才能操作有效)

3个区域的增加文件、修改文件、删除文件

a)增加文件

重新从开始菜单打开命令行进行操作:(开始处输入git——点击Git Bash,如下:) #也可不重新进入,此处是为了独立分开写

lenovo@LAPTOP-PNM73HBA MINGW64 ~

$ cd F:/test    #进到相应本地仓库

lenovo@LAPTOP-PNM73HBA MINGW64 /f/test (master)

$ git status     #查看文件状态

lenovo@LAPTOP-PNM73HBA MINGW64 /f/test (master)

$ git add .     #从工作区添加文件到暂存区,加到版本控制里去,可以git add 指定文件名,也可git add . 表示当前仓库所有文件

lenovo@LAPTOP-PNM73HBA MINGW64 /f/test (master)

$ git status

lenovo@LAPTOP-PNM73HBA MINGW64 /f/test (master)

$ git commit -m "tijiao to banbenku"   #将文件从暂存区提交到版本库

lenovo@LAPTOP-PNM73HBA MINGW64 /f/test (master)

$ git status

lenovo@LAPTOP-PNM73HBA MINGW64 /f/test (master)

b)修改文件

工作区先修改文件:修改文件完成后,进行下面操作:

重新从开始进入命令行:

lenovo@LAPTOP-PNM73HBA MINGW64 ~

$ cd F:/test                                 #进到相应本地仓库

lenovo@LAPTOP-PNM73HBA MINGW64 /f/test (master)

$ git status                                #查看文件状态

lenovo@LAPTOP-PNM73HBA MINGW64 /f/test (master)

$ git add index.txt                       #将指定文件添加到暂存区,git add . 表示添加所有文件

lenovo@LAPTOP-PNM73HBA MINGW64 /f/test (master)

$ git status

lenovo@LAPTOP-PNM73HBA MINGW64 /f/test (master)

$ git commit -m "modify index.txt"     #提交到版本库

lenovo@LAPTOP-PNM73HBA MINGW64 /f/test (master)

$ git status

lenovo@LAPTOP-PNM73HBA MINGW64 /f/test (master)

c)删除文件

重新从开始进入命令行:

lenovo@LAPTOP-PNM73HBA MINGW64 ~

$ cd F:/test                                 #进到相应本地仓库

lenovo@LAPTOP-PNM73HBA MINGW64 /f/test (master)

$ ls

index.txt

lenovo@LAPTOP-PNM73HBA MINGW64 /f/test (master)

$ git status                                 #查看文件状态

lenovo@LAPTOP-PNM73HBA MINGW64 /f/test (master)

$ git rm index.txt              #删除工作区文件并提交到暂存区(若手动删除工作区文件,先手动删除,然后需要再add一下到暂存区)

lenovo@LAPTOP-PNM73HBA MINGW64 /f/test (master)

$ git status

lenovo@LAPTOP-PNM73HBA MINGW64 /f/test (master)

$ git commit -m "del index.txt"           #删除文件提交到暂存区后,从暂存区再提交到版本库

lenovo@LAPTOP-PNM73HBA MINGW64 /f/test (master)

$ git status

lenovo@LAPTOP-PNM73HBA MINGW64 /f/test (master)

删除后,到F:/test中查看,index.txt文件已没有了。

二、git和github远程仓库的管理和操作

、git代码管理1:(本地代码开发提交暂存区和本地仓库后,再把代码推到远程仓库(gtihub代码托管的地址公有仓库))

1.在github上(地址:https://github.com/)注册一个账号ssshijq/xxQQ2011并创建一个远程仓库lianshou并获得远程公有仓库地址:

注册github账号并登陆后创建空的远程公有仓库名:lianshou,找到公有仓库的地址:(有两种)

注意:地址有两种:HTTPS的和SSH的:

推送到远程仓库使用用户名和密码时候:             可以使用HTTPS的地址类型 https://github.com/ssshijq/lianshou.git

配置密钥对,无需用户名和密码推送到远程参考时候: 可以使用SSH的地址类型   git@github.com:ssshijq/lianshou.git

2.安装git后,工作区创建代码,添加到暂存区,提交到本地仓库,然后将本地master分支(最初默认)推送到github远程地址的公有仓库lianshou

(包括远程仓库地址的别名设置、查看和删除)

A)准备工作:

github账号密码:ssshi/xxQQ2011   

远程地址:https://github.com/ssshijq/lianshou.git  或: git@github.com:ssshijq/lianshou.git

远程仓库名:lianshou                                                                     #注意下面本地仓库名是e:/test

B)推送到远程仓库格式: 

git  push  远程仓库地址(https或http)  本地仓库分支名:远程仓库分支名                       #本地仓库分支名或远程仓库分支名可省略

git  push  远程仓库地址(https或http)  本地仓库分支名     #省略远程仓库分支名,若该远程分支不存在,则会被新建

git  push  远程仓库地址(https或http)  :远程仓库分支名    #省略本地仓库分支名,表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支

#https一般需要输入密码,http时可以通过配置公钥,不用输入密码.一般本地分支和远程分支是一样的,但有时也可能不一样。

C) 将本地仓库test的代码推送到github远程地址的公有仓库:lianshou 推送方式1(https),直接使用远程地址推送,需要手动输入用户名和密码

重新从开始菜单打开命令行进行操作:(开始处输入git——点击Git Bash,如下:) #也可不重新进入,此处是为了独立分开写

yuanww@yuanww-PC MINGW64 /

$ cd e:/test                                                                #进到相应本地仓库

$ ls

lianshou1.txt  lianshou2.txt

yuanww@yuanww-PC MINGW64 /e/test (master)

推送方式a(不使用别名):  推送方式a和b本质上一样,只不过一个用别名一个没有用别名。

$ git push https://github.com/ssshijq/lianshou.git master    #省略远程分支,若远程仓库不存在master分支,则会被新建

Username for 'https://github.com': ssshijq     #手动输入用户名和密码

。。。。。。。。。。。。。。。。。。。。。。

 * [new branch]      master -> master

yuanww@yuanww-PC MINGW64 /e/test (master)

推送方式b(使用别名):  推送方式a和b本质上一样,只不过一个用别名一个没有用别名。

$ git remote -v                                                            #查看远程仓库地址和对应别名

yuanww@yuanww-PC MINGW64 /e/test (master)

$ git remote add origin https://github.com/ssshijq/lianshou.git  #添加远程仓库地址和对应别名

yuanww@yuanww-PC MINGW64 /e/test (master)

$ git remote -v                                                            #查看

origin  https://github.com/ssshijq/lianshou.git (fetch)

origin  https://github.com/ssshijq/lianshou.git (push)

yuanww@yuanww-PC MINGW64 /e/test (master)

$ git push origin master  #用别名推送本地仓库master分支到远程仓库省略远程分支,若远程仓库不存在master分支,则会被新建

Username for 'https://github.com': ssshijq   #手动输入用户名和密码

。。。。。。。。。。。。。。。。。。。。。。

 * [new branch]      master -> master

yuanww@yuanww-PC MINGW64 /e/test (master)

$ git remote remove origin                                              #删除远程仓库地址和对应别名

yuanww@yuanww-PC MINGW64 /e/test (master)

$ git remote -v

yuanww@yuanww-PC MINGW64 /e/test (master)

登录github的lianshou远程仓库,查看上传上来的代码文件:能查看到。

D) 将本地仓库test的代码推送到github远程地址的公有仓库:lianshou   推送方式2(http),直接使用远程地址推送,不需要输入用户名和密码

每次将本地分支代码提交到远程仓库时,都让输入用户名和密码,很不方便,所以在本地上创建秘钥对,将公钥内容粘贴到github远程仓库的配置公钥处,这样配置后,再从本地仓库提交到远程仓库时候就不需要输入用户名和密码了。

a)在本地创建密钥对,公钥和私钥并将公钥内容粘贴在github远程仓库的配置公钥处

重新从开始菜单打开命令行进行操作:(开始处输入git——点击Git Bash,如下:) #也可不重新进入,此处是为了独立分开写

yuanww@yuanww-PC MINGW64 /

$ ssh-keygen -t rsa -C "1441107787@qq.com"   #生成秘钥对,在任意路径,一路回车即可,根据提示在/c/Users/yuanww/.ssh/id_rsa.pub形成密钥对儿

。。。。。。。。。。。。。。。。。        查看公钥内容C:\Users\yuanww\.ssh\id_rsa.pu复制后,登录粘贴到github远程仓库lianshou配置公钥处:

b)将代码推送到远程仓库(推送方式2,配置公钥,不需输入密码的推送)

推送方式a(不使用别名):  推送方式a和b本质上一样,只不过一个用别名一个没有用别名。

重新从开始菜单打开命令行进行操作:(开始处输入git——点击Git Bash,如下:) #也可不重新进入,此处是为了独立分开写

yuanww@yuanww-PC MINGW64 /

$ cd e:/test                      #进到相应本地仓库

$ ls

lianshou1.txt  lianshou2.txt

yuanww@yuanww-PC MINGW64 /e/test (master)

$ git push git@github.com:ssshijq/lianshou.git master  #省略远程分支,若远程仓库不存在master分支则会被新建无需密码推送

..........

 * [new branch]      master -> master

yuanww@yuanww-PC MINGW64 /e/test (master)

推送方式b(使用别名):  推送方式a和b本质上一样,只不过一个用别名一个没有用别名。

yuanww@yuanww-PC MINGW64 /

$ cd e:/test                                                            #进到相应本地仓库

$ ls

lianshou1.txt  lianshou2.txt

yuanww@yuanww-PC MINGW64 /e/test (master)

$ git remote -v                                                        #查看远程仓库地址和对应别名     

yuanww@yuanww-PC MINGW64 /e/test (master)

$ git remote add origin git@github.com:ssshijq/lianshou.git   #添加远程仓库地址和对应别名

yuanww@yuanww-PC MINGW64 /e/test (master)

$ git remote -v

origin  git@github.com:ssshijq/lianshou.git (fetch)

origin  git@github.com:ssshijq/lianshou.git (push)

yuanww@yuanww-PC MINGW64 /e/test (master)

$ git push origin master  #用别名推送本地仓库master分支到远程仓库省略远程分支,若远程仓库不存在master分支,则会被新建且不需密码

.........

 * [new branch]      master -> master

yuanww@yuanww-PC MINGW64 /e/test (master)

$ git remote remove origin    #删除远程仓库地址和对应别名

yuanww@yuanww-PC MINGW64 /e/test (master)

$ git remote -v

yuanww@yuanww-PC MINGW64 /e/test (master)

登录github的lianshou远程仓库,查看上传上来的代码文件:能查看到。

二、git管理2,并将远程公有仓库lianshou克隆到本地d盘(因为远程仓库是公有仓库,克隆时不需密码,如果私有可能需要密码)

克隆远程仓库的格式: git clone -b 远程仓库分支名 远程仓库地址     #指定分支克隆远程仓库(此处是公有仓库)

此处是换了一台电脑,重新安装了git,然后再克隆:

shijq@DESKTOP-6DGGV7B MINGW64 ~

$ cd d:/                                                         #进入本地的d盘

shijq@DESKTOP-6DGGV7B MINGW64 /d

$ ls

'$RECYCLE.BIN'/

 BaiduYunDownload/

 chrome_download/

 iso/

 pagefile.sys

'Program Files'/

'System Volume Information'/

 VMware-VIMSetup-all-5.5.0-1891310-20140201-update01/

 VMware-VIMSetup-all-5.5.0-1891310-20140201-update01.iso

 大白菜ISO/

 交接文档/

 搜狗高速下载/

 迅雷下载/

 桌面/

shijq@DESKTOP-6DGGV7B MINGW64 /d

$ git clone -b master https://github.com/ssshijq/lianshou.git   #克隆远程仓库lianshou到本地d盘,公有仓库不需密码

Cloning into 'lianshou'...

remote: Counting objects: 4, done.

remote: Compressing objects: 100% (2/2), done.

remote: Total 4 (delta 0), reused 4 (delta 0), pack-reused 0

Unpacking objects: 100% (4/4), done.

shijq@DESKTOP-6DGGV7B MINGW64 /d

$ ls

'$RECYCLE.BIN'/

 BaiduYunDownload/

 chrome_download/

 iso/

 lianshou/

 pagefile.sys

'Program Files'/

'System Volume Information'/

 VMware-VIMSetup-all-5.5.0-1891310-20140201-update01/

 VMware-VIMSetup-all-5.5.0-1891310-20140201-update01.iso

 大白菜ISO/

 交接文档/

 搜狗高速下载/

 迅雷下载/

 桌面/

shijq@DESKTOP-6DGGV7B MINGW64 /d

到d盘查看,有克隆下来的仓库:lianshou,里面有远程仓库对应代码.

三、git管理3,并将远程公有仓库lianshou拉pull到本地某个初始的仓库中(因为远程仓库是公有仓库,拉时不需密码,如果私有可能需要密码)

拉取远程仓库代码的格式: git pull 远程仓库地址 远程仓库分支名:本地仓库分支名  #将远程仓库分支拉取合并到本地分支,省略本地分支

git pull 远程仓库地址 远程仓库的分支名      #省略本地仓库分支名,如果省略本地分支,则将自动合并到当前所在分支上

#注意:一般远程分支没必要省略,省略了没意义,因为省略了,那你是拉取远程的哪个分支呢?

如:github上远程公有仓库lianshou上有代码:lianshou1.txt和lianshou2.txt github

远程公有仓库地址为:https://github.com/ssshijq/lianshou.git  用户名和密码是:ssshijq/xxQQ2011

yuanww@yuanww-PC MINGW64 /

$ cd e:/

yuanww@yuanww-PC MINGW64 /e

$ mkdir test2

yuanww@yuanww-PC MINGW64 /e

$ cd test2

yuanww@yuanww-PC MINGW64 /e/test2

$ git init

Initialized empty Git repository in E:/test2/.git/

yuanww@yuanww-PC MINGW64 /e/test2 (master)

$ ls -a

./  ../  .git/

yuanww@yuanww-PC MINGW64 /e/test2 (master)

$ git pull https://github.com/ssshijq/lianshou.git master  #拉取远程仓库master分支到当前分支,省略了本地分支

........

 * branch            master     -> FETCH_HEAD

yuanww@yuanww-PC MINGW64 /e/test2 (master)

$ ls -a

./  ../  .git/  lianshou1.txt  lianshou2.txt

yuanww@yuanww-PC MINGW64 /e/test2 (master)

e盘查看,有拉取下来的远程仓库lianshou里面的对应代码.

四、git代码管理4,git的日志查看和版本切换:(以本地仓库为例)

和上面没关系,重新建立一个新仓库提交代码,修改代码,然后进行日志的查看和版本切换

1)创建一个新仓库,初始化仓库new_cangku

yuanww@yuanww-PC MINGW64 /

$ cd e:

yuanww@yuanww-PC MINGW64 /e

$ mkdir new_cangku   #创建空仓库

yuanww@yuanww-PC MINGW64 /e

$ cd new_cangku/     #进入空仓库目录

yuanww@yuanww-PC MINGW64 /e/new_cangku

$ git init            #初始化仓库

Initialized empty Git repository in E:/new_cangku/.git/

yuanww@yuanww-PC MINGW64 /e/new_cangku (master)

$ ls -a

./  ../  .git/

yuanww@yuanww-PC MINGW64 /e/new_cangku (master)

2)进入仓库,在工作区开发代码文件:ceshi1.txt和ceshi2.txt

第一次开发的代码内容是:ceshi1.txt:   ceshi111111111   ;ceshi2.txt:   ceshi2222222222

3)将工作区代码依次提交到暂存区和本地仓库:new_cangku

yuanww@yuanww-PC MINGW64 /

$ cd e:/new_cangku                  #进入本地仓库目录

yuanww@yuanww-PC MINGW64 /e/new_cangku (master)

$ ls

ceshi1.txt  ceshi2.txt

yuanww@yuanww-PC MINGW64 /e/new_cangku (master)

$ git status                        #查看文件状态

yuanww@yuanww-PC MINGW64 /e/new_cangku (master)

$ git add .                         #将所有文件添加到暂存区

yuanww@yuanww-PC MINGW64 /e/new_cangku (master)

$ git commit -m "第一次代码提交到本地仓库"      #将暂存区文件提交的本地仓库

。。。。。。。。

yuanww@yuanww-PC MINGW64 /e/new_cangku (master)

4)在工作区修改代码,修改后代码内容为:

第一次修改后的代码内容是:ceshi1.txt:   ceshi1   ;ceshi2.txt:   ceshi2

5)将修改后的代码依次提交的暂存区和本地仓库:new_cangku

yuanww@yuanww-PC MINGW64 /

$ cd e:/new_cangku                    #进入本地仓库目录

yuanww@yuanww-PC MINGW64 /e/new_cangku (master)

$ git status

。。。。。。。

yuanww@yuanww-PC MINGW64 /e/new_cangku (master)

$ git add .                           #将工作区修改的文件添加到暂存区

yuanww@yuanww-PC MINGW64 /e/new_cangku (master)

$ git commit -m "第一次修改后代码提交到本地仓库"  #将暂存区文件提交的本地仓库

yuanww@yuanww-PC MINGW64 /e/new_cangku (master)

6)查看git操作的日志,然后将版本切换成原来第一次开发时候的代码:(向以前的方向查看日志操作记录)

yuanww@yuanww-PC MINGW64 /

$ cd e:/new_cangku

yuanww@yuanww-PC MINGW64 /e/new_cangku (master)

$ git log --pretty=oneline                          #向以前的方向查看日志操作记录,以一行显示比较好看

ad104cb1fd5b143a6f70b31ecfa89607a8153bac (HEAD -> master) 第一次修改后代码提交到  本地仓库

36405767c22b884b72f5182a0ab2549bf2f6275d 第一次代码提交到本地仓库

yuanww@yuanww-PC MINGW64 /e/new_cangku (master)

$ git reset --hard 36405767c22b884b72f5182       #切换日志到第一次开发代码的时刻,--hard后面的是部分内容(能区分开即可)

yuanww@yuanww-PC MINGW64 /e/new_cangku (master)

到本地仓库文件目录查看代码:(已经回到了第一次开发时候的代码)

第一次开发的代码内容是:ceshi1.txt:   ceshi111111111   ;ceshi2.txt:   ceshi2222222222

7)查看git操作的日志,然后将版本切换成原来第一次修改时候的代码:

$ git reflog                    #向以后的方向查看日志操作记录,因为如果往前方向,前面是没有日志记录的,要想切到后面需往后查看

3640576 (HEAD -> master) HEAD@{0}: reset: moving to 36405767c22b884b72f5182

ad104cb HEAD@{1}: reset: moving to ad104cb1fd5b143a6

ad104cb HEAD@{2}: commit: 第一次修改后代码提交到本地仓库

3640576 (HEAD -> master) HEAD@{3}: commit (initial): 第一次代码提交到本地仓库

yuanww@yuanww-PC MINGW64 /e/new_cangku (master)

$ git reset --hard ad104cb             #切换日志到第一次修改代码的时刻,--hard后面的是部分内容(能区分开即可)

yuanww@yuanww-PC MINGW64 /e/new_cangku (master)

到本地仓库文件目录查看代码:(已经回到了第一次修改时候的代码)

第一次修改后的代码内容是:ceshi1.txt:   ceshi1   ;ceshi2.txt:   ceshi2

分支管理(分支的创建、查看、切换、合并、删除)

1.分支的概念理解示意图

svn创建分支比较笨:一份数据多大,创建时候就是多大,所以创建分支很慢。

git创建分支很快:不管一份数据多大,只记录变化的数据,创建分支都是秒级别的。

2.分支管理:(查看分支、创建分支,切换分支、合并分支)

A)分支查看、创建、切换格式

git branch                 #查看当前所在分支

git branch  新分支名       #创建新分支

git checkout  新分支名     #切换到新分支

B)分支合并格式

先切到要合并到的分支,如:master

$git checkout 要合并到的分支

$git merge 要合并的分支           如:将dev分支合并到master则: $git  checkout  master  &&   $git  merge  dev

C)删除分支格式:

git branch -d 要删除的分支名   如删除dev分支:git branch -d dev

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐