Git使用

常用命令

branch

查看

查看本地分支:git branch * 所在的是当前分支
查看所有分支:git branch -a

切换

切换分支之前先git stash暂时保存修改内容
切换到远程分支并新建本地映射分支:git checkout -b 本地分支名x origin/远程分支名x
切换本地branchName分支:git checkout branchName

删除 & 创建

删除本地localBranchName分支:git branch -d localBranchName
删除远程remoteBranchName分支:git push origin --delete remoteBranchName

创建本地分支:git branch newBranch 创建本地分支并切换过去git checkout -b new_branch
推送并创建远程分支:git push origin localbranchName:remotebranchName通常名字相同

提交

提交分支:git commit -m "commit message"

合并

merge合并:
将branchA分支合并到master分支:先切换到master分支,git merge branchA
如果产生冲突,则需要手动处理冲突,然后重新 add冲突文件 和 分支commit
取消合并:git reset --hard HEAD~

rebase合并:
将branchA分支合并到master分支:先切换到branchA分支,git rebase master
修改冲突后的提交不是使用commit命令,而是执行rebase命令指定 --continue选项。git add CONFLICT.txt然后git rebase --continue。这时master分支就可以fast-forward了
先切换到master分支,再执行:git merge issue3
取消rebase:指定 --abort选项。

rebase

合并代码

rebase和merge合并代码的区别

改写提交的历史记录

git reflog查看提交记录
然后git rebase -i HEAD~n获取前n条提交记录,编辑提交记录

参考文档

revert & reset 修改提交

参考文档

cherry-pick

部分合并

安装

省略(猪都会安)

在命令行执行 git --version 能看到版本的时候,就成功了。

设置用户名密码

git config --global user.name "your_username"
git config --global user.email your_email
git cinfig --list #查看所有配置

概念

Git文件三种状态和工作模式

1、已提交,数据已经安全的保存在本地数据库中
2、已修改,修改了文件,但没有保存到数据库中。
3、已暂存,对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。

针对Git文件的三种状态,Git项目有三个工作区域:工作区、暂存区、Git仓库
工作区:简单理解为电脑里能看到的目录,比如自己创建的本地项目目录。
暂存区:Git的版本库里存了很多东西,其中最重要的称为stage的暂存区,还有Git自动创建的第一个分支master,以及只想master的一个指针HEAD
Git仓库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

Git工作流程如下:
在工作区修改某些文件
对修改后的文件进行快照,然后添加到缓存区
提交更新,将保存在缓存区的文件快照永久转储到Git仓库

操作

基本操作

初始化git本地库

新建一个目录,作为工作区。
通过git init命令在本地初始化一个本地仓库,执行该命令会在本地初始化一个没有任何文件到空仓库。

添加文件到暂存区

在 .git 统计目录下新建文本文件git01.txt,使用git status查看工作目录与暂存区文件状态
通过git add 文件名命令添加文件到暂存区,后面需要跟 path

提交文件到本地库

通过git commit 命令将更改记录提交到存储库,通常会使用git commit -m '更新说明'命令,加上更新说明
命令git commit -a组合命令,添加到暂存区并提交到本地库

提交日志

使用git log命令

查看本地仓库

使用命令git ls-files

时光穿梭机

在多人开发环境中,使用Git版本控制工具对项目版本进行管理时,通常会对项目不同版本的文件进行查看,项目历史版本,未来版本的切换操作。

1、修改文件与文件提交

修改文件之后,需要先add,再commint。
没有add就直接commit会不成功。
查看工作区和本地库的差别,使用git diff HEAD --文件名

误提交-撤销
命令git reset HEAD撤销add的文件

2、版本回退

1、多版本commit提交未push,回退
使用命令git -reset --hard HEAD^ 一个^表示回退上一个版本,有几个^表示回退几个版本。
git reset --hard HEAD~1 波浪线后面跟几就会退几个版本。

回到未来的版本
git reset --hard 版本号前几位 (差不多需要五位),退到这个版本号对应的版本。

2、已经push到远端后
重点使用命令git revert代替git reset

命令是否抹掉历史使用场景|
git resest是,回滚到历史将消失本地未push的记录
git revert否,历史记录保留,回滚后重新生成提交记录回滚已push内容
过程中如果遇到问题(如处理冲突时搞乱了),使用命令git revert --abort取消本次回滚。

注意:
1、已经commit但未push时,回退到版本a,则版本a之后的修改将被丢弃
2、git reset 默认会将被丢弃的记录所改动的文件保留在工作区中,以便重新编辑和再提交。加上 --hard 选项则不保留这部分内容,需谨慎使用。

3、日志

当我们清空了命令窗口之后,想要跳到未来版本,需要先拿到版本号。但是这时使用git log命令,只能查询到到当前版本及之前的日志,没有后面版本的日志。
这时需要使用git reflog命令。查询记录在本地的HEAD和分支引用在过去指向的位置。

4、文件删除

在Git中,删除文件同样是一个修改操作。
当我们写了一个文件,add 并 commit之后,在被我们手动删除了。这时候它在git本地仓库还是存在的

恢复命令git checkout -- 文件名 (两个 - 符号),从本地仓库拉取指定文件到工作区。

删除命令git rm 文件名,同时删除工作区和本地仓库的指定文件。

远程仓库

克隆远程项目到本地

使用命令git clone URL

推送本地代码到远程

先创建远程仓库,点击右上角 + ,选择 new repository。填写信息后,点击create

在本地执行

git init #只有第一次操作库需要
git add README.md #新增文件 
git commit -m "first commit"
git remote add origin 远程库https链接/ssh链接 #只有第一次操作库需要绑定
git push -u origin master

SSH需要申请公钥和私钥,本地执行ssh -keygen -t rsa -C "github账户邮箱"
拷贝公钥到github。点击右上角头像,点击settings,选择左侧SSH and GPG keys

检查公钥配置是否成功,使用命令ssh -T git@github.com,

创建远程分支并推送

git checkout -b my-test  //在当前分支下创建my-test的本地分支分支
git push origin my-test  //将my-test分支推送到远程
git branch --set-upstream-to=origin/my-test //将本地分支my-test关联到远程分支my-test上   
git branch -a //查看远程分支 

Git分支

命令:

git checkout branchA #切换到指定branchA
git checkout -b new_branch #新建分支并切换到新建分支new_branch
git branch -d branchA #删除分支branchA
git branch #查看所有分支
git merge branchA #合并分支branchA到主干
git branch -m|-M oldbranch newbranch #重命名分支,如果newbranch名字已经存在,则需要使用-M强制重新命名,否则使用-m重命名
git fetch #读取远程仓库状态

在分支进行的提交操作,不会影响主干master上的文件。
切到master再去合并分支,合并命令之后,分支修改的内容才会到master。

切换分支之后,本地的文件夹会对应变化。

分支的push和pull

命令:

git branch -a #查看本地和远程分支
git push origin branch #推送本地分支branch到远程
git push origin :remote_branch #删除远程分支(本地相应分支保留)
git checkout -b local_branch origin/remote_branch #拉取远程指定分支remote_branch并在本地创建分支local_branch

拉取远程分支并创建本地分支

会在本地新建分支x,并自动切换到该本地分支x,采用此种方法建立的本地分支会和远程分支建立映射关系。

git checkout -b 本地分支名x origin/远程分支名x

分支操作冲突

例如当master和branch01,分别修改了某个文件,这时执行merge操作就会产生冲突。
会产生(master | MERGING)状态

解决冲突:
直接修改文件到想要的结果,然后再执行add命令,最后commit
(master | MERGING)状态变回到(master)状态

多人协作操作冲突

p1修改了文件,然后commit提交本地库,push推送到远程库。
p2也修改了同一个文件,commit提交到本地库(没问题),这时push推送到远程库的时候就会出问题。会被拒绝

解决冲突:
每次推送之前先拉取最新的代码

标签

基本命令git tag

git tag tag_name #新建标签 默认为HEAD
git tag -a tag_name -m 'xxx' #添加标签并指定标签描述信息
git tag #查看所有标签
git tag -d tagname #删除本地标签tagname
git push origin tagname #推送tagname标签到远程
git push origin --tags #推送所有标签到远程
git push origin :refs/tags/tagname #删除远程变迁tagname

git对某一时间点上到版本打上标签

IDEA下使用Git

在使用IDEA的时候,项目中有些文件不需要上传到Git,这时需要配置。
方法一:逐个commit文件,例如src pom等
方法二:右键这个项目,点击Git——Commit Directory,然后选择要提交到文件
方法三:集成ignore插件。右键项目根目录,点击new,点击 .ignore file ,点击 .gitignore file (Git)创建这个文件。添加文件进:右键想要添加到文件,点击Add to .gitignore file

拉取远程分支

右键项目,找到Git,找到fetch,这样获得远程仓库最新状态。
点击Git Branches,选取远程分支,点击checkout as…

本地分支冲突

多人协作冲突

多个开发都在同一个分支下操作。假设1号commit and push,2号进行了commit。当2号进行push的时候,git会出现push rejected。需要先合并。

其他命令

rebase

rebase参考文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值