您的位置:首页 > 其它

Git 学习笔记

2017-05-23 17:00 295 查看
看了一下廖雪峰的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文件内容即可

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

使用命令
git remote add origin git@github.com:xwj-scarf/learngit.git


关联之后,使用命令
git push -u origin master
第一次推送master分支的所有内容

此后每次本地提交后,只要有必要,就可以使用命令
git push origin master
来推送最新修改

远程库克隆到本地

git clone git@github.com:xwj-scarf/learngit.git


或者

git clone https://xxx[/code] 

分支管理

在版本回退里,每次提交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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: