git使用
Posted blinktooo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git使用相关的知识,希望对你有一定的参考价值。
git 从分支上创建一个分支
- 先克隆一个项目
git clone git的ssh链接 - 查看当前分支
git status - 切换到父分支中
git checkout 分支名 - 拉取最新的代码
git pull origin 分支名字 - 创建新的分支
git checkout -b 新分支的名字 - 将分支推送到线上
git push origin 分支名字
分支相关
- 查看分支:
git branch - 创建分支:
git branch <name> - 切换分支:
git checkout <name> - 创建加切换分支:
git checkout -b <name> - 合并某分支到当前分支:
git merge <name> - 关联远程分支:
git pull origin <name> - 删除分支:
git branch -d <name> - 删除远程分支:
git push origin --delete <name>
git删除指定分支
- 在本地建立文件夹
- 将该分支clone下来
- git clone -b 该分支名 地址
- git branch -a (查看远端分支)
- git checkout -b 别的分支
- git branch -D 要删除的分支
- git push origin --delete 要 要删除的分支
- 完成
gitlab创建新项目
- 登录gitlab网站自己找到新建项目
- 在git bash的窗口输入ssh-keygen
- 一般在c盘的用户文件夹下会出现一个.ssh文件 复制文件中的id_rsa.pub内容
- 在git中选择settings 将复制的内容配置进去,点击add keys
- 在git Bash窗口设置git的用户名和邮箱 git config --global user.name 你的名字 git config --global use.email 你的邮箱
- 进入到本地项目中,右键此处进入git Bash
输入git init初始化仓库 - 将本地仓库和远程仓库建立连接 git remote add origin git@code.choerodon.com.cn:25371/sss.git
- 将文件加入到缓冲区
git add .(这个点等于当前路径下的所有文件,不能省略) - 将文件提交到版本库
git commit -m "提交描述"(这个-m后面的东西建议不要省略有利与回滚的时候能判断是第几次提交) - 将本地的master分支推送到origin主机
git push -u origin master
远程仓库中项目拉取
-
拉取代码
git clone git地址
-- 默认拉取得是master分支 -
若需要切换分支
使用git branch -a
会出现分支列表
直接切换到对应的分支
git checkout origin/experimental
常见错误
出现The file will have its original line endings in your working directory错误
输入git config core.autocrlf false
git push报HTTP Basic: Access denied 错误
原因:本地git配置的用户名、密码与gitlabs上注册的用户名、密码不一致 解决方案: 如果账号密码有变动 用这个命令 git config –system –unset credential.helper 重新输入账号密码 应该就能解决了
git报错:‘fatal:remote origin already exists‘怎么处理
描述:可能会在上述步骤第7步之后出现,原因是重复建立远程仓库连接 解决方案:
- 先删除
git remote rm origin - 再执行添加
(上述第7步)
Error:(1, 0)Your project path contains non-ASCII characters. This will most likely causethe build to fail on Windows. Please move your project to a differentdirectory.
描述:编码错误 大概率是保存路径下出现了中文
git基本指令
- git status
这个指令可以让我们时刻掌握仓库当前的状态,比如文件的修改状态 - git diff
如果已经记不清上次修改的内容,这个时候需要用git diff命令 - git log
如果提交了多次文件,查看历史记录,这个时候便可以使用这个指令 来分别查看各个版本有何差别,注 意这个地方将会在命令行出现各种描述,其中包含文件唯一的commit id值,作者,版本创建时间,版本描述.(所以这里要强调一点,使用commit的时候,一定要添加描述,以免日后忘记)
如果嫌弃输出信息太多,可以试试加上 --pretty=oneline - git reset --hard HEAD^
commit id都是唯一值,在git中,用head来标识当前版本,HEAD来表示上一个版本,HEAD^表示上上个版本.但是如果回退到上个版本之后,最新的一个版本在使用git log打印的时候发现,最新的版本好已经不见了 如果想要回到最新的某个版本这个时候commit id的作用便体现出来了,使用git rest --hard [commit id]便能跳转到最新的版本 - git reflog
如果回退了版本,也不知道最新的版本的commit id,这个时候就可以使用git reflog 它记录了每一次的git指令
管理修改的概念
第一次修改 -> git add -> 第二次修改 -> git commit
当出现这种情况的时候,第一次使用git add之后,工作区第一次修改之后被放入暂存区,但是工作区第二次修改并没有放入暂存区,所以git commit只负责把暂存区的修改提交了,也就是第一次修改被提交了,第二次修改没有提交.
使用git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别. 如果是 第一次修改 -> git add -> 第二次修改 -> git add -> git commit
这种操作就相当与把两次修改合并后一块提交了. 总结:每次修改,如果不用git add到暂存区,那就不会加到commit中了.
撤销修改
- git checkout -- [filename]
如果在工作区修改了一堆东西,这个时候一点一点找又不方便找出来,这时候使用该指令便可把工作区全部撤销,
- 这个时候有两种情况:
- 一种是修改之后没有放到暂存区,这个时候撤销便是回到了和版本库一模一样的状态
- 一种是已经添加到暂存区后,又做了修改,这个时候撤销是回到暂存区的状态
ps:总之,这个指令就是让文件回到最近一次git commit 或者git add的状态.
-
git reset HEAD [filename]
如果修改过内容后已经添加到暂存区了,暂时还没有提交,这个时候使用这个指令便可以把暂存区修改撤销掉,重新放回工作区
如果已经提交到版本库,可以使用上文提到的版本回退,如果你甚至提交到了远程仓库,恭喜你!你没了!
删除文件
通常情况直接使用rm [filename]从资源管理器上直接删除文件了,删除过文件之后git status就能之间看出来文件有哪些差别 现在又两个情况
- 确实要从版本库中删除该文件
那就用命令git rm删除,并且git commit现在文件就从版本库中被删除了 - 如果删除错了,直接使用上文提到的git checkout -- [filename]便可以用版本库里面的版本替换工作区的版本,无论是删除还是修改,都可以一键修改
额外知识
关联远程仓库之后,origin就是远程仓库的名字,这是git的默认叫法,当把本地库的内容推送到远程的时候,用git push命令,实际上是把当前分支master推送到远程仓库,如果使用-u这个参数,还会把本地的master分支和远程的master关联起来,以后推送和拉取就可以简化命令
从现在起 只要做了本地做了提交,就可以通过命令: git push origin master把本地master分支的最新修改推送到github
通过ssh支持的原生git协议速度最快
以上是关于git使用的主要内容,如果未能解决你的问题,请参考以下文章