Git教程

    该笔记事笔者学习廖雪峰Git教程的笔记,如果想详细了解Git请移步廖雪峰官网。

    廖雪峰官网地址 : https://www.liaoxuefeng.com/

    廖雪峰Git教程 : https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

 

1. 切换分支
git checkout fenzhi

2. 提交代码
git stash
git pull
git stash pop
git add .
git commit -am "注释"
git push
git push --set-upstream origin origin/dev-strategyg

3. 更新远程分支
git fetch



一、 下载Git
Git官网地址 : https://git-scm.com/

二、 安装Git

三、 创建版本库
1. 装个地方常见一个目录
mkdir repository
2. 进入新建的目录
cd repository
3. 执行 git init 命令创建版本库
注意 : 版本库自动生成的 .git 文件不要随便修改
4. 我创建时执行的命令
mkdir gitrepository
cd gitrepository
pwd //查看文件目录
git init

四、 创建文件(夹)并添加到版本库
1. 首先创建一个文件readme.txt(文件夹也可以)
2. 添加到版本库的命令分两个
git add readme.txt
git commit -m "说明"

五、 查看仓库当前状态
git status

六、 查看文件readme.txt的变更
git diff readme.txt

七、 查看提交记录
git log
或者 git log --pretty=oneline

八、 版本回退
Git 用 HEAD 表示当前版本, 上一版本用 HEAD^ 表示, 上上个版本用 HEAD^^ 表示,以此类推
但是 上一百个版本写一百个^太麻烦,所以回退上100个版本可以使用 HEAD~100
回退版本的命令如下
git reset --hard HEAD^

九、 恢复到版本回退之前
恢复到之前需要找到commit id
可以使用命令
git reflog
找到之前的commit id,使用下面的命令
git reset --hard commit-id(只写前几位就行了,不必写全)

查看文件内容命令 : cat readme.txt(文件名字)

十、 撤销修改
撤销修改有两种
1. 直接撤销工作区的修改
git checkout -- readme.txt(文件名)
2. 撤销加到暂存区的修改
git reset HEAD readme.txt(文件名)
还有一种修改是提交到版本库了,就需要回退版本了

十一、 删除文件
切记删除文件也是一中修改
有两种方式提交修改
1. 删除文件 | git add 文件名 | git commit -m "注释"
2. 删除文件 | git rm 文件名 | git commit -m "注释"

十二、 Git远程仓库
Git是一个分布式的版本控制系统,所以不同于SVN,Git不需要中央仓库(实际使用中会用一台服务器作为中央仓库,但是它的地位与其他没有仓库没有区别)。
如果要访问远程仓库,需要先在自己的Git生成密钥。
命令如下:
ssh-keygen -t rsa -C "youremail@example.com" (引号中的为加密内容,根据自己的情况而定)
然后进入Git目录下的 .shh 文件夹,.ssh里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对。id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
链接远程仓库,只需要将自己的公钥(id_rsa.pub文件的内容)加入对方的SSH Key即可。

十三、 链接一个Git远程仓库
以 Github 为远程仓库为例
1. 将 id_rsa.pub中公钥添加到GitHub 的SHH Key中。
2. 在Github中创建一个仓库 mytest
3. 将本地仓库和Github上的仓库关联起来
git remote add origin git@github.com:aston2016/mytest.git
4. 将本地仓库master分支推送到Github上
git push -u origin master
5. 现在本地仓库和Github仓库就关联起来了,以后再向Github推送修改可使用下面命令
git push origin master
至此就连接了一个Git远程仓库,就拥有了一个分布式版本控制系统。

十四、 克隆远程仓库
克隆远程仓库需要知道远程仓库的地址,然后使用 git clone 命令。
假设Github上有一个仓库git@github.com:aston2016/mytest.git,则克隆该仓库命令如下:
git clone git@github.com:aston2016/mytest.git

十五、 Git分支管理
1. 创建分支
git checkout -b 新分支名称
或者
git branch 新分支名称
git checkout 新分支名称
2. 合并分支
git merge 合并的分支名称
3. 删除分支
git branch -d 分支名称
4. 总结
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
5. 查看远程分支
git branch -a
6. 跟新远程分支到本地
git fetch //不会自动合并
7. 删除远程分支
git branch -r -d origin/branch-name
git push origin :branch-name

十六、 冲突
Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容

十七、 查看分支合并图命令
git log --graph
或者 git log --graph --pretty=oneline --abbrev-commit

十八、 分支管理策略
上面的合并分支都是快速合并模式(Fast forward),这种合并模式一旦删除分支,分支的信息就会丢失。
所以,优秀的Git可以禁止快速合并模式,禁止之后在合并时会生成一个新的commit,这样,从分支历史上就可以看出分支信息
禁止快速合并模式的命令如下:
git merge --no-ff -m "注释信息" 分支名称
1. 分支策略
一般情况下用到的分支策略就是保持master的稳定,即master只用来发布最新版本,不在master分支上干活。创建分支dev,只在dev上干活。

十九、 保存工作现场
工作中我们总会遇到这样的情况,在一个分支的活还没有干完,但是遇到一些紧急情况需要切换到其他分支干活。Git提供了stash功能可以用来保存工作现场。
相关的命令如下:
保存工作现场 : git stash
查看保存的现场列表 : git stash list
恢复现场 : git stash apply
删除某条现场 : git stash drop
恢复现场并删除 : git stash pop
恢复指定的现场 : git stash apply stash@{0}

二十、 强行删除分支
git branch -D 分支名称
注意D是大写

二十一、 多人合作
1. 查看远程分支,远程仓库默认名称 origin
git remote
git remote -v //详细信息
2. 推送分支
git push origin 远程分支名称
3. 抓取分支
git pull
git checkout -b dev origin/dev
创建本地分支dev,并于远程分支dev关联,并切换到本地分支dev
4. 多人合作
多人协作的工作模式通常是这样:
1) 首先,可以试图用git push origin branch-name推送自己的修改;
2) 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
3) 如果合并有冲突,则解决冲突,并在本地提交;
4) 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
5) 如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。
5. 总结
查看远程库信息,使用git remote -v;
本地新建的分支如果不推送到远程,对其他人就是不可见的;
从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;
从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

二十二、 标签管理
标签其实也是一个指针,指向一个commit
1. 创建标签
git tag 标签名称 //当前版本
git tag 标签名称 commitId //给指定的commit id打标签
2. 查看标签
git tag
3. 查看某个标签的信息
git show 标签名称
4. 总结
命令git tag <name>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
git tag -a <tagname> -m "blablabla..."可以指定标签信息;
git tag -s <tagname> -m "blablabla..."可以用PGP签名标签;
命令git tag可以查看所有标签。
5. 删除标签
git tag -d 标签名称
6. 推送本地标签到远程仓库
git push origin 标签名称
7. 一次性推送全部尚未推送到远程的本地标签
git push origin --tags
8. 删除远程标签
1) 先从本地删除
git tag -d 标签名称
2) 从远程删除
git push origin :refs/tags/v0.9
9. 总结
命令git push origin <tagname>可以推送一个本地标签;
命令git push origin --tags可以推送全部未推送过的本地标签;
命令git tag -d <tagname>可以删除一个本地标签;
命令git push origin :refs/tags/<tagname>可以删除一个远程标签。

二十三、 关联远程仓库
1. 关联一个远程仓库
git remote add origin git@gitee.com:liaoxuefeng/learngit.git
2. 删除远程仓库
git remote rm origin
3. 关联多个远程仓库
远程仓库的默认名字是origin,当本地关联多个需要指定远程仓库的名称
git remote add gitee git@gitee.com:liaoxuefeng/learngit.git //gitee 为指定的远程仓库名称 git@gitee.com:liaoxuefeng/learngit.git 为远程仓库地址

二十四、 自定义Git
1. 忽略特殊文件
有些文件我们会放到版本库里,但是我们并不想提交这些文件。这是可以编辑 .gitignore 文件忽略这些文件。
如果你确实想添加该文件,可以用-f强制添加到Git:git add -f 文件名称
用git check-ignore命令检查:git check-ignore -v 文件名称
2. 配置别名
这个功能非常好,可以把自己记不住或者容易记混的的单子或者太长的单词配置简写,这样即容易记忆,也显得个性。
命令 : git config --global alias.别名 git命令
例子 : git config --global alias.co checkout
例子 : git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
3. 配置文件
每个仓库的Git配置文件都放在.git/config文件
别名就在[alias]后面,要删除别名,直接把对应的行删掉即可(所以配置别名也可以直接在文件里修改)
而当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中

posted @ 2017-10-26 18:47  aston  阅读(266)  评论(0编辑  收藏  举报