初始化
创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa
和id_rsa.pub
这两个文件,如果已经有了,可直接跳到下一步。
ssh-keygen -t rsa -C 'youremail@qq.com'
本地仓库与远程仓库关联
#github
git remote add origin(远程仓库名称,可自定义) https://github.com/chc-1/gitTest.git
#推送
git push -u(后面推送省略) origin(远程仓库名称,也可以自定义为github/gitee) master
如果使用命令git remote add
时报错,这说明本地仓库已经关联了一个名叫origin
的远程仓库,
此时可以先用git remote -v
查看远程库信息
git remote -v
#origin https://github.com/chc-1/gitTest.git (fetch)
#origin https://github.com/chc-1/gitTest.git (push)
解除与远程仓库origin的绑定关系
git remote rm origin
推送到远程仓库,使用命令
git push github/gitee master/dev
拉取远程仓库代码
git pull github/gitee master/dev
初始化git
#初始化git
git init
git init 'xxx'
#git全局信息设置
git config --global user.name 'xxx'
git config --global user.email 'xxx@xx.com'
#提交
git add . #将所有文件提交到暂存区
git commit -m 'xxx' #将文件提交到本地仓库
git push #将文件推到远程仓库
git clone #将远程仓库代码拉到本地
git log #查看提交的日志
git log --oneline #查看日志精简
git reflog #查看历史提交的日志(把git窗口关闭后)
在Git中,用HEAD
表示当前版本,上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^
比较容易数不过来,所以写成HEAD~100
git reset --hard HEAD^ #回退到上一个版本
git reset --hard 1094a(版本号,可以不写全) #还原到未来版本
分支
分支的理解:(点击进入廖雪峰官网)
分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。
现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。
创建dev分支,并切换
git checkout -b dev #创建并切换到dev,git checkout加上-b参数相当于一下两条命令
git branch dev #创建分支dev
git checkout dev #切换到dev
查看当前分支
git branch
# *dev
# master
在分支dev中修改代码后切换到主分支master,合并分支
git merge dev
合并完成后删除分支dev
git branch -d dev #合并后删除本地仓库分支dev
git branch -D <name> #未合并,强行删除
git push gitee --delete dev #删除远程仓库分支
查看仓库分支
git branch -a
# fix
# * master
# remotes/gitee/master
# remotes/github/master
在本地创建和远程分支对应的分支
git checkout -b branch-name(dev) origin(gitee)/branch-name(dev) #本地分支和远程分支最好一致
建立本地分支和远程分支的关联(三种方法有待实践)
git branch --set-upstream branch-name origin/branch-name
git branch --set-upstream-to <branch-name> origin/<branch-name>
git branch --set-upstream-to=origin/dev dev
switch
切换分支使用git checkout <branch>
,而撤销修改是git checkout -- <file>
实际上,切换分支这个作用,用switch
更科学,最新版本的Git提供了新的git switch
命令来切换分支:
创建并切换到新的dev分支,可以使用:
git switch -c dev #创建并切换
git switch master #切换
解决冲突
.gitignore文件
忽略文件
在主目录下建立 .gitignore
文件,此文件有如下规则:
1.忽略文件中的空行或以井号(#)开始的行将会被忽略。
2.可以使用linux通配符,例如:型号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,...})代表可选的字符串等。
3.如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略
4.如果名称的最前面是一个路劲分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
5.如果名称的最后面是一个路劲分隔符(/),表示忽略的是此目录下名称的子目录,而非文件(默认文件或目录都忽略)。
#为注释
*.txt #忽略所有 .txt结尾的文件,这样的话上床就不会被选中!
!lib.txt #但lib.txt除外
/temp #仅忽略项目根目录下的TODO文件,不包括其他目录temp
build/ #忽略build/目录下的所有文件
doc/*.txt #会忽略 doc/botes.txt 但不包括doc/server/arch.txt
参考资料:
廖雪峰的官方网站(www.liaoxuefeng.com) --> Git教程
狂神说(b站)