Git-廖雪峰网站Git教程总结

根据https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000教程整理的git学习笔记。另附Git官网地址:http://git-scm.com。

1、创建版本库

    设置全局的姓名和email:

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

    初始化一个Git仓库,使用git init命令;

    添加文件到Git仓库,分两步:

  1. 使用命令git add <file>命令,可以用空格间隔多个文件名,添加多个文件;
  2. 使用命令git commit -m "说明信息",完成。

2、时光机穿梭

2.1 查看修改的内容

git status 查看工作区的状态可以知道哪个文件被修改;

git diff 文件名  查看该文件的修改内容,比较的是工作区和暂存区,也就是没有add时看到的改动。

2.2 在不同的版本之间切换

git log 查看过去提交(commit)的记录;

git log --pretty=oneline 一行简略查看过去提交的记录;

在过去的记录中,要注意commit id(版本号),由SHA1计算出的一个很大的数,可以通过commit id进行不同版本的切换;

git reset --hard [commit id] 切换到指定id的版本,若不产生歧义,id可以只写前几位;

git reset --hard HEAD^ 切换到当前版本的上一个版本,其中HEAD表示当前版本,一个^代表上一个版本,HEAD~100上100个版本;

git reflog 查看过去命令的记录。

2.3 管理修改

Git管理的是修改,而不是文件。

第一次修改 -> git add -> 第二次修改 -> git commit 中,因为add命令添加了第一次修改,所以只提交了第一次修改。

git diff HEAD -- readme.txt  查看add操作之后的改动。

2.4 撤销修改

1、当乱改了文件的内容,还没有add,则使用命令git checkout -- file撤销修改;

2、当乱改了文件的内容,已经add了,则使用命令git reset HEAD file撤销暂存区的修改,再回到第1步;

3、已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库(对这句话存疑)。

2.5 删除文件

1、真要删除某个文件:先通过rm删除该文件,再通过git rm file增加删除文件的修改,最后commit提交;

2、若是误删某个文件:通过git checkout -- file恢复该文件,git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

3、远程仓库

3.1 Github添加秘钥

1、创建SSH秘钥: ssh-keygen -t rsa -C "youremail@example.com",在用户目录下会有.ssh文件夹,文件夹底下有公钥文件id_rsa.pub;

2、将id_rsa.pub文件中的内容添加到Github Setting页面里的SSH Key里。

3.2 添加远程库

1、git remote add origin git@github.com:username/learngit.git;相当于为远程仓库地址取名叫origin;

2、第一次push时,git push -u origin master,-u将本地的master分支和远程的master分支关联起来;

3、后面再push时,可以直接使用git push origin master。

3.3 从远程库克隆

克隆命令:git clone git@(https//)github.com:username/learngit.git。

4、分支管理

4.1 创建和合并分支

当修改自己的代码到一半不能提交保存时,为了防止自己干了一半的东西因为异常消失,可以创建自己的分支,在自己的分支中进行修改,然后切换到主分支用merge命令合并,最后再删除自己的分支。

1、查看分支:git branch;

2、创建分支:git branch <name>;

3、切换分支:git checkout <name>;

4、创建并切换分支:git checkout -b <name>;

5、合并某分支到当前分支:git merge <name>,其中自动采用的是fast-forward模式合并的,即将当前分支指向被合并分支的最新结点。

6、删除分支:git branch -d <name>

4.2 解决冲突

当自己分支的代码和主分支别人提交的在merge过程发生冲突,可以在文件中看到冲突的地方,然后对其进行合并,最后add commit提交合并后的内容,最后删除自己的分支(自己的分支还是在的)。

当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。

git log --graph --pretty=oneline --abbrev-commit  可以以图形的形式查看分支。

4.3 分支管理策略

强制禁用Fast-forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

git merge --no-ff -m "说明信息" dev,--no-ff表示禁用fast-forward模式;

在工作中,最终上线的代码都在master分支上,具体迭代的修改在dev分支上,其他人再建立各自的分支,做出修改后提交到dev分支上,最后dev分支合并到master分支上上线完成版本迭代。

4.4 Bug分支(临时改bug)

修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除bug分支;

当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。

git stash pop:恢复的同时把stash内容也删了;

git stash apply:恢复后,stash内容并不删除;

git stash drop:删除stash内容。

4.5 Feature分支(增加新功能)

添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支。

git branch -D 分支名:强行删除一个没有合并过的分支。

4.6 多人协作

1、git remote -v:查看远程库信息;

2、本地新建的分支不push到远程库,对别人而言就是不可见的;

3、想提交一个新的分支到github上:

(1)若该分支在github上已经有了,则使用git checkout -b dev origin/dev创建本地分支即可,该命令也会将本地分支和远程分支自动关联;或者使用git checkout -b dev先创建并切换到本地分支,再通过git branch --set-upstream-to=origin/dev建立本地dev分支和远程dev分支的联系

(2)若该分支在github上没有,则先创建本地分支,再git push -u origin dev提交分支,-u将本地dev分支和远程dev分支关联起来。

4、当别人先提交改动到dev分支上,本地就不能直接git push origin dev提交改动,先要git pull (origin dev)把别人的改动拉到本地merge,处理冲突,并commit,接着才能push。其中,需要注意的是pull并不是把远程库的文件拉过来覆盖当前文件,而是与本地文件merge合并。

PS:删除远程关联:git remote rm origin

建立远程关联:git remote add origin git@github.com:xxx/xxx。

5、标签管理

5.1 创建标签

1、commit id不好记,所以需要tag来表示某个版本,如v1.0;

2、首先切换到需要打tag的分支;

3、git tag v1.0<name> <commit id>用于新建一个标签,默认为HEAD,也可以指定一个commit id;

4、git show <name>查看标签信息:

5、git tag -a <name> -m "标签信息" <commit id>可以指定标签信息;

6、git tag -s <name> -m "标签信息"<commit id>""可以用PGP签名标签;

7、git tag可以查看所有的标签。

5.2 操作标签

1、git push origin <name>向远程库推送一个tag;

2、git push origin --tags 向远处库推送全部未推送的本地tag;

3、git tag -d <name> 删除一个本地tag;

4、git push origin :refs/tags/<name>删除一个远程的tag。

6、GitHub

参与别人开源项目的构建:

1、在GitHub上,可以任意Fork开源仓库;

2、自己拥有Fork后的仓库的读写权限;

3、可以推送pull request给官方仓库来贡献代码。

7、自定义Git

1、让Git显示颜色,会让命令输出看起来更醒目:git config --global color.ui true;

2、让git忽略某些特殊文件:

在Git工作区根目录下新建一个文件.gitignore,其中包含了所有需要忽略的文件或目录;

可以参考https://github.com/github/gitignore上的.gitignore文件进行修改;

如果想添加某个被忽略的文件:

(1)可以使用git add -f <name>强制添加;

(2)可以使用git check-ignore -v <name>查看是.gitignore文件的哪一行添加了该文件名。

3、配置别名:(如,将git status命令改为git st)

git config <--global> alias.st status;加上<--global>代表该别名全局有效,配置文件为用户目录下的.gitconfig文件。

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" 一键配置log

别名的配置不是全局的,可以在.git/config底下的[alias]标签看到;是全局的,则在用户主目录下的.gitconfig文件中可以看到。

4、建立Git服务器可以参考链接:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137583770360579bc4b458f044ce7afed3df579123eca000



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值