一、安装
windows:https://git-for-windows.github.io/
下载安装包后直接打开进行安装:
不出意外你可以打开cmd或者git bash使用git了
git init:在你需要存放代码的目录下执行,初始化git本地仓库
git clone:拷贝远程仓库代码到本地仓库,git clone url (注:如果对该项目不具有管理权限,只能用https方式进行clone)
git branch:查看本地仓库的所有分支以及当前所在分支
如图,本地共有master和develop两个分支,当前在develop分支(这个分支是自己新建的本地分支,并且已经切换到了develop分支);好了,我现在要开始写代码(写bug)了,我是直接在develop分支上进行开发吗?当然不是(本文是直接在develop分支上做的演示,工作中的项目不可),这时候你需要在本地新建一个分支,然后切换到该分支,在该分支上进行开发。
git branch 分支名 新建分支
可以看到我们新建了一个feature分支,那么切换到该分支:
git checkout 分支名 切换分支
ok,切换到了feature分支(由于后面的图片是事先做的demo图片,所以都是在develop分支下,大家把他当成在feature分支就好了(*_*)),通常为了省事,上述两部操作一般都是合二为一:git checkout -b 分支名(新建分支并切换到该分支),好了,现在你可以开始写你的代码(bug)了
经历了一番百度+StackOverflow+google,你写完了,我们来看看当前的状态
git status:查看当前的状态(我们新建一个test2.text文件,然后执行该命令),常用该命令是个好习惯
此时提示检测到有新的未被跟踪的文件,使用git add命令让改文件被跟踪
但是如果你现在发现你做出的修改不正确或者是误操作,需要撤销这些修改,输入命令:git checkout -- 文件名(此命令会让该文件回到和暂存区一样的状态),下面我们先给test1.txt这个文件加上test1的内容
然后查看状态
这个时候我们想要撤销test1的改动,输入:git checkout -- test1.txt
可以看到test1.txt文件已经撤销了刚才的修改。
git add:将文件内容添加到索引(将修改添加到暂存区--告诉git这个文件我要提交上去,你先帮我保存着;如果你只想提交某个文件就git add 文件名,全部改动都需要提交的话,就git add .)。老花眼可千万别把git add 后面那个点看漏了
(注1:git本地仓库分为3个部分,1、工作区(你能看到的部分);2、暂存区(这个是你执行commit时,所提交的内容,不可见);3、本地仓库(git创建的本地仓库))
(注2:git add . 命令在git 2.x版本和git add -A相同,会添加所有的改动到暂存区,在1.x版本,此命令会忽略删除的改动)
git commit :提交更改(这里的提交也并没有将更改提交到远程仓库,只是提交到了本地仓库)
直接执行git commit -m "这里是提交的注释"
此时发现需要配置身份信息
git config:git配置 --不是频繁的操作,除了开始配置之外,平时基本不会用到
这种身份配置是针对于当前git仓库,其他的git仓库不受影响,一般来讲一个开发人员都会有不止一个git账号,比如公司的gitlab工作账号,和github的私人账号,所以建议采用这种独立的配置方法,当然如果只有一个git账号,也可以按照上图的提示信息:git config --global user.name "这里的用户名随便写",git config --global user.email "这里的邮箱填写你的git账号所用的邮箱",这种配置对本机的所有git本地仓库都有效。身份信息配置好了就可以commit了...如下图
git push:commit只是把我们的修改提交到本地库,并没有对远程仓库做出更改,此时我们还需要push到远程仓库,输入 git push origin 分支名(如果远程仓库没有此分支,会将本地的此分支推送到远程仓库,远程仓库就会新建一个名称和推送的分支一样的分支)
git push是经常用到的命令,为了简化命令,我们可以配置本地仓库的分支和远程仓库的分支建立连接:
这样以后在该分支push时,都只需要输入命令git push即可。当然通常我们的做法是push之前就先把远程分支和本地分支进行关联(这里我新建了一个本地分支并推送到远程仓库,然后建立本地分支和远程仓库分支的连接):
git branch -d 分支名:删除分支
git pull:拉取远程仓库代码(每次开始工作之前先pull一下代码是个好习惯,可以防止一些不必要的冲突),一个项目是由多人进行的,你负责的部分可能会依赖别的成员负责的部分,那么他如果改动了他的代码并且push到了远程仓库,你就需要pull最新的代码来保证你所依赖的代码的正确性和及时性。pull的操作和push类似,不再赘述。
git merge:合并
每次开始进行开发之前先切换到大家统一开发的分支(一般是develop分支)--git checkout develop,然后pull下代码 --git pull,再切换回自己开发的分支 --git checkout 自己的分支名,合并develop的最新代码到自己的分支 --git merge develop。
当然,你在自己分支上开发一个功能完成后,也需要合并代码到develop分支,但是这个合并尽量别在本地进行,你只需要提交自己的分支到远程仓库,然后在远程仓库来进行你的分支和develop分支的合并(一般这个需要项目管理者来进行,不然大家都merge,容易出现问题)
git push/pull免输账号密码的方法:
上面push和pull和常规的有一点不同之处在于,常规的会提示要求输入git账号和密码,图中并没有输入,常规的要求输入账号和密码,输入的密码是不会显示的,输入完直接回车即可。那么怎么才能不用每次push和pull都不用输入账号密码?
这里讲一下git的两种传输方式:https和sshkey,你clone的时候选择的什么方式,之后的操作都会默认采用这种传输方式进行。
1、https: https每次的push和pull都会要求输入账号和密码,此时我们只需要输入如下命令:git config --global credential.helper store/git config credential.helper store 输入以上命令后(前者全局配置,所有本地仓库push/pull都不再输入账号密码,后者当前仓库配置,仅对当前仓库生效),如果是首次push或者pull还是需要输入账号密码,本地会缓存该账号密码,以后就不用再输入。
2、sshkey :必须配置了sshkey后才能进行clone,push,pull等操作
(1)生成sshkey:ssh-keygen -t rsa -C "你的git账号的邮箱地址"
(注意:先打开你的.ssh文件夹看看里面是否已经有id_rsa和id_rsa_.pub文件,如果有就跳过这一步)
成功之后:(这个.ssh文件夹是默认路径,如果安装时选择了其他安装路径或许这个文件夹路径会有不同)
(2)配置sshkey到git账号
首先我们找到刚才生成的sshkey的.pub文件,用记事本打开复制里面的内容,然后如下:(这里采用github)
点击Add SSH key。
(3)配置sshkey到本地
ssh-add 文件名 (注意:配置到git账号去的是后缀为.pub的文件里的内容,现在要配置的是没有后缀的文件)
ok,我们来测试一下是否成功
由于我之前已经配置过,所以直接提示成功授权,如果是首次配置的话,会提示是否继续,yes即可。
最后附上git一些基本的命令:
mkdir test (创建一个名为test的空目录 )
pwd 显示当前目录的路径。
git init 把当前的目录变成可以管理的git仓库。
git add XX 把xx文件添加到暂存区。
git commit –m “XX” 提交文件到本地仓库, –m 后面的是注释。
git status 查看仓库状态
git diff XX 查看XX文件修改了那些内容
git log 查看历史记录
git reset --hard HEAD^ 或者 git reset --hard HEAD~ 回退到上一个版本
git reset --hard HEAD^^ 回退到上上个版本,以此类推
git reset --hard 版本号id 回退到指定某个版本(这个版本号id可以使用git reflog查看)
(如果想回退到第100个版本,使用git reset –hard HEAD~100 )
cat XX 查看XX文件内容
git reflog 查看历史记录的版本号id
git checkout -- XX 把XX文件在工作区的修改全部撤销。
git checkout . 撤销工作区的所有修改
git rm XX 删除XX文件
git remote add origin url 关联一个远程库
git push origin develop Git会把develop分支推送到远程库对应的远程分支上,如果远程仓库没有develop分支,则会在远程仓库创建一个develop分支
git push –u origin develop 把当前develop分支推送到远程库并建立连接(以后push develop分支就直接在develop分支下git push)
git clone url 从远程库中克隆
git checkout –b dev 创建dev分支 并切换到dev分支上
git branch 查看当前所有的分支
git checkout 分支名 切换到该分支
git merge develop 将develop分支合并到当前所在分支
git branch name 创建分支
git branch –d dev 删除dev分支
git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作(假如你手上工作进行到一半并且还未提交,此时有一个很急的bug需要立即解决,你可以git stash,这样你就可以再新开一个分支去解决这个bug)
git stash list 查看所有被隐藏的文件列表
git stash apply 恢复被隐藏的文件,但是内容不删除(上面你bug解决了之后,回到之前工作的分支上,继续之前未完成的工作)
git stash drop 上面恢复了被隐藏的文件之后,被stash里面仍然存在该被隐藏文件,所以我们可以使用该命令将它删除,或者直接采用下面的git stash pop
git stash pop 恢复文件的同时 也删除文件(相当于 git stash apply和git stash drop)
git remote 查看远程库的信息
git remote –v 查看远程库的详细信息
网友评论