首先是git的简单下载
官网下载:https://git-scm.com/download
$ git config --global user.name "用户名"
$ git config --global user.email "邮箱地址"
#建议用户名和邮箱地址写GitHub账号
当我们需要让Git去管理某个新项目/已存在项目的时候,就需要创建仓库了.
可以在现有文件目录下创建仓库,也可以新建
mkdir 文件名 #创建目录作为git仓库
cd 文件名 #进入该目录
git init #git仓库进行初始化,让git知道要管理这个目录
执行以上命令成功后,该目录下就会出现一个名为.git的隐藏文件夹(不要随意)
git提交文件或代码,首先要提交到缓冲区,再提交到仓库
git status :查看当前状态
git add 文件名:提交文件到缓冲区
git commit -m "注释内容" -->将缓冲区的文件提交到版本库(注释内容很重要,代表当前你提交的东西和之前有什么不一样,回退版本时可以用到)
查看需要回退的版本需要通过查看日志
git log [option]
注:
#别名化git log等选项,也就是说当我们在输入git-log时执行的指令就是git log --pretty=oneline --all --graph --abbrev-commit指令
git-log='git log --pretty=oneline --all --graph --abbrev-commit'
注:
当版本回退后,想要回到版本回退之前,那么想再次通过git log --pretty=oneline是不行的(版本回退之前的版本在该日志中已经消失了)
那么这时候就需要用到指令git reflog
首先前面提到,提交到本地仓库的步骤是:
git add 文件 -----> 缓冲区 -----> git commit -m "注释" -----> 本地仓库
现在提交到线上仓库需要在加一步:
git push 将本地仓库文件提交到线上仓库
git push 远程仓库名 本地分支名(将本地仓库的内容推送到远程仓库中)
git pull [remote name] [branch name]
git pull指令是拉取线上仓库的文件到本地仓库
总结:每天上班第一件事就是用git pull拉去线上仓库的文件,每天下班最后一件事就是git push 提交本地仓库的文件(其他时间可以不提交)
远程分支和本地分支一样都可以合并,只是先需要把远程仓库的更新都下载到本地,在进行操作
fetch指令:git fetch [远端名称] [分支名]
首先在Github使用ssh协议需要先生成公私钥对指令(这个需要安装openSSH来生成),GitHub需要公钥
安装完后,在git控制台中执行ssh -keygen -t rsa -C "GitHub的注册邮箱"
步骤:
实际操作:
然后后续的步骤和http协议一致,只是是git clone ssh地址(git@github.com:jxnyzhnb/jxnyzhnb.git)
总结:推荐使用ssh协议进行和线上仓库的连接,一位http协议连接的话,可能要在每一个git项目中配置账号密码,因为可能出现403错误(需要鉴权).
需要修改.git目录下的config文件中的
url = https://github.com/jxnyzhnb/jxnyzhnb.git ----->url = https://用户名:密码@github.com/jxnyzhnb/jxnyzhnb.git
在之前回退版本和回到未来时,我们可以看到所有的提交和回退记录都会有记录,Git会把他们传承时间线,形成类似于时间轴,该时间轴就是一个分支,也叫做master分支.
为了满足团队协作开发,我们需要使用分支来完成一些开发任务.
由下图可以看出,当创建该项目是将该项目分为多个分支,当项目完成后需要将各个分支进行合并,将各个分支合并到主分支(master分支)中.
比如以下操作:
当前分支是master分支:
这是在该分支下的readme.txt的内容:
现在切换到jxnyzhnb分支:
修改readme.txt文件内容:
保存后,在该分支中将该文件提交到本地仓库(一定要谨记,不要忘了该操作,不然没用)
再次切换到master分支:git checkout master
查看readme.txt:
(谨记)注:这说明各个分支修改文件后提交到本地仓库,那么只会改变这个分支中的文件,对其他分支不影响
但是,要谨记,在该分支中修改了一个文件,一定要提交到本地仓库,不然在其他分支中的该文件也会被修改.
前面讲了,master分支的readme.txt(该分支的readme.txt 并没有提交到仓库)和jxnyzhnb分支的readme.txt(已提交到仓库)不一样.
现在将两个分支合并
那么这时候如果将在master分支下将jxnyzhnb分支合并,那么master分支将会添加master没有的内容但是jxnyzhnb有的内容
比如两个不是主分支的分支也可以合并,但是当两个分支之间有相同的文件但是不同的内容,那么合并会出冲突。
这时候可以这样解决:
git branch -d 分支
注:当要删除一个分支时,一定要退出要删除的分支,不然会删除失败
当我们同时修改了同一文件的同一行(就是当一个人先修改了一个文件的一行并push到远程仓库,但是你也在自己本地修改了这个文件的那一行,那么当你想push到远程仓库时,会发生报错,因为发生冲突,这时候需要线pull文件,然后会出现merge错误,就是因为文件内容冲突,就会出现下面的代码样式,这时候你需要在本地解决冲突(先把git生成的东西去掉,在修改称自己想要的代码就行了)),然后再次push到远程仓库就行
<<<<<<< HEAD //git生成的HEAD指向的是当前分支
gg
gbf
======= //git生成的
abczh
fss
>>>>>>> ec83f5d538076d3e19f4ef6b336eedfdd51105a0 //git生成的
这时候可以更修改该代码的人进行商量,是否删除哪一个部分或者都不删除,就只删除<<<<<<< HEAD和>>>>>>> jxnyzhnb(这两个是git自带的),那么再次将该文件进行push就行了
git push --set-upstream origin 分支名(当前分支在远程分支对应的名称)
当当前分支在远程分支中并没有该分支,那么远程分支就会创建该分支.
当我们再提交整个分支时,我们不想提交一些目录(比如css,js等),那么我们可以在该仓库目录下新建一个以.gitignore为后缀的文件(用命令行touch .gitignore创建),在里面可以定义规则 (git默认不会提交空文件夹)
常见的规则:
/js/ #忽略整个文件夹(这是.gitignore文件中的注释)
*.zip #忽略所有以.zip为后缀得文件
/css/sa.css #忽略具体的文件
!index.js #不过来index.js文件
自定义的.gitignore
#提交时忽略js,css目录(这是.gitignore文件中的注释)
/js/
/css/
注:在idea中切换分支之前切记要把原来分支新增加的代码先提交到本地仓库,不然切换分支后原分支新增的代码就会消失
可以把idea的终端变成git bash(原来是cmd),在设置中的tool(工具)找到终端(Terminal),设置shell的路径为git中的bash.exe的路径(比如D:Gitbinbash.exe)
页面更新:2024-03-25
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号