git命令记录

安装就不谈了
配置看: https://blog.csdn.net/zhangsify/article/details/80488809

0.全局配置
git config --list查看全局所有的配置列表
git config --global user.name 'your_name'配置全局用户名
git config --global user.email 'your_email'配置全局邮箱

这里就是记录是哪个账号在代码仓库commit
也可针对某一个git项目设置不同的局部用户名和邮箱,这种情况在公司比较常见。只需要吧--global删除即可

1.初始化本地代码仓库
git init 直接在本地创建空的
git clone <git's url> 直接扒线上代码仓库的

2.管理本地仓库
git status查看当前本地仓库的状态

被修改增加删除的文件在工作区,暂存区或在代码仓库未提交都会有不同的状态

git add <filename>将修改或添加的文件加到暂存区
git add -A将修改或添加的文件全部加到暂存区
git rm <filename>将暂存区和工作区的现有文件删除
git commit -m 'commit_info'提交到本地仓库,并写好提交备注
git log --graph --pretty=oneline --abbrev-commit这个命令是用来图形化查看commit情况

3.管理本地仓库不同版本
git log查看本地仓库的提交日志,包含commit id,操作日期,用户和什么操作(merge)导致了这次更新

git通过commit id唯一标识不同版本的本地仓库

git reset --hard <想回到的版本的commit_id的前几位或全程>工作区,暂存区,本地仓库全部回到那个之前版本提交的状体

HEAD是一个指向当前分支的当前版本的指针

git reset --hard HEAD^^或HEAD~2表示回到两个版本前的版本
其中又分 hard / soft / …之类,有兴趣可以继续查阅
git reflog查看命令历史,可以查看回退后,看不到commit id的被回退的版本

4.关于本地的修改
git diff HEAD -- <file_name>查看工作区和代码仓库中相同文件名不同的地方
git diff -- <file_name>查看工作区和暂存区中相同文件名不同的地方
git diff --cached <file_name>查看暂存区和本地仓库中相同文件名不同的地方
git checkout -- <file_name>只删除了工作区的文件,从暂存区拉回来
git reset HEAD <file_name> + git checkout -- <file_name>工作区和暂存区都被删除,先从代码仓库拉到暂存区,再从暂存区拉回工作区

5.分支管理
分支是多人开发的基础
git branch展示分支信息(其中又-r -a等参数可选)
git branch <branch_name>创建分支
git checkout <branch_name>切换分支
git checkout -b <branch_name>创建+切换分支
git branch -d <branch_name>删除分支
git merge <branch_name>把branch_name分支合并到当前分支
git branch -vv查看远程和本地分支关联情况
其中最重要的应该是从原理上了解HEAD和分支之间的关系,和分支操作与移动指针的关系

6.远程库基操

6.1创建远程库

1.如果git init,你应该现在你自己的GitHub上创建一个同名的repo

  • git remote add origin git@github.com:your_github_username/your_repo_name.git将本地仓库与远程关联,其中origin就代表后面那一串链接
    //这里用的是git协议,通过ssh链接,之前我们应该在GitHub上添加ssh-key,这个按照GitHub官网教程即可,使用http协议又有所不同
  • git push -u origin master第一次往什么都没有的远程库中push,加上-u
    有关git push的,下面讲,并给一个详细连接

2.如果git clone ....,当我没说,接着往下``

6.3远程分支和本地分支关联

如果远程分支不存在,那么要先创建远程分支:git push origin <branch_name>即可;即对不需要写远程分支是啥的push,实现的是创建远程新分支。
git branch --set-upstream-to origin/<branch_name> <branch_name>把本地branch_name和远程的origin/branch_name分支关联起来
git checkout -b <branch_name> origin/<branch_name>在本地新建一个branch_name分支,并和origin/branch_name关联起来

6.2 push&pull代码库
git push推送远程库某个分支的更新;
原型为git push <远程主机名> <本地分支名>:<远程分支名>意义自明
各种省略参数的用法(万变不离其中):http://www.cnblogs.com/qianqiannian/p/6008140.html

git pull取回远程库某个分支的更新,再与本地的指定分支合并,等于git fetch+git merge
原型为git pull <远程主机名> <远程分支名>:<本地分支名>意义自明

那和git clone有什么区别呢??
git clone一个从无到有的过程,把所有分支即整个项目扒下来到本地库
git pull获取到一个分支的更新到本地,并更新本地库

git pull同样有省略参数的用法,网上自查

先pull再push的必要性:你push的代码版本号低于远程库时,就会提示你先pull再push。当多人开发时,他人在你之前提交了代码到远程库,本地的版本号就低于远程,强行push只会覆盖,所以先pull下来,再push上去。

既然之前提到本地修改,那如果push到远程库出错了,怎么修改呢?

7. stash操作保存未完成的现场
git stash之前调用git status,还有很多状态的文件,但是git stash之后的再git status就是clean
git stash list查看被stash的现场的list
git stash pop恢复最新被stash的现场,并删除list中该现场的记录,等价于git stash apply + git stash drop

8.得到更优雅的分支曲线,方便查看commit变化
git rebase效果什么的,直接上图吧

  • 在第一个关联好的代码仓库进行rebase test的commit两次,后push
    在这里插入图片描述
  • 再另一个关联好的代码仓库进行rebase test的commit,后pull远程库
    在这里插入图片描述
  • git rebase
    在这里插入图片描述
    由之前的分支变成优雅的直线,仔细观察commit id,原来就在本地的commit id变了,说明git帮你整理顺序时,远程库中的照搬,本地的帮你重新做了一遍一模一样的commit;并且merge后的commit不见了

9.设置tag更好地管理不同commit的代码库
git tag v1.0表示给最新的commit_id打上v1.0的标签
git tag显示所有标签
git tag <tag_name> <commit_id>给<commit_id>打上<tag_name>标签
git show <tag_name>展示对应标签信息
git tag -a <tag_name> -m "commit context" <commit_id>给对应<commit_id>打上<tag_name>标签并写上说明"commit context"
git tag -d <tag_name>删除标签
git push origin <tag_name>推送一个本地标签到远程库(根据commit_id标识tag_name打在那)
git push origin --tags推送全部未推送过的本地标签到远程库
git push origin :refs/tags/<tag_name>删除远程库中名为tag_name的标签

git reset --hard <tag_name>回退到标签版本处

tag即是commit_id只是不一样的表现形式。

Finally:所有的git基本指令(git push git status git stash git tag…),都有--help参数,打开官方文档,希望大家多多阅读文档,加强能力

本博客借鉴了廖雪峰老师的教程:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
.#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值