git的基本用法

基础介绍

http://git-scm.com/
git分布式版本控制系统,不需要联网,一个电脑上就是一个版本库

add 就是把修改的内容存到暂存区,可以存多个修改的内容,然后最后commit到分支,暂存区就干净了
当文件被添加到过暂存区就会跟踪它的修改

每次提交的是暂存区的修改,如果修改了一次后add了,再修改直接commit,提交的是暂存区中的,新修改的并没有提交

dev从master分出来,查看log日志会连同主分支的一起查看,单独查看dev的提交可以 git log dev..master

dev被merge后再切回去,无法查看它的log信息,要是想查看就合并的时候
git merge --no-ff -m "合并后删除分支,保留分支信息"。

注意

千万不要使用Windows自带的记事本编辑任何文本文件,可下载notepad++

基本配置

1.全局配置提交的个人信息

git config --global user.name "Your Name"
git config --global user.email "email@example.com"

2.给项目初始化一个git

git init

3.添加文件到Git仓库,分两步:

git add <file>,注意,可反复多次使用,添加多个文件;
git commit -m <message>,完成。

4.查看git状态
git status
如果显示红色就说明没有修改了没有add
如果显示绿色则说明add了没有commit

5.查看修改内容
git diff

6.版本回退
git reset --hard commit_id
git revert --hard com
例子:

上一个版本就是HEAD^,上上一个版本就是HEAD^^,
当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

7.查看提交日志
git log
在这里插入图片描述
git log --pretty=oneline
在这里插入图片描述
git reflog查看命令历史,以便确定要回到未来的哪个版本

8.查看区别
git diff filename:比较工作区和暂存区
git diff HEAD -- filename:比较工作区和版本库的最新版本

9.撤销修改
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
git checkout -- file要是暂存区有就恢复暂存区版本,要是没有就恢复版本库的版本

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

10.删除文件恢复
前提:之前add过到暂存区
误删想要恢复:git checkout -- <file>
会恢复到版本库中最新的版本文件,但会丢失没有提交的部分

11.查看远程信息
git remote -v

12.建立本地分支和远程分支的关联
git branch --set-upstream branch-name origin/branch-name

13.本地推送分支
git push origin branch-name

远程仓库

1.获取到此电脑的key
ssh-keygen -t rsa -C "youremail@example.com"
按照提示到电脑找到id_rsa.pub,复制到你的github上,以后就可以验证是否是本人提交

2.本地仓库与github连接,这样本地仓库就能提交到相应的仓库
git remote add origin git@github.com:michaelliao/learngit.git

3.本地内容提交到github上
第一次提交
git push -u origin master
以后
git push origin master
警告
当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告:

The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?

输入yes

3.从远程库克隆
git clone git@github.com:michaelliao/gitskills.git

分支

基本用法

查看分支:git branch

查看分支对应的远程分支: gti branch -vv

创建分支:git branch <name>

切换分支:git checkout <name>或者git switch <name>

创建+切换分支:git checkout -b <name>或者git switch -c <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

解决冲突

git log --graph 可以看到分支合并图
当主分支和dev分支分别进行修改并commit时,mer时要是发现两个分支修改同一处代码,就会冲突
冲突就会出现这个,手动修改并merge

<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1

分支管理策略

Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息
禁用fast forward
git merge --no-ff -m "merge with no-ff" dev

bug分支

前提:
当在分支写了一半没有提交时,要转到其他分支写完要提交,如果直接提交会把例外分支没提交的也提交了
所以如果没commit就可以git stash 把工作区清理
如果回到分支就恢复git stash pop
在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick <commit>命令,把bug提交的修改“复制”到当前分支,避免重复劳动。
在这里插入图片描述

feature分支

强行删除分支
git branch -D <name>

rebase

标签管理

标签可以知道打标签时的版本
1.创建标签
git tag v1.0
2.查看标签
git tag
3.查看标签信息
git show <tagname>
4.指定标签信息
git tag -a <tagname> -m "blablabla..."
5.指定相应的commit打标签
git tag v0.9 f52c633
6.删除标签
git tag -d v0.1
7.删除一个远程标签
git push origin :refs/tags/<tagname>
8.推送全部未推送过的本地标签
git push origin --tags
9.推送一个本地标签
git push origin <tagname>

常见问题

  • 使用git revert 版本 //撤销某个提交带来的修改

  • 撤销HEAD指针之前的第3个提交,并且生成一个新的提交。
    git revert HEAD~3

  • 撤销从master之前第5个提交到之前第3个提交的变化(这么看来,前面是开区间,第6个没有被包含;后面是闭区间,包含了第3个
    git revert -n master~5..master ~ 2
    在这里插入图片描述

  • 使用git reset 版本

  • 在这里插入图片描述

1.  git checkout the_branch   # 切换到这个分支
2. git pull  # 拉取
3. git branch the_branch_backup # 备份一下这个分支当前的情况 
4. git reset --hard the_commit_id # 把the_branch本地回滚到the_commit_id
5.git push origin :the_branch # 删除远程分支the_branch
6.git push origin the_branch:the_branch # 使用回滚之后的分支重新建立远程分支
5. git push origin :the_branch_backup # 如果前面的都成功了 删除这个分支 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值