git使用
-
参考https://zhuanlan.zhihu.com/p/30044692
-
步骤
- 在自己本地建立文件夹放代码并进入该文件夹 : mkdir homework1 && cd homework1
- 下载仓库: git clone git@github.com:EDAGDUT/homework1.git
- 创建分支:git branch zhangsan
- 切换到分支:git checkout zhangsan
- 完成代码后,添加所有代码:git add *
- 提交代码到本地:git commit -m “this is 注释”
- 推送到github仓库你所在的分支:git push origin zhangsan
-
git.sh
-
echo "**************************************************************************************" echo "Git auto push start" echo "**************************************************************************************" git add * git commit -m $1 echo "Git commit comment: $1" git push origin master echo "**************************************************************************************" echo "Git auto push end" echo "**************************************************************************************"
-
-
git命令学习
- git init:把这个目录变成git可以管理的仓库
- git add filename:将文件添加到暂存区里面去
- git commit -m “message”:将暂存区的文件提交到仓库区
- git status:查看是否还有文件未提交
- git diff filename:看下readme.txt文件到底改了什么内容
- git log:显示从最近到最远的显示日志
- git log –pretty=oneline:减少显示信息
- git reset --hard HEAD^ :回退到上一个版本
- git reset --hard HEAD^^ : 回退到上上个版本
- git reset --hard HEAD~100: 回退到前100个版本
- git reflog:获取到每一次commit的版本号
- git reset --hard 6fcfc89:根据版本号来回退
- git checkout – readme.txt 意思就是,把readme.txt文件在工作区做的修改全部撤销
- 或者说回退到暂存区里的版本,也就是add后的版本
- git checkout – b.txt 如果b.txt不小心删了,但还没add,也可以从版本库中恢复
-
工作区与暂存区的区别
- 工作区:就是你在电脑上看到的目录(.git隐藏目录版本库除外)
- 版本库:隐藏目录.git
- 暂存区:版本库里面存了很多东西,其中最重
- 要的就是stage(暂存区)
- Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD
-
远程仓库
-
创建SSH Key,操作如下:
-
ssh-keygen -t rsa –C “youremail@qq.com”该命令生成.ssh目录,该目录下有id_rsa和id_rsa.pub,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
-
ssh-keygen -t rsa -C “any comment can be here”
-t = The type of the key to generate
密钥的类型
-C = comment to identify the key
用于识别这个密钥的注释
So the Comment is for you only and you can put anything inside这个注释会在公钥最好一行体现,可以cat .ssh/id_rsa.pub查看
-
不用注释的话,直接ssh-keygen -t rsa即可
-
生成密钥对时,有一个选项要求你设置文件生成的位置,默认的就好,输入enter
-
生成密钥对时,有一个选项要求你设置密码(passphrase),该密码是用来保护你的私钥的密码。如果设置了则在使用私钥时会要求你输入这个密码;一般不设置,记不住,所以不设置直接enter两次就好
-
-
登录github,打开” settings”中的SSH Keys页面,然后点击“Add SSH Key”,填上任意title,在Key文本框里黏贴id_rsa.pub文件的内容,要获得id_rsa.pub的内容,直接输入cat .ssh/id_rsa.pub即可,终端会输入信息,全部复制。
-
到这里,github就知道了公钥,你本地有私钥,就完成了通信
-
-
如何添加远程库,因为你还没在github里面添加git仓库
- 登录github上,然后在右上角找到“create a new repo”创建一个新的仓库。
- 输入仓库名,其他默认,直接点击create
-
将本地文件夹的东西传到这个新创建的git仓库
-
git init git add * git commit -m "Fist commit" git branch -M main git remote add origin git@github.com:.......git git push -u origin main
-
-
克隆远程库后,就不需要git init和git remote了,已经初始化了
-
git config --list 查看用户名和邮箱是否设置成功
-
-
更多git命令讲解
- git branch -a可以看到所有分支
- git branch -m 可以将当前分支重命名为
- git push -u 设置 git pull/status 的上游
- git checkout -b 创建并切换到
- git push命令,实际上是把当前分支master推送到远程。
- 由于远程库是空的,我们第一次推送master分支时,加上了 –u参数,Git不但会把本地的master分支内容推送给远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
- git push origin master从现在起,只要本地作了提交,就可以通过该命令
- git clone克隆一个本地库
- git merge合并分支内容,合并指定分支到当前分支上
- Fast-forward合并是“快进模式“,直接把master指向dev的当前提交,有点覆盖的感觉
- git branch –d name删除分支
- Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,其中<<<HEAD是指主分支修改的内容,>>>>>fenzhi1 是指fenzhi1上修改的内容,我们可以修改下如下后保存
- git log查看分支合并的情况
- git merge –no-ff -m “注释” dev禁用”Fast forward”模式这样就算被删除了的分支,也可以通过git log查看版本号,来恢复分支
- 每个bug都可以通过一个临时分支来修复
- 隐藏当前工作:git stash
- git stash list查看工作现场
- git stash pop,恢复的同时把stash内容也删除了
- git stash apply恢复,恢复后,stash内容并不删除,需要使用命令git stash drop来删除。
- push:推送分支就是把该分支上所有本地提交到远程库中,推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上,一些修复bug分支不需要推送到远程去,可以先合并到主分支上,然后把主分支master推送到远程去。
- git checkout –b dev origin/dev创建远程origin分支到本地来,会更新文件或者git clone 也可以得到远程分支信息
- git 拉取更新远程分支列表git remote update origin --prune
- 小伙伴最新提交的和我试图推送的有冲突,解决的办法也很简单,上面已经提示我们,先用git pull把最新的提交从origin/dev抓下来,然后在本地合并,解决冲突,再推送
- git pull也失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接:如下:
- git branch --set-upstream dev origin/dev
- 新建一个目录,将其初始化为Git代码库git init [project-name]