git命令行基础学习笔记

git是目前世界上最先进的分布式版本控制(SVN是集中式版本控制系统)

1 官网及下载地址: http://msysgit.github.io/

2 安装完成后,还需要最后一步设置,在命令行输入如下:

git config --global user.name "weiwei-cao"

git config --global user.email " "

Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识。 C:\Users\admin路径下的.gitconfig文件里面可以看到

3 创建版本库 文件新建新增提交

       首先有一个空的文件夹oa 进入文件夹 鼠标右键  git bash  在命令行 git init 创建出来一个.git文件(一般是隐藏的) 这个就是理解为git的本地库,现在我们有git本地库了,接下来需要把文件纳入本地git仓库

    在用命令touch a.txt 在 oa文件夹里创建一个文件,现在还没有纳入git管理库,使用git status 命令查看时,a.txt是红色的,是因为git监控到了仓库进了东西了,但是现在还无法识别出来,所以接下来一个命令就是add...

  git  add t.txt 就是放在了git的暂存区,现在git status 命令查看时,a.txt变成了绿色,还没有到git库里,只有执行 git commit a.txt才到了本地库  直接git commit提交不了,git的提交很严格,git commit -m “creat file 00” a.txt   才可以

    然后用vi a.txt修改文件  在 git status 文件的状态是红色的modified 提示用git add a.txt 来更新  之后就是绿色的modified   然后在 git commit -m “update file 01“ a.txt(也就是修改了文件之后要重新add和commit,commit是扔到了本地的版本库里面,push才是提交)

    第二次修改a.txt   git add a.txt  git commit “update file 02” a.txt  

    现在同一个文件已经被各种的提交和变更了,你也有可能在这个文件要改旧的,也有可能要重写新的,git log a.txt,这个命令可以查看文件是被谁什么时候提交的 ,这个命令查看的是详细的,我们可以详细指定查看内容 git log --pretty=oneline a.txt,出来了

    如果你再次进行了修改,还没有add,可以使用git diff a.txt命令查看相对于修改前本地库(工作空间)的代码,现在只是在本地库  没有提交到服务器

    

4 版本回退/版本穿梭/版本回撤(回退是已经进去过了)

工作中可能会遇到,这个时期上一个新的版本,时期一过,就把这个版本撤回来,

或者是测试经理说当前版本不合格,请回退一步

版本回退到上次  git reset --hard HEAD^    几个^^就是几步   Git 不仅支持^^ 还支持数字  git reset --hard HEAD~3

现在又要版本恢复,所以使用git reflog a.txt查看这个文件从诞生到使用的所有经历,这时会显示每次操作的唯一的id序列码

恢复到哪个版本  就  git reset --hard id序列码 

 版本回撤: vi a.txt 还没有add commit  但是文件已经被修改  git cheacout -- a.txt 

add  是从本地的工作空间到git的暂存区,往后退就是放弃工作空间的修改    commit是从暂存区到git的本地库

理解工作区+版本库+暂存区

add就是从工作区提交到了git的暂存区,commit就是提交到了本地库的master主分支上面

*工作区(Working Directory):就是你电脑本地硬盘目录

*版本库(Repository):工作区有个隐藏目录.git,它就是Git的本地版本库

*暂存区(stage):一般存放在"git目录"下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。

Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

    我们把文件往Git版本库里添加的时候,是分两步执行的: 第一步是用“git add”把文件纳入Git管理,实际是把本地文件修改添加到暂存区; 第二步是用“git commit”提交更改,实际上就是把暂存区的所有内容提交到当前分支 。 因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以commit就是往master分支上提交更改。

    可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。一旦提交完后,如果你又没有对工作区做任何修改,那么工作区就是“干净”的。即:nothing to commit (working directory clean)。  

* 用“git diff HEAD -- filename”命令可以查看工作区和暂存区里面最新版本的区别。

* 新建过撤销未add: git checkout  -- 文件名  

* 撤销已add未commit:先git  reset HEAD  文件名 再 git checkout -- 文件名

*  撤销已add已commit:       git reset –hard HEAD^

删除文件,删完提交

分支(查看+新建+切换+合并(分支名)+删除)

git branch 命令查看所有分支 

git branch dev 新建一个dev分支,绝对不可能在主分支上干活

git checkout dev 切换dev分支,dev会把之前的东西克隆一份,  (相当于github上的clone,自己修改以后add commit了)

git checkout  master 切换回主分支,没有dev分支修改的东西,需要把经过充分测试的dev代码合并到master(切换到主分支)

git merge dev  把dev的内容合并过来(然后主分支进行merge,把dev的代码合并过来)

git branch -d dev 删除分支dev

git checkout -b test 新建分支并切换

版本冲突

如果有另外一个分支也在提交,两个分支修改了同一行代码,这个时候merge时冲突,一冲突就进入了(master|MERGING),现在查看修改的文件,这个时候修改文件,两个人的代码都保留,然后重新add commit


Github简介+与Git的协同办公

Github简介

1.是什么: github是一个git项目托管网站,主要提供基于git的版本托管服务

2.能干嘛: github是一个基于git的代码托管平台, Git 并不像 SVN 那样有个中心服务器。目前我们使用到的 Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其他开发人员合作。 你就需要将数据放到一台其他开发人员能够连接的服务器上。

3.去哪下: https://github.com/

Github应用

1 注册github账号     查验、创建SSH Key (C:\Users\dell\.ssh)      Add SSH Key        测试连通性 

2 本地新建,推送远程

3 远程新建,本地克隆

4 Fork

 

 

1.注册+检查.ssh秘钥:由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以我们需要配置验证信息(No such file or directory表示第一次)   右键进入git bash,使用 cd ~/.ssh 查看是否有ssh密钥

2.创建SSH Key: ssh-keygen -t rsa -C xxx@126.com 成功的话会在~/下生成.ssh文件夹,进去,打开id_rsa.pub,复制里面的key。

3.粘贴id_rsa.pub内容到Github

4.测试连通性: ssh -T git@github.com

5.本地->github远程库

现在的情景是,我在本地创建了一个OA项目后,我又想在GitHub创建一个OA项目,并且让这两个仓库进行远程同步

5.1  先在本地新建好一个git项目

5.2  到Github上新建一个同名的空项目

5.3  本地和github上的仓库进行关联  

git remote add origin https://github.com/weiwei-xxx/oa.git

5.4 把本地库的内容推送到远程git push命令,实际上是把当前分支master推送到远程

git push -u origin master

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

如果服务器内容已经被改,我们需要同步到我们的本地,服务器的比我们的要新,git pull origin master

6. github远程库->本地    

现在的情景是,我们从零开发,那么最好的方式是先创建远程库,然后从远程库克隆

6.1  登陆GitHub,创建一个新的仓库,名字叫OA2

6.2  远程库OK,下一步是用命令git clone克隆一个本地库 ,复制一下项目地址,https://github.com/weiwei-xxx/oa2.git

git clone https://github.com/weiwei-xxx/oa2.git

7. Git交互模型-上    

现在的情景是,本地或者远程均有修改,如何同步共享,提交修改

7.1  本地修改,同步给远程

7.2  远程修改,同步到本地

7. Git交互模型-下

一般工作流程如下:

1 克隆 Git 资源作为工作目录。

2 在克隆的资源上添加或修改文件。

3 如果其他人修改了,你可以更新资源。

4 在提交前查看修改。

5 提交修改。

6 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。

8. Fork

现在的情景是,用叉子把别人的东西(copy no cut)叉到你碗里~ 就是把别人的项目clone一份,但是owner变成自己,这样你就可以在遵守Open source license的前提下任意修改这个项目了。    

相当于你在原项目的主分支上又建立了一个分支,你可以在该分支上任意修改,如果想将你的修改合并到原项目中时,可以pull request,这样原项目的作者就可以将你修改的东西合并到原项目的主分支上去,这样你就为开源项目贡献了代码,开源项目就会在大家共同的努力下不断壮大和完善。张三的代码搞不定了,传到了git上,fork了一份到李四那,相当于clone,但是只有组内成员才可以clone,李四是场外观众,李四commit了以后,张三那还没有,这个时候,我要通知他进行项目合并,点进去  Pull request ,发合并请求,在github上可以看到聊天记录,修改内容,合并请求,提交次数这个时候,李四做完了,张三回来看到github看到右上角铃铛提示有未读消息,点进去看Filechanged看到修改内容,然后 点击接受合并请求,在看我的项目内容已经改变了

你clone了一份代码,别人在服务器上修改代码完成提交,这个时候你忘记pull新的下来,你也提交你修改的代码,add commit 了以后,这个时候github不允许push到服务器,因为产生了冲突,这个时候你pull下来,在你再次提交之前整合远程的改变,这个时候你在查看代码,修改下代码,解决下冲突,然后在add commit push

解决Git push时重复输入用户名密码

C:\Users\admin目录下新建名字为_netrc的文件并编辑该文件写如下内容: machine github.com login 你的用户名   password 你的密码

Git 常用命令小总结

mkdir:         XX (创建一个空目录 XX指目录名)    

pwd:          显示当前目录的路径。    

git init          把当前的目录变成可以管理的git仓库,生成隐藏.git文件。    

touch           xx文件或者新建文件    

git add XX       把xx文件添加到暂存区去。    

git commit –m “XX”  提交文件 –m 后面的是注释。    

git status        查看仓库状态    

git diff  XX      查看XX文件修改了那些内容    

git log          查看历史记录    

git reset  --hard HEAD^    

cat XX         查看XX文件内容    

git reflog       查看历史记录的版本号id    

git checkout -- XX  把XX文件在工作区的修改全部撤销。    

git rm XX          删除XX文件    

git remote add origin https://github.com/zzyybs/testgit 关联一个远程库    

git push –u(第一次要用-u 以后不需要)

origin master 把当前master分支推送到远程库    

git clone https://github.com/arjrzhouyang/testgit  从远程库中克隆  

 git checkout –b dev  创建dev分支 并切换到dev分支上    

git branch  查看当前所有的分支    

git checkout master 切换回master分支    

git merge dev    在当前的分支上合并dev分支    

git branch –d dev 删除dev分支    

git branch name  创建分支    

git remote 查看远程库的信息    

git remote –v 查看远程库的详细信息    

git push origin master  Git会把master分支推送到远程库对应的远程分支上


图形化工具: TortoiseGit

1.开始和本地库交互:第一步重要,设置账号和邮件(建立一个新的工程,右键TortiseGit->Seetings)

2.创建一个空项目,右键Git Create Repository here,相当于命令(git init)

版本回退和版本撤销

Revert与Reset区别

Reset:是将当前的工作目录完全回滚重置到指定的版本号,一般选hard模式,会将当前Head的内容重置,不留存记录日志,尸骨无存彻底删干净

Revert:是撤销某次提交,这次撤销也会作为一次提交进行保存。

TortoiseGit ->Create Branch 创建分支dev1

TortoiseGit ->Switch/chenkout->切换分支dev1

在新的分支上进行修改提交,在创建另外一个新的分支dev2,对同一行代码进行修改

切换回主分支,进行分支合并TortoiseGit ->Merge,合并dev1,合并成功,然后合并dev2,合并冲突

面试题:冲突后的图标是什么?我们点开文件看看,内容怎么了 ?----------------------如何解决冲突?

冲突文件上鼠标右键,TortoiseGit->Edit Conflig进行修改,或者手动修改

修改完成之后,TortoiseGit->Resolve

最终commit提交,解决冲突

Mine窗口为本地修改后的版本 ,只看红色的,鼠标右键有四个选项:  

1 use this text block-----右边这行把左边的红色行给冲抵覆盖掉。  

2 use this whole file ---右边整个文件覆盖左边的,最不人道的做法。    

3 use this text block from mine before theirs  我的放在前面    

4 use this text block from theirs before mine  我的放在后面

 

TortoiseGit ->Switch/chenkout->delete Branch进行删除分支

 


TortoiseGit与远程库Github的交互

两种情况:

A 本地新建一个git项目,远程同名新建空项目,同步上传到远程;

1.本地已有一个新建好的git项目,远程同名新建空项目,同步上传到远程;

2.Github上新建0423这个新git空项目,复制项目链接

3.TortoiseGit右键选择Push……

 

 

B  远程库上已经有一个git项目,从远程Clone到本地;

github上新建一个项目,本地文件,右键git->clone


Eclipse安装Egit插件

一般eclipse自带git插件,点击help->about eclipse查看是否有此图标,有的话就是已安装

Window—>Preferences—>Team,如果有Git目录则说明Eclipse中已有Git插件,就不用安装了。

如果Eclipse中没有Git插件,可以通过以下方式安装:

方式一:打开Eclipse,Help—>Install New Software…点击Add,在Name中输入EGit,Location中输入:http://download.eclipse.org/egit/updates,勾选Eclipse Git Team  Provider和JGit,点击Next,进入安装,重启Eclipse,安装完成。

方式二:打开Eclipse,Help—>Eclipse Marketplace…,输入EGit,找到EGit,点击Install即可。

 

Egit 配置

git首先配置用户名和密码:

Window->Preferences->Team->Git->Configuration,可以点击Add Entry 或者Open进行用户名和密码的相关配置

配置ssh

Window->Preferences->General->Network Connections->SSH2

新建一个web项目,此时它只是一个普通的javaWeb项目,未纳入git管理

变为Git管理的项目: 选中工程鼠标右键 Team Share Project……

eclipse中的project也建立git版本控制,此时未创建分支,处于NO-HEAD状态,文件夹中的符号”?”表示此文件夹处于untracked状态,这样就成功创建GIT仓库

Eclipse里面的项目提交到本地库

新建文件、Add、Commit……

1    新建一个文件,可以看到图标依然是问号,处于untracked状态,即git没有对此文件进行监控

2    对新建文件进行add to index  图标变成加号

3    对新建文件进行commit,图标变成黄色的小药瓶

本地OK,推送到Github

1 Github上新建一个同名的空仓库

2 本地可以Push到Remote

3 OK, 如果此步顺利,修改本地文件先push给远程github试试再更新pull试试

Github服务器上面更新了,pull到本地

解决Eclipsei里面Pull操作的问题

再次pull到本地试试


实际开发问题, 我总不能肉眼随时去看看服务器版本是不是比我新或者比较旧? 本地和服务器端不同步了如何保持一致性?

实际开发问题,和远程服务器比对,看看local和remote的情况

选择Incoming mode,查看服务器哪些比本地新,倒数第八个图标,点击文件,查看内容,点击图中框住的图标,选择pull

倒数第七个图标,查看本地比服务器新的,选择push图标,

 

Egit插件Clone到本地Eclipse进行开发处理,远程到本地

Github新建,我们用Egit插件clone到本地,现在假设项目经理已经在Github上搭建好一个project,新员工入职需要Clone下来到本地进行开发干活

Github新建,我们用Egit插件clone到本地,把路径改成你的工作空间

但是eclipse里面没有这个项目,但是项目在我们的工作空间,需要我们进行导入,Eclipse里面import进刚刚Clone到本地的工程,选Import……

Local和Remote的冲突产生-----

1 假设某程序员粗心大意,忘记提交前先同步比对和pull到本地,直接提交产生冲突了。 2 此时发现,不管如何提交都不能推送到Github上。(演示中提醒学生看看分支上的红色报错提示……) 3 工程-----Team-----Synchronize   Workspace

1 先从远程pull到本地,见下图,已经发生内容冲突了,Git不能自动合并了,需要人工干预

1  人工合并完成后,在冲突文件上鼠标右键选择,Add to Index

Commit到本地库

 

报下面的错是因为网络防火墙问题…… http.sslVerify=false


ideagit简单使用

 
git 安装
下载 git ,双击安装 , 一直下一步即可
具体每一步操作意义可参考 https://www.cnblogs.com/xueweisuoyong/p/11914045.html
git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理
Git Bash Git配套的一个控制台,
配置用户名和邮箱 gitHub 上注册
git config --global user.name "username" // "username" 是自己的账户名,)
git config --global user.email " username@email.com " //(" username@email.com " 注册账号时用的邮箱 )
以上命令执行结束后,可用 git config --global --list 命令查看配置是否OK

 

idea 配置 git
#idea 关联 git 和客户端

idea 配置 gitHub

 

为当前项目创建本地 git 仓库
 

将项目添加到本地 git

 

 

 现在只是本地仓库有了,还没提交到远程gitHub仓库

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值