Git的使用

几个概念

Workspace:工作区

  • 在电脑上能看到的目录,隐藏目录.git除外。

Index / Stage:暂存区

Repository:仓库区(或本地仓库,版本库)

  • .git文件属于版本库
  • 暂存区在此库中
  • Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。

Remote:远程仓库

  • 远程库的默认名称是origin

分支:时间线

本地仓库操作(本电脑)

注册信息

$ git config --global user.name "aic1999"
$ git config --global user.email "你的邮箱@qq.com"

进入项目路径(注意是/不是\)

cd 项目路径

把项目添加进git版本库

  • 所有的版本控制系统,只能跟踪文本文件的改动
git init
  • 看见路径下多了一个.git文件不要动他,说明项目已经进入版本控制状态了。

创建一个文件readme.txt

可以手动创建,也可以用touch命令创建

touch readme.txt

添加文件到暂存区

git add readme.txt

将暂存区的文件提交到当前分支

git commit -m "这里面是我们想打的注释内容"

查看暂存区还有谁未提交/被修改未提交

  • 可以通过命令git status来查看是否还有文件未提交。如果文件被修改了,那么执行"git status"后,显示出的红色名字文件就是已被修改但未提交的文件。
git status

查看修改的内容

查看文件可以用cat命令

git diff readme.txt
  • 重新执行add和commit操作即可上传修改后的文件。

查看修改的历史记录

  • 可以查看版本号(用于撤销回退操作)、时间、修改者、注释。
git log
  • 推荐使用下面的命令,简洁、直观
git log --pretty=oneline

版本回退

  • 回退到上上个版本只需把HEAD^ 改成 HEAD^^ 以此类推。
git reset --hard HEAD^
  • 如果要回退到前100个版本的话,使用:
git reset --hard HEAD~100

撤销版本回退

  • 此时git log是找不到已经被回退的版本号的。已被回退的版本号可以通过"git reflog"命令可以获得。
git reflog
git reset --hard 版本号

撤销修改/撤销删除

  • 假如又修改了一次文件,多添加了一行字怎么撤回?三个方法如下。
  1. 手动更改去掉那些需要的文件,然后add添加到暂存区,最后commit到版本区的分支上。
  2. 使用 git reset --hard HEAD^ 直接回退到上一个版本。
  3. 使用撤销命令,把文件在工作区做的修改全部撤销,如下命令。
  1. 修改后,如果还没有放到暂存区,使用checkout语句 撤销修改就回到和版本库一模一样的状态。
  2. 另外一种是文件已经放入暂存区了,接着又作了修改,checkout撤销修改操作就会回到添加暂存区后的状态。
git checkout -- readme.txt

  • 删除文件操作是"rm 文件"
  • 注意:如果执行了commit命令,那就不能用上述语句撤销删除操作了。

远程仓库操作(连接github)

  1. 注册github账号 由于你的本地Git仓库和github仓库之间的传输是通过SSH加密的,要创建ssh
  2. 创建ssh key(有就跳过)
ssh-keygen -t rsa –C "邮箱"
  • 在路径/c/Users/59977/.ssh下可以看到生成的密钥。
  1. 把密匙之一的ssh-rsa.pub的内容添加进github中
  • 在github的setting中可以找到ssh key,然后添加即可。
  1. 本机关联github
git remote add origin https://github.com/用户名/项目名.git
  1. 把本地库的内容推送到远程

由于远程库是空的,我们第一次推送master分支时,加上了 –u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

git push -u origin master

注意,如果本地目录下没有README.md文件,执行推送会报错。此时执行git pull --rebase origin master即可,会发现github上的项目被克隆下来了,再执行推送就可以了。

  • 这时即可在github上看到本地的项目
  • 从现在起,只要本地作了提交,就可以通过如下命令,把本地master分支的最新修改推送到github上了。
git push origin master

从github下载

git clone "网址"

分支

  • master主分支应该是非常稳定的,也就是用来发布新版本。
  • 一般情况下不允许在master上面干活,干活一般情况下在新建的dev分支上干活。
  • 干完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上来。
  • master才是指向提交的,HEAD指向的是当前分支。可以把分支理解成时间线。你在a分支上修改了文件内容,如果切换到b分支则看不到在a分支上修改了啥。

创建分支

git branch 分支名
  • git checkout 命令加上 –b参数表示创建并切换,相当于如下2条命令 git branch dev、git checkout dev
git checkout -b 自定义分支名
  • 代表创建并切换到该分支

选择当前分支

git checkout 分支名

查看分支

git branch

删除分支

git branch -d 分支名

合并分支

  • 合并指定分支到当前分支上。如果合并的是ab分支,那么,在a分支做的修改,在b分支上也能看到。
git merge 指定分支名
  • 默认情况下,合并是“快进模式”(Fast-forward),也就是直接把master指向dev的当前提交,所以合并速度非常快。
  • 但这种模式有个缺点,删除分支后,会丢掉分支信息。可以用“git merge -–no-ff -m “注释” 分支名” 语句禁用。

如果分支a修改了文件,分支b也修改了文件,这时候合并分支就会产生冲突(conflict fixed)。这时候要修改文件,让它和其中一个分支的文件一样才行。

bug分支

  • 每个bug都可以通过一个临时分支来修复,修复完成后,合并分支,然后将临时的分支删除掉。
  • 在开发中接到一个404 bug时候,我们可以创建一个404分支来修复它,但是,当前的dev分支上的bug2还没修复、还没有提交,因此我们还无法提交404分支上的bug,怎么办?Git还提供了一个stash功能,可以把当前工作现场(即dev分支上的bug2) ”隐藏起来”,等以后恢复现场后继续工作。如下,然后再git status查看工作区状态,就发现dev被隐藏起来了。
git stash

查看工作现场列表

git stash list

恢复工作现场

  1. 恢复后,stash内容并不删除,还需要使用命令git stash drop来删除。
git stash apply
  1. 恢复的同时把stash内容也删除了。
git stash pop

远程库(多人协作时)

查看远程库

 git remote

推送分支

  • 把该分支上所有本地提交到远程库中,推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上。
git push origin 当前分支名(一般是master)
  • 如果同伴修改了文件并推送上去,我也修改了同一个文件并且推送上去,就会推送失败。
  • 因为我的小伙伴最新提交的和我试图推送的有冲突,解决的办法也很简单,上面已经提示我们,先用git pull把最新的提交从origin/分支名抓下来,然后在本地合并,解决冲突,再推送。(如果本地合并也冲突,参照之前写的方法)
git pull

参考,致谢!!!!

  1. 龙恩0707《Git使用教程》
  2. 常用git清单.
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值