Git 学习笔记
2017-05-23 17:00
295 查看
看了一下廖雪峰的Git教程,感觉很不错很入门
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
推荐一波
设置全局
创建你想要当仓库的一个文件夹,进入之后
在下面添加文件,添加到暂存区
然后提交上去当前分支
查看仓库状态
查看具体修改了什么的东西
回退版本
恢复版本,前提是要有commit_id
Git跟踪并管理的是修改,而非文件。每次修改,如果不add到暂存区,那么就不会加入到commit中
适用两种情况:
test.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
test.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
删除文件
在本地
现在有两种选择,要么是真的要删,那么
另外一种情况就是删错了,想回复,那么
其实checkout是用版本库里面的版本来替换工作区的版本
1. 打开github登录
2. setting下的SSH and GPG keys
3. 添加一个新的SSH key,复制.ssh目录下的id_rsa.pub文件内容即可
关联之后,使用命令
此后每次本地提交后,只要有必要,就可以使用命令
或者
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
推荐一波
Git 学习
安装gitsudo 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 mastergit 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
然后正常pushgit push origin master