[关闭]
@FE40536 2020-05-24T21:01:40.000000Z 字数 3972 阅读 830

Git学习笔记

Git


安装Git

  1. sudo apt install git
  2. #安装完输入
  3. git config --global user.name "用户名"
  4. git config --global user.email "邮箱地址"


基础操作

创建本地仓库

  1. #新建一个repository文件夹,我取名git
  2. mkdir git
  3. cd git
  4. #创建仓库
  5. git init

创建文件

  1. #先写一个README.txt,里面写点东西
  2. vim README.txt
  3. Git is a version control system.
  4. Git is free software.

添加文件到缓冲区

  1. git add README.txt
  2. #可以同时添加多个文件

同步文件到repository

  1. git commit -m "提交说明"

版本回退

  1. #再重复以上修改文件和提交文件操作几次,可以得到一些历史版本,用git log来查看历史版本
  2. git log
  3. #或者用
  4. git log --pretty=oneline
  5. #HEAD指向当前版本,加上^表示上一次版本,回到上一版本用命令
  6. git reset --hard HEAD^
  7. #回到上上版本
  8. git reset --hard HEAD^^
  9. #或者用SHA1来切换版本
  10. git reset --hard 这里写SHA1号码
  11. #获得SHA1编号
  12. git reflog

查看repository状态

  1. #当修改或新建文件后,git会记录状态,用如下命令查看
  2. git status

查看修改

  1. #用如下命令查看工作区文件与版本库里文件的差异
  2. git diff HEAD -- 文件名

撤销修改

  1. #用git checkout -- 文件名可以撤销工作区内的修改,让它回到最近一次add或commit时的状态
  2. git checkout -- 文件名

删除文件

  1. #用rm来删除工作区的文件,可以用git status看到变化
  2. rm test.txt
  3. #情况一:要删除版本库里面的test.txt用
  4. git rm test.txt
  5. git commit -m "消息"
  6. #情况二:要恢复rm的文件,用
  7. git checkout -- test.txt


远程仓库

提交文件

  1. #先在GitHub上面创建一个仓库
  2. #然后在本地仓库内运行
  3. git remote add origin https://github.com:这里填你打开仓库界面后网址最后两段内容加上.git
  4. #如https://github.com/DinoWhite/git,那么就填DinoWhite/git.git
  5. #提交给远程仓库命令
  6. git push -u origin master
  7. git push origin master

拷贝文件

  1. #使用命令git clone
  2. git clone https://github.com/DinoWhite/hello-world

分支管理

基础分支操作

新建分支

  1. #新建分支dev
  2. git checkout -b dev

查看分支

  1. git branch

切换分支

  1. #切换到master分支
  2. git checkout master

合并分支

  1. #将dev分支和master合并
  2. git merge dev

删除分支

  1. #删除dev分支
  2. git branch -d dev

解决冲突

  1. #当分支和master都进行了修改和提交后再合并会产生冲突,遇事要解决冲突,它会帮我们列出冲突,修改后提交了就自动合并了合并后用
  2. git log --graph --pretty=oneline --abbrev-commit
  3. 来查看合并图像
  4. 最后可以删除分支了

分支管理策略

  1. #通常删除分支会丢失分支信息,但是可以通过一定方法将删除的分支转化为一次commit记录,达到保存信息的目的
  2. #新建分支dev
  3. git checkout -b dev
  4. #修改文件并提交
  5. git add README.md
  6. git commit -m "balablala"
  7. #返回master
  8. git checkout master
  9. #合并分支dev,加上--no-ff参数,表示禁用Fast Forward
  10. git merge --no-ff -m "merge with no-ff" dev

Bug分支

  1. #用git stash将档期内工作场地隐藏起来,以后可重新恢复
  2. git stach
  3. #然后切换到新的分支去修改bug,提交,回到原来的分支,合并
  4. git merge --no-ff issue-101
  5. #然后可以切换到dev里面去继续工作了,用如下命令查看贮藏的工作现场
  6. git stash list
  7. #有两种恢复方式
  8. #1.apply,回复后不会把stash list中的内容删除
  9. git stash apply
  10. #2.pop,回复后会把stash list中的内容删除
  11. git stash pop
  12. #可以指定恢复哪一个工作现场
  13. git stash apply stash@{0}

Feature分支

  1. #当代吗要提那家新功能时,新建一个feature分支,在上面开发,防止影响全局
  2. git checkout -b feature-vulcan
  3. #开发完毕提交代码
  4. git add vulcan.py
  5. git commit -m "new function"
  6. #回到dev,准备合并feature-vulcan
  7. git checkout dev
  8. #此时还没合并,但是这时要取消新功能的话,这时直接用git branch -d feature-vulcan删除会背Git提示将丢失修改,此时用-D强制删除
  9. git branch -D feature-vulcan

多人协作

多人协作

  1. #查看远程库信息
  2. git remote
  3. #现实更详细信息
  4. git remote -v

推送分支

  1. #推送就是提交到远程库上面,这是要指定本地分支
  2. git push origin master
  3. #要推送其他分支就用其他分支名字
  4. git push origin dev

抓取分支

  1. #当clone了一个repository时,只能看到本地的master分支
  2. git branch
  3. #要想在dev分支上开发,创建origin的dev分支到本地
  4. git checkout -b dev origin/dev
  5. #这样就可以在dev上修改了
  6. #此时若库主人和另一个在dev上开发的人都在推送时,会产生冲突,解决方法
  7. #先用git pull把最新提交从origin/dev上抓下来,然后在本地合并,再推送
  8. git pull
  9. #如果git pull失败了,请根据提示设置dev和origin/dev的链接
  10. git branch --set-upstream-to=origin/dev dev
  11. git pull

Rebase

  1. #将提交历史整理成直线
  2. git rebase

标签管理

创建标签

  1. #切换到要打标签的分支
  2. git branch
  3. git checkout dev
  4. #如下命令打标签
  5. git tag v1.0
  6. #查看标签
  7. git tag
  8. #可以给历史commit补打标签
  9. git tag v0.9 标签的SHA1
  10. #标签不是按时间列出的,而是按字母列出的,用如下命令查看标签信息
  11. git show v0.1
  12. #创建带有说明的标签-a指定标签名,-m指定说明文字
  13. git tag -a v1.0 -m "version 1.0 released" SHA1

操作标签

  1. #删除打错的标签
  2. git tag -d v1.0
  3. #推送标签到远处
  4. git push origin v1.0
  5. #或者一次性推送全部尚未推送到远处的标签
  6. git push origin --tags
  7. #若远程已经有标签,要删除远程标签,先删除本地标签
  8. git tag -d v1.0
  9. #再删除远程的
  10. git push origin :refs/tags/v1.0


自定义Git

忽略特殊文件

在工作区根目录下创建.gitignore文件(需要提交到git),在此输入需要忽略的文件名

忽略文件的原则是:
- 忽略操作系统自动生成的文件,比如缩略图等;
- 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
- 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

  1. #.gitignore示例
  2. # Windows:
  3. Thumbs.db
  4. ehthumbs.db
  5. Desktop.ini
  6. # Python:
  7. *.py[cod]
  8. *.so
  9. *.egg
  10. *.egg-info
  11. dist
  12. build
  13. # My configurations:
  14. db.ini
  15. deploy_key_rsa

强制添加文件

  1. git add -f 文件名

找出.gitignore文件问题

  1. git check-ignore -v 文件名

配置别名

  1. #将status命令自定义为st
  2. git config --global alias.st status
  3. git config --global alias.co checkout
  4. git config --global alias.ci commit
  5. git config --global alias.br branch
  6. #对于撤销unstage
  7. git config --global alias.unstage 'reset HEAD'
  8. #以后敲入
  9. git unstage test.py
  10. #等价于
  11. git reset HEAD test.py
  12. #配置last让其显示最后一次提交信息
  13. git config --global alias.last 'log -l'



















添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注