Git 学习笔记
Git 学习笔记

最近在廖雪峰的官方网站上学Git管理代码库,在这里做笔记,备忘用
安装Git
sudo add-apt-repository ppa:git-core/ppa
sudo apt-get update
sudo apt-get install git
git --version
安装完成后,还需要最后一步设置,输入
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
创建版本库
初始化一个Git仓库,使用git init命令
添加文件到Git仓库,分两步:
-
使用命令
git add <file>,注意,可反复多次使用,添加多个文件; 使用命令git commit -m,完成 -
使用命令
git commit -m <message>,完成
时光机穿梭
- 要随时掌握工作区的状态,使用
git status命令 - 如果
git status告诉你有文件被修改过,用git diff可以查看修改内容
版本回退
用git log命令查看历史记录
如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数
用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
使用git reset命令回退版本
- 回退到上一个版本:
git reset --hard HEAD^ - 退回到指定版本:
git reset --hard commit_id
commit_id用git log可以查看
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本
撤销修改
- 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令
git checkout -- <file> - 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令
it reset HEAD <file>,就回到了场景1,第二步按场景1操作 - 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库
删除文件
命令git rm用于删除一个文件,然后git commit -m <message>,完成
如果是删错,用git checkout -- <file>
远程仓库
添加远程库
git remote add origin <远程仓库地址>
git push -u origin master
第一次推送
master分支时,需加上-u参数 以后用git push origin master推送最新修改
从远程库克隆
git clone <远程仓库地址> <克隆到本地时的文件夹名,可留空>
自定义Git
忽略特殊文件
在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件
如:
忽略Windows自动生成的垃圾文件:
# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini
忽略Python编译产生的.pyc、.pyo、dist等文件或目录:
# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build
最后一步就是把.gitignore也提交到Git
配置别名
用git st表示git status:
git config --global alias.st status
在撤销修改一节中,我们知道,命令git reset HEAD <fil>可以把暂存区的修改撤销掉(unstage),重新放回工作区。既然是一个unstage操作,就可以配置一个unstage别名:
git config --global alias.unstage 'reset HEAD'
当你敲入命令:
git unstage test.py
实际上Git执行的是:
git reset HEAD test.py
配置文件
配置文件放在.git/config文件中:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = git@github.com:michaelliao/learngit.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[alias]
last = log -1
别名就在[alias]后面,要删除别名,直接把对应的行删掉即可
删除所有提交历史记录,成为一个干净的新仓库
git checkout --orphan latest_branch
git add -A
git commit -am "NEW"
git branch -D master
git branch -m master
git push -f origin master
参考文献
git - how to delete all commit history in github? - Stack Overflow Git教程 - 廖雪峰的官方网站
评论