git版本控制系统

git 常用命令

创建版本库

  • git init
    初始化一个git版本管理仓库(cd到根目录)
    如果使用了git init在第一次提交的时候会出现To git@code.aliyun.com:20891-lf/sfpt.git ! [remote rejected] master -> master (pre-receive hook declined)错误
    git config receive.denyCurrentBranch ignore
    从根本解决问题是在初始化一个远程库的时候使用git init --bare而不再 使用init

  • git add file
    添加文件到暂存区(被添加的文件必须在项目目录下,只是添加,还没有提交,版本库里面目前还没有这个文件)

  • git commit -m "提交注释"
    把暂存区的文件提交到当前分支上(每次提交内容需要简单的描述一下,便于以后查看)commit可以一次提交很多文件,所以可以多次add不同的文件

总结:
 1. 初始化一个git仓库,使用   git init  命令
 2. 添加文件到git仓库分两步 :
			     · 第一步,使用命令   git add file , 注意,可反复多次使用,添加多个文件
				 · 第二步,使用命令   git commit ,完成

查看仓库情况

  • git status
    可以时刻查看仓库当前的状态(只会显示那些文件被修改)

  • git diff file
    查看文件被修改的具体细节

版本回退

  • git log
    查看厉害提交记录,格式化输出,加上--prety=oneline参数

  • HEAD表示当前版本 HEAD^表示上一个版本 HEAD^^表示上上个版本 HEAD~100表示上100个版本

  • git reset --hard HEAD^
    表示回退到上一个版本(–hard 后面也可以跟上版本号)

  • gir reflog
    记录每一次的git 命令

小结:
	1、 HEAD 指向的是当前版本,因此可以使用 git reset --hard commit_id  在历史版本之间穿梭
	2、 穿梭前使用 git log 查看提交历史,以便确定回退到哪个版本
	3、 回到未来版本,用 git reflog  查看命令历史,以便确定回到未来哪个版本

工作区和暂存区

  • git版本库最重要的就是称为stage的暂存区,还有git自动创建的第一个分支master,以及指向masterHEAD

管理修改

  • git版本管理系统跟踪管理的是修改而不是文件,所以每一 次对文件进行修改之后都需要添加到暂存区,再提交,不然的话分支上是不会有最新修改后的文件的

撤销修改

如果对一个文件进行了修改操作,之后发现这个修改是错误的

  • 1、如果还没有提交到暂存区,直接使用git checkout --file删掉工作区的修改

  • 2、如果已经这句错误代码已经提交到暂存区,先使用git reset HEAD file把暂存区的修改撤销到工作区,之后再使用git checkout --file删掉工作区的修改

  • 3、如果这句代码已经commit到分支,直接版本回退

删除文件

  • 当删除一个文件的时候,工作区和版本库就不一致了,git status会告诉你哪些文件被删除了

  • 如果这个文件确实需要删除的话,直接使用git rm file并且直接commit

  • 如果这个文件是误删的, 因为版本库里面还有这个文件,可以直接使用git checkout --file恢复到最新版本

远程库

连接远程库需要在远程库里面添加上SSH 公钥,公钥需要自己在本地生成

  • git branch –set-upstream-to=origin/master master跟踪远程master
  • git remote rm origin删除已经配置的远程库信息,重新连接远程库
  • git remote add origin (git地址)连接到远程库
  • git push -u origin master把本地库推送到远程库, 第一次推送使用-ugit 不但会把本地的master的内容推送到远程新的master里面,还会把本地的master和远程库的master关联起来,以后的推送或拉取就可以简化命令 之后的提操作只需要git push origin master就可以了

从远程库clonegit clone git地址

分支管理

  • git checkout -b dev
    加上-b表示创建并切换,相当于
    git branch dev
    git checkout dev
    两个指令

  • git merge dev用于合并并且指定到当前分支(把dev分支合并到master上时,必须切换到master分支上再操作)

  • 合并完成之后可以删除已被合并的分支,使用git branch -d dev1

小结:
  • 查看分支:git branch

  • 创建分支:git branch name

  • 切换分支:git checkout name

  • 创建并且切换:git checkout -u name

  • 合并某分支到当前分支: git merge --no-ff-m "普通合并" dev(参数可以不加,默认是Fast forward 合并之后直接删除被合并的分支)

  • 删除分支 : git branch -d name

##解决冲突

  • 如果两个分支都有了新的提交之后,合并分支的时候回报错(两个人拿到了一样的白纸,画的东西不一样,就会报错)git status会告诉我们冲突的文件,手动修改之后,再进行add、commit提交,可以使用git log --graph --pretty=oneline --abbrev-commit查看分支的合并情况

bug分支

  • 当项目已经在运行的时候,出了一个bug,可以创建一个分支来修复它但是手头的代码只写了一半,不能提交
    可以使用git stash把当前的进程存起来,之后把bug分支体检之后,用git stash pop来恢复之前保存的状态,并且删除掉stash内容,可以使用gir stash list查看所有的stash,使用git stash apply stash@{0}恢复到指定stash

featuer分支

  • 一个项目如果需要添加新功能,但是不能因为这些没有实质性的代码,把主分支弄乱了,所以添加一个新功能就创建一个feature分支

  • 写好之后合并,如果这个新功能在体检之前又被告知被废弃,直接删除这个分支,git branch -D feature-verson可以强制删除

多人协作

使用git origin -v查看远程库信息,-v 更加详细

  • 1、可以 试图用git push origin branch name推送自己的修改

  • 2、如果推送失败,因为远程库比本地的库快一个版本,需要使用git pull试图合

  • 3、如果合并冲突,解决掉冲突之后提交

  • 4、之后使用git push origin branch name推送

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值