[toc]
Git基本使用
Git配置
git config --global user.name XXXX git config --global user.email XXX@XXX.com
显示Git项目中的通用信息
$ git config --list --global user.name=tanghengbo user.email=2938857831@qq.com
添加删除配置
>git config --global --add user.name XXX >git config --global --unset user.name XXX
配置别名Alias
>git config --global alias.lg "log --color --graph --pretty=format:'%Cread%h%Creset-%C(yellow)%d%Creset%s%Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
使用方式
>git lg fatal: your current branch 'master' does not have any commits yet
创建Git仓库
Git init
把一个目录快速设置为Git的代码仓库。
>git init Initialized empty Git repository in D:/Test/Chapter_1/.git/
Git clone
clone一个远程仓库到本地
提交修改
add&&commit
通过git status查看添加新文件后,代码仓库的状态变化。
>git status On branch master Initial commit Untracked files: (use "git add <file>..." to include in what will be committed) .gradle/ .idea/ Chapter_1.iml app/ build.gradle build/ gradle/ nothing added to commit but untracked files present (use "git add" to track)
git add
>git add .idea warning: LF will be replaced by CRLF in .idea/compiler.xml. The file will have its original line endings in your working directory. warning: LF will be replaced by CRLF in .idea/gradle.xml. The file will have its original line endings in your working directory. The file will have its original line endings in your working directory. >git commit -m "add ./idea" [master (root-commit) 899bb2b] add ./idea 17 files changed, 2486 insertions(+) create mode 100644 .idea/compiler.xml
git log
git shortlog
>git log commit 899bb2bfc3fb8a6bf95d5285be74510ea81df6f2 (HEAD -> master) Author: tanghengbo <2938857831@qq.com> Date: Wed Aug 23 16:06:42 2017 +0800 add ./idea >git shortlog tanghengbo (1): add ./idea
追加修改
git commit --amend -m "add test2"
当开发者提交一个commit后,如果发现该commit出错,可以随时对这个commit进行修改,通过git commit --amend指令进行,而不用重新生成提交。
>git commit --amend -m "add test2" [master a5c01c5] add test2 Date: Wed Aug 23 16:06:42 2017 +0800 17 files changed, 2486 insertions(+) create mode 100644 .idea/compiler.xml create mode 100644 .idea/copyright/profiles_settings.xml create mode 100644 .idea/gradle.xml
查看仓库状态
发现当前代码和未修改之前代码的具体差异。通过此指令告诉开发者当前代码仓库中所有文件的版本追溯,当前那个文件进行了什么修改。
>git status On branch master Your branch is up-to-date with 'origin/master'. nothing to commit, working tree clean
通过git diff README,查看README的具体变化。
追溯版本历史
>git log commit afef964d07f6decc3bf32e7a5f544613cb295110 (HEAD -> master, origin/master, origin/HEAD) Author: tanghengbo <2938857831@qq.com> Date: Thu Aug 17 19:29:40 2017 +0800 First Commit commit 4ec585b6a8c2d80523104a9af73cd8731368bef0 Author: thp <tanghengbo@live.com> Date: Thu Aug 17 19:15:29 2017 +0800 Initial commit
git blame指令追溯一个指定文件的历史修改记录,显示信息如下:
>git blame app/build.gradle 52ad6c32 (tanghengbo 2017-08-17 19:29:40 +0800 1) apply plugin: 'com.android.application' 52ad6c32 (tanghengbo 2017-08-17 19:29:40 +0800 2) 52ad6c32 (tanghengbo 2017-08-17 19:29:40 +0800 3) android { 52ad6c32 (tanghengbo 2017-08-17 19:29:40 +0800 4) compileSdkVersion 26 52ad6c32 (tanghengbo 2017-08-17 19:29:40 +0800 5) buildToolsVersion "26.0.0" 52ad6c32 (tanghengbo 2017-08-17 19:29:40 +0800 6) defaultConfig { afef964d (tanghengbo 2017-08-23 09:23:58 +0800 7)
push到远程仓库
创建版本库 git init
git clone git@192.168.0.1:tanghengbo/SimpleAndroidTest.git
添加文件 git add .
提交文件 git commit -m "first commit
推送文件 git push -u origin master
关联远程仓库 git remote add origin xx.git
拉取服务器提交 git pull origin master
Git的核心思想
- 分布式
- 快照
- 状态区
- 分支
目标:
- 速度
- 简单的设计
- 对非线性开发模式的强力支持(允许上千个并行开发的分支)
- 完全分布式
- 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
分支管理 git branch 分支名
分支切换 git checkout 分支名
分支查看 git branch
分支合并 git merge 分支名
分支删除 git branch -d 分支名
git作为支持分布式版本管理的工具,它管理的库(repository)分为本地库、远程库。
git commit操作的是本地库,git push操作的是远程库。
git commit是将本地修改过的文件提交到本地库中。
git push是将本地库中的最新信息发送给远程库。
那有人就会问,为什么要分本地commit和服务器的push呢?
因为如果本地不commit的话,修改的纪录可能会丢失。
而有些修改当前是不需要同步至服务器的,所以什么时候同步过去由用户自己选择。什么时候需要同步再push到服务器
Git操作区域
工作区
暂存区(核心)保存在index的.git文件夹下,所有代码的提交记录。
历史区
git commit 将暂存区中的内容全部提交。
Git回退
checkout&&reset
git checkout 还原一个代码仓库的文件。会抛弃当前本地所有修改,恢复上次提交
的最后提交的版本。
用于版本库里的版本替换工作区的版本。
git reset 将文件移出暂存区。
Git文件操作
rm(清除)
remove
执行shell的rm指令进行删除。
同步协作(未完成)
git remote add指令将本地仓库添加到远程仓库中。
删除远程 git 仓库
$ git remote rm origin
创建分支
git checkout -b dev #创建分支
git branch 查看分支
git merge dev 合并分支
git branch --set-upstream-to=origin/master master 把push和pull的默认分支设置为master
设置代理
git config --global https.proxy http://127.0.0.1:1080
git config --global https.proxy https://127.0.0.1:1080
git config --global --unset http.proxy
git config --global --unset https.proxy