Git
Preface
版本工作工具: Git
Getting Start (Ubuntu)
Install & Update
# INSTALL
sudo apt-get install git
# UPDATE
sudo apt-get update
sudo apt-get install git
Run
git
Create Repository
# 自定义创建test1的目录并进入.
git init
# Initialized empty Git repository in /home/unbuntu-lls-one/lee_repository/test1/.git/
# 在该目录下会生成一个.git的文件.
Version & Rollback
# 自定义创建一个aaa.txt文件.
# 给对象文件添加版本. commit为设置版本号信息.
# git add [filename]
# git add . 表示添加目录下的所有文件的修改到暂存区.
git add aaa.txt
git commit -m 'aa0.1'
# 需要配置默认account identity
# 查看版本信息.
git log
# Rollback, 回退之前版本. 方式有很多种.
git reset --hard HEAD^
# --hard 后面也可以写上log中的commit值.
- HEAD^: 回到上一个版本.
- HEAD^^: 回到上上个版本.
- HEAD~n: n表示回到前多少个版本.
# 通过reflog中的commit值来回到对应的版本.
git reflog
# reflog记录了历史回退版本信息.
31502f3 (HEAD -> master) HEAD@{0}: reset: moving to 31502f3699a8f4dd5b5b0f80b8dd65f42b0ea0fe
514f188 HEAD@{1}: reset: moving to HEAD~1
d5bab2e HEAD@{2}: reset: moving to HEAD^
31502f3 (HEAD -> master) HEAD@{3}: commit: aa0.3
d5bab2e HEAD@{4}: commit: aa0.2
514f188 HEAD@{5}: commit (initial): aa0.1
# 通过commit值回退.
# git reset --hard [commit]
git reset --hard 514f188
to set your account’s default identity
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
WorkArea>>>Checkout>>>Version Checkout
- WorkArea: 存在**.git目录的目录中, 任何没有add**到缓冲区的修改都会被记录.
- Checkout: 修改被add的空间, 任何没有commit到版本的添加都会被记录.
- Version Checkout: commit之后地方.
Show Status
# 查看当前位置中任何的修改或添加记录
git status
# 红: 文件的修改(modified), 新增的文件(untracked), 删除的文件.
# 绿: add但未commit的文件都会被记录.
Changed Undo
# 撤销WorkArea的修改.
# git checkout -- [filename]
git checkout -- aaa.txt
# 撤回已add的修改到WorkArea.
# git reset HEAD [filename]
git reset HEAD aaa.txt
git checkout -- aaa.txt
Contrast Different
# 对比同文件的不同状态的信息, -表示当前, +表示其他.
# 对比当前版本和WorkArea.
# git diff HEAD -- [filename]
git diff HEAD -- aaa.txt
# 对比当前版本和前一个版本.
# git diff HEAD HEAD^ -- [filename]
git diff HEAD HEAD^ -- aaa.txt
Deleted
# rm删除文件, 会被git记录.
# 如果确认删除.
# git rm [filename] 然后 git commit -m 'version'
git rm aaa.txt
git commit -m 'aa Deleted'
# 如果是误删.
# git checkout -- [filename]
On branch (master & other)
Branch
# 查看当前分支.
git branch
# 创建并切换到一个分支上工作.
# git checkout -b [branch]
git checkout -b dev1
# 切换分支.
# git checkout [branch]
git checkout master
# 可以在新分支下修改提交新的内容.
# git merge [branch] 来合并其他分支的工作内容.
git merge dev1
# 删除分支.
# git branch -d [branch]
git branch -d dev1
# 查看记录.
git log --graph --pretty=oneline
BUG Branch
# 如果我们已经在一个新分支中编辑了并且编辑的内容还没有add和commit.
# 突然来个master的bug我们怎么办了.
# 那么我们需要在master中新建一个bug分支来处理任务.
# 先把我们目前没有处理完的任务给stash.
git stash dev1
git checkout master
git checkout -b bug1
# 处理完了, 就回到master然后合并分支并删除bug1分支.
# 查看stash中的内容.
git stash list
# 把储存的dev1释放出来.
git stash pop
# 然后对这个任务进行处理就行了.
Git & Github (Ubuntu)
# 生成一个SSH公钥.
ssh-keygen -t rsa -C "you@email.com"
# 密码自定义或不给.
# 然后把~/.ssh目录下的id_rsa.pub公钥信息复制到Github中settings的SSH and GPG keys.
ssh -T git@github.com
# 完事.
# 如要把本地修改更新到github, 需把修改都commit掉.
# 然后要创建一个github repository.
git remote add origin "Your github_repository_url"
# 如果github上的库, 不是空的.
# 需要先把github上的库pull下来, 不然会报错.
# git pull --rebase origin master.
# 那么我们怎么把本地project更新到库呢?
git push -u origin master