Windows下GIT的使用方法
文章引用自:git使用教程
本文章只限用于windows,敬请参考
注意:操作命令纯属手敲,可能会有错误,错误后参考文章链接!
git下载地址: # windows版本
安装方式:一顿操作猛如虎,一看全是下一步。烦请移步百度。
安装完成后打开 git bash (打不开百度)
一、初步打开git bash:
因为git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识。
填写用户名: git config --global user.name "这里填写您的用户名"
填写邮箱:git config --global user.email "这里填写您的邮箱"
二、创建版本库(仓库):
什么是版本库?版本库又名仓库,英文名repository,你可以简单的理解一个目录,这个目录里面的所有文件都可以被git管理起来,每个文件的修改,删除,git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻还可以将文件”还原”。
1、进入目录
首先进入您的仓库目录:cd e:\code\testgit
输入pwd命令可以查看当前的目录
2、把目录变成git可以管理的仓库
改变仓库属性: git init initialized empty git repository in e:\code\testgit
这时候你当前testgit目录下会多了一个.git的目录,这个目录是git来跟踪管理版本的,没事千万不要手动乱改这个目录里面的文件,否则,会把git仓库给破坏了。
3、仓库操作命令:
把文件添加到暂存区: git add 您的文件(包括文件后辍名)
把文件提交到仓库: git commit -m “您的文件(这个地方是提交文件的注释)”
查看未提交文件: git status
查看文件修改的具体内容: git diff 您的文件(包括文件后辍名)
一次性把所有暂存库的文件提交到仓库: git commit
三、版本回退
1、查看文件操作日志
查看文件详细的操作日志: git log
查看文件简明的操作日志: git log --pretty=oneline
2、文件版本回退操作
当前版本回退到上一个版本: git reset --hard head^
当前版本回退到上上一个版本: git reset --hard head^^
当前版本回退到指定n版本: git reset --hard head~n
回退到上一个版本后后悔了,想返回原来最后一次的版本,可以通过版本号回退:
获取版本号: git reflog
版本回退: git reset --hard 版本号(最前面的字符)
四、工作区与暂存区的区别
工作区:就是你在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。
版本库(repository):工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有git为我们自动创建了第一个分支master,以及指向master的一个指针head。
bagit提交文件到版本库有两步:
第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。
第二步:使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支上。
五、git撤销修改和删除文件操作
1、撤销修改
工作区做的修改全部撤销: git checkout -- 您的文件(包括文件后辍名)
注意:命令git checkout -- readme.txt 中的 -- 很重要,如果没有 -- 的话,那么命令变成创建分支了。
命令 git checkout -- readme.txt 意思就是,把readme.txt文件在工作区做的修改全部撤销, 这里有2种情况,如下:
readme.txt自动修改后,还没有放到暂存区,使用 撤销修改就回到和版本库一模一样的状态。
另外一种是readme.txt已经放入暂存区了,接着又作了修改,撤销修改就回到添加暂存区后的状态。
2、删除文件
直接在文件库删除文件或者使用如下命令
删除命令: rm 您的文件(包括文件后辍名)
在没上传到仓库之前可以使用上面的撤销修改命令再把删除的文件恢复回来
六、 远程仓库
在了解之前,先注册github账号,由于你的本地git仓库和github仓库之间的传输是通过ssh加密的,所以需要一点设置:
1、 创建ssh key
在用户主目录下,看看有没有 .ssh目录,如果有,再看看这个目录下有没有 id_rsa和 id_rsa.pub 这两个文件(id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。),如果有的话,直接跳过此如下命令,如果没有的话,打开命令行,输入如下命令:
ssh-keygen -t rsa –c “您的邮箱”
2、添加key
登录github,打开右上角的齿轮按钮“settings”中左侧列表的ssh keys,然后点击“add ssh key”,填上任意title(标题),在key文本框里黏贴“id_rsa.pub”文件的内容。
点击绿色按钮“add key”就可以看到添加完成的key。
3、如何添加远程库
现在的情景是:我们已经在本地创建了一个git仓库后,又想在github创建一个git仓库,并且希望这两个仓库进行远程同步,这样github的仓库可以作为备份,又可以其他人通过该仓库来协作。
首先登录github,然后右上角的“加”的符号“create a new repo”创建一个新的仓库。
在repository name填入“您的仓库名称”,其他保持默认设置,点击绿色按钮“create repository”按钮,就成功地创建了一个新的git仓库:
目前,在github上的这个testgit仓库还是空的,github告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到github仓库。
现在,我们根据github的提示,在本地的testgit
仓库下运行命令:
git remote add origin https://github.com/tugenhua0707/testgit.git(后面这个网址要用自己的) # 克隆远程仓库内容
推送本地到远程:git push -u origin master
由于远程库是空的,我们第一次推送master分支时,加上了 –u参数,git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。推送成功后,可以立刻在github页面中看到远程库的内容已经和本地一模一样了。
从现在起,只要本地做了提交,就可以通过如下命令:
git push origin master
把本地master分支的最新修改推送到github上了,现在就拥有了真正的分布式版本库了。
4、如何从远程库克隆?
上面我们了解了先有本地库,后有远程库时候,如何关联远程库。
现在我们想,假如远程库有新的内容了,我想克隆到本地来 如何克隆呢?
首先,登录github,创建一个新的仓库,名字叫testgit2。
远程库准备好了,下一步就是使用命令git clone克隆一个本地仓库了。
git clone 你的github地址
接着在本地目录下就会生成testgit2 目录了
七、创建与合并分支
在 版本回填退里,你已经知道,每次提交,git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在git里,这个分支叫主分支,即master分支。head严格来说不是指向提交,而是指向master,master才是指向提交的,所以,head指向的就是当前分支。
首先,我们来创建dev分支,然后切换到dev分支上。如下操作:
get checkout -b dev # 创建并切换分支
git branch # 查看当前分支
git checkout 命令加上 –b参数表示创建并切换,相当于如下2条命令
get checkout master(主分支) # 切换回主分支
git merge dev # 在主分支上合并dev分支
git branch -d dev # 删除dev分支
git log # 查看分支情况
总结创建与合并分支命令如下:
查看分支:git branch
创建分支:git branch name
切换分支:git checkout name
创建+切换分支:git checkout –b name
合并某分支到当前分支:git merge name
删除分支:git branch –d name
主次分支内容冲突解决办法:
git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,其中<<<head是指主分支修改的内容,>>>>>fenzhi1 是指fenzhi1上修改的内容,修改分支内容和主分支内容一致即可解决
分支管理策略。
通常合并分支时,git一般使用”fast forward”模式,在这种模式下,删除分支后,会丢掉分支信息,现在我们来使用带参数 –no-ff来禁用”fast forward”模式。
命令:
在主目录下合并分支目录:
git merge –no-ff -m “本次命令做的事情注释” dev
分支策略:首先master主分支应该是非常稳定的,也就是用来发布新版本,一般情况下不允许在上面干活,干活一般情况下在新建的dev分支上干活,干完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上来。
八、bug分支解决办法
在开发中,会经常碰到bug问题,那么有了bug就需要修复,在git中,分支是很强大的,每个bug都可以通过一个临时分支来修复,修复完成后,合并分支,然后将临时的分支删除掉。
git stash #把当前工作分区先隐藏
在主目录新建进入临时分支,查看并更改需要修改的代码后,切换回主分支合并临时分支,合并确认完成后,在进入之前的工作分支。
进入工作区后恢复之前隐藏的工作分区内容。
git stash list # 查看之前的工作分区隐藏在哪个地方
git把stash内容存在某个地方了,但是需要恢复一下,可以使用如下2个方法:
git stash apply恢复,恢复后,stash内容并不删除,你需要使用命令git stash drop来删除。
另一种方式是使用git stash pop,恢复的同时把stash内容也删除了。
九、多人协作
当你从远程库克隆时候,实际上git自动把本地的master分支和远程的master分支对应起来了,并且远程库的默认名称是origin。
git remote # 要查看远程库的信息
git remote –v # 要查看远程库的详细信息
其中查看远程库的详细信息后会有两条推送信息,结尾括号内的fetch为抓取,就是下载;push为推送,就是把本地推送到远程
1、 推送分支
git push origin master # 本地主分支推送到远程仓库
那么一般情况下,那些分支要推送呢?
master分支是主分支,因此要时刻与远程同步。
一些修复bug分支不需要推送到远程去,可以先合并到主分支上,然后把主分支master推送到远程去。