Git 学习笔记

看了一下廖雪峰的Git教程,感觉很不错很入门
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
推荐一波

Git 学习

安装git

sudo apt-get install git

设置全局

git config --global user.name xxx
git config --global user.email xxx

创建你想要当仓库的一个文件夹,进入之后
git init

在下面添加文件,添加到暂存区
git add test.txt

然后提交上去当前分支
git commit -m test.txt

查看仓库状态
git status

查看具体修改了什么的东西
git diff

回退版本
git reset --hard HEAD^ 前一个版本,如果是前100个版本,HEAD~100

git log 可以查看提交历史,以便确定要回退到哪个版本

git reflog 用来记录你的每一次命令,可以查看commit_id

恢复版本,前提是要有commit_id
git reset --hard commit_id

Git跟踪并管理的是修改,而非文件。每次修改,如果不add到暂存区,那么就不会加入到commit中

git diff HEAD -- test.txt命令查看工作区和版本库里面最新版本的区别

git checkout -- test.txt丢弃工作区的修改

适用两种情况:

  • test.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

  • test.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

git reset HEAD test.txt把暂存区的修改撤销掉,回到工作区,用于add之后还没有commit

删除文件
在本地rm t.txt之后,Git会知道你删除了文件,那么工作区和版本库就不同了
现在有两种选择,要么是真的要删,那么
git rm t.txt
git commit -m remove t.txt就更新了
另外一种情况就是删错了,想回复,那么
git checkout -- t.txt
其实checkout是用版本库里面的版本来替换工作区的版本

远程仓库连接 连接到github上托管

步骤:
1. 打开github登录
2. setting下的SSH and GPG keys
3. 添加一个新的SSH key,复制.ssh目录下的id_rsa.pub文件内容即可

把一个本地库关联一个远程库步骤:

  1. 使用命令git remote add origin git@github.com:xwj-scarf/learngit.git
  2. 关联之后,使用命令git push -u origin master第一次推送master分支的所有内容
  3. 此后每次本地提交后,只要有必要,就可以使用命令git push origin master来推送最新修改

远程库克隆到本地

git clone git@github.com:xwj-scarf/learngit.git
或者
git clone https://xxx

分支管理

在版本回退里,每次提交Git都会把它们串成一条时间线,这条时间线就是一个分支。截至目前只有一条时间线,在Git中这个分支叫主分支,即master分支。而HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以HEAD指向的是当前分支

当我们创建新的分支,例如叫dev,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上了,但是从现在开始,对工作区的修改和提交都是针对dev分支了,比如新提交一次后,dev指针向前走一步,而master是不变的

假如我们在dev上的工作完成了,就可以把dev合并到master上,Git实际上就是把master指向dev的当前提交,就完成了合并

然后我们就可以把dev分支删除掉,直接删除指针

常用命令

创建dev分支,并切换到dev分支下,-b参数表示创建并且切换

git checkout -b dev

查看当前分支
git branch

切换到XXX分支
git checkout xxx

切换回master分支,然后合并dev分支到master上
git checkout master
git merge dev

删除dev分支
git branch -d dev

看分支的合并情况
git log --graph

合并分支时,加入–no-ff参数可以用普通模式合并,合并后的历史有分支,可以看出来曾经做过合并,而fast forward合并是看不出来的

Git提供了一个stash功能,可以把当前工作现场储藏起来,等以后恢复现场后继续工作,常用于紧急修复bug,先把当前自己工作藏起来
git stash

查看储藏的工作现场
git stash list

恢复工作现场
git stash apply 恢复后,stash内容并不删除
git stash drop 额外命令来删除

git stash pop 恢复同时删除

开发一个新功能,最好新建一个分支,如果要丢弃一个没有被合并的分支,可以通过git branch -D xxx删除

推送分支
git push origin master
推送其他分支
git push origin xxx

标签管理

打标签非常简单,切换到想要打标签的分支上,然后执行命令
git tag xxx

用命令git tag查看所有标签

默认标签是打在最新提交的commit上的,有时候忘了打,可以找到历史提交的commit id,然后打上就可以了
git tag xxx commit_id

查看标签信息
git show tag_name

创建带有说明的标签,-a指定标签名,-m指定说明文字
git tag -a v1.0 -m nihao commit_id

删除标签
git tag -d v1.0

推送某个标签到远程
git push origin <tag_name>

一次性推送全部标签到远程
git push origin --tags

如果已经推送到远程又想删除的话,步骤:
先从本地删除
git tag -d v1.0
然后从远程删除
git push origin :refs/tags/v1.0

全球最大同性交友网站 github

  • 在GitHub上,可以任意Fork开源仓库
  • 自己拥有Fork后的仓库的读写权限
  • 可以推送pull request给官方仓库来贡献代码

自定义Git

忽略特殊文件
在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动更忽略这些文件

使用中遇到的一些问题集合:

提交时使用git push origin master
出现failed to push some refs to git

解决方法:先使用git pull --rebase origin master

然后正常push
git push origin master

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值