Git是一个版本管理工具,它的作用是:
1、一般用来管理代码,也支持管理纯文本文件,如txt、word等。
2、可以在同一个目录中保存N个版本,想切换到哪个版本都可以。
3、可以方便地查看以前的修改记录,了解每个版本具体修改了哪些内容。
4、方便日常的编辑工作,查看当前修改了哪些文件、具体修改了哪些内容。
5、允许建立多个分支,可以根据不同需求在某个版本的基础上建立新的分支。
6、支持多人协作,允许多个人共同维护一个代码工程。
本文内容的思维导图:
一、如何建立一个本地git仓库
a、用下面这几个命令可以新建一个本地git仓库:
git init
git add
git status
git commit
b、下面是在windows系统的Git Bash中操作举例:
c、Windows版本git的下载地址:
二、如何克隆一个远程仓库和检出远程分支
a、克隆局域网中的一个远程仓库,并且检出远程分支:
命令是: git clone远程仓库地址
git checkout -b 远程分支名 origin/远程分支名
b、新建一个本地分支,并且推送到远程仓库
c、如何在局域网中建立一个git远程仓库:
1、用一台电脑作为代码服务器,进入代码工程目录中,建一个本地git仓库,提交一个初始版本(默认只有master分支)。
2、把代码工程目录设置为共享,根据需要是否设置访问的账号密码。
3、假如是linux系统,需要安装配置ssh和samba,这样别人才能访问你的共享。
三、工作中用得比较多的命令(下面有具体说明):
git status #查看当前工作区域的状态
git log #查看提交记录(或者说查看提交了哪些版本)
git diff #查看具体修改了哪些内容
git add #将已经修改的文件添加到暂存区
git commit #将已添加到暂存区的文件提交到本地git仓库
git branch #查看、新建、删除分支
git checkout #切换分支或者还原文件
git pull #将远程的代码拉到本地
git push #将本地的提交推送到远程仓库
git reset #回退版本(切换版本)或者还原某个文件
git init #新建git仓库
git clone #克隆一个git仓库,把远程代码仓库复制到当前目录
git config #查看或修改git配置
git show #查看某个提交具体修改了哪些内容
git whatchanged #查看某个提交具体修改了哪些文件
git cherry-pick #将其它分支的某个提交合并到当前分支
git reflog #查看所有版本切换(改变git指针)的历史操作记录
具体介绍:
1、git clone
克隆远程服务器上的git仓库到自己的电脑中,或者复制一个本地电脑中的git仓库到当前目录。
克隆局域网中远程服务器的git仓库例子:
Linux: git clone ubuntu@192.168.1.100:/home/android/code/test
windows: git clone //192.168.1.100/code/test
克隆同一台电脑中其它目录的git仓库例子:
git clone /home/android/code/test
2、git init
这个命令用来新建一个本地的git仓库,假如自己有一份代码工程,想用git来管理,可以用这个命令来新建git仓库。
执行git init之后,在当前目录会生成一个.git目录(这是个隐藏目录),里面包含git仓库和暂存区。使用git clone获
取的代码已经包含git仓库不需要再执行git init。
3、git config
电脑中新安装git工具之后,想要继续使用git功能,一般会提示设置用户名和邮箱,或者你想修改也是用下面的命令。
git config --global user.name "yourname"
git config --global user.email yourname@example.com
查看当前的git配置:
git config --list
4、git status
这个命令用来查看本地工作区和暂存区的状态,例如有哪些文件是被修改过、哪些文件是新增加的、哪些文件已经添加到暂存
区等。简单的理解,工作区就是当前代码工程中除.git以外的所有目录;暂存区就是执行git add之后那些文件所处的临时区域。
5、git log
a、命令后面不跟任何参数,表示查看当前分支的所有提交记录信息,包括commit ID、用户名、邮箱地址、提交时间、提交描述。
b、查看最新的N个提交记录,例如查看最后的3个提交记录。
git log -3
c、假如git log后面跟着路径,则只是查看这个目录或者文件的提交记录信息。
d、简洁地查看以前所有的提交记录,每行只包含commit ID和提交记录说明。
git log --oneline
e、只查看某个人的提交记录
git log --oneline --author=name
6、git branch
举个例子说明分支的作用,假设某个项目有多个客户,个别客户有些特殊的定制,这个时候就可以在主分支基础上新建特殊
分支。或者有时候你想尝试修改验证某个复杂的功能,这时可以新建临时分支,验证OK后再把提交合入主分支。
a、命令后面不加参数表示查看本地所有的分支和当前是哪条分支(前面带*号的就是当前分支)。
b、查看所有的本地分支和远程分支。
git branch -a
c、命令后面跟着普通字符串,表示在当前版本的基础上新建一个分支。
git branch 新分支名称
d、删除一个本地分支。
git branch -D 分支名
7、git checkout
a、后面跟分支名,表示切换分支。先用git branch查看本地有哪些分支,然后再用git checkout切换到其它分支。
git checkout TEST-DEV
b、后面跟文件名或者目录,表示把这个文件或者目录的修改还原,有时候某个文件被删除了,可以用这个命令还原回来。
c、检出一个远程的分支到本地。先用git branch –a查看有哪些远程分支,然后再用git checkout –b命令。
git checkout -b 远程分支名 origin/远程分支名
git checkout -b TEST-DEV origin/TEST-DEV
8、git diff
a、用来查看工作区中具体修改了哪些内容,有时候命令后面跟着目录或文件名,表示只查看这个目录或者文件修改了哪些内容。
git diff kernel-3.18/
b、对于已经添加到暂存区里面的文件,直接执行git diff不起作用,要在命令后面加--cached。
git diff --cached
c、查看两个提交记录之间的差异
git diff 3886f6a 9fd0f09
9、git add
a、命令后面跟着路径,表示把这个路径中修改的内容添加到暂存区。执行git status命令后,Changes to be committed: 下面的
那些文件就是处于暂存区。
git add kernel-3.18/
b、有时候目录里面有一些特殊的文件(如隐藏文件),如果git add添加不成功,可以增加-A参数。或者有时候删除了某个文件,
需要 git add –A 这个文件所在的目录,才能把这个删除操作添加到暂存区。
git add -A kernel-3.18/
10、git commit
a、把暂存区里面的内容(也就是已经git add的内容)提交到本地git仓库中,一般提交之前git status检查一下。
git commit -m “提交信息说明”
b、修改最后一次提交的提交信息说明
git commit --amend –m “新的提交信息说明”
11、git pull
把远程分支的代码拉下来,使当前分支的代码同步到最新。建议修改代码或commit提交之前,多执行这个命令。有时候会有
冲突,自己根据情况修改好。
12、git push
把本地已经commi的提交记录推送到远程仓库,新建远程分支也是用到这个命令。
git push origin 远程分支名
13、git reset
a、命令后面直接跟着某个提交ID,表示还原到以前的某个版本,这两个版本间的差异会还原到工作区中,可以git status看一下。
git reset 949e8f43
b、干净地还原到以前的某个提交(注意:当前工作区和暂存区的临时修改内容都会被清除掉),命令后面跟着 --hard,执行
git status后查看,工作区是干净的。
git reset --hard 949e8f434
c、把暂存区的某个文件还原到工作区,临时修改的内容还在。可以git status 和git diff查看一下。
git reset 暂存区的某个文件名
14、git show
a、查看某个提交具体改了哪些内容
git show 提交ID
b、查看某个提交的某个文件具体改了哪些内容
git show 提交ID 文件的路径
15、git whatchanged
查看某个提交修改了哪些文件
git whatchanged 提交ID -1
16、git cherry-pick
把其它分支的某个提交合并到当前分支
git cherry-pick 提交ID
17、git reflog
使用这个命令可以查看所有涉及到版本切换(改变git指针)的历史操作记录,有时候执行git reset --hard命令后反悔了,
但是git log中找不到上一个最新版本的commit ID,这时可以在git reflog中找到。
四、其它的一些git用法:
1、把单个文件回退旧的到某个版本
2、生成patch和使用patch简单说明
3、删除远程分支、清理本地无效的远程追踪分支
4、设置git diff时显示的tab缩进为4个空格长度
5、忽略特殊文件或目录
1、把单个文件回退到旧的某个版本
git reset 提交的ID 文件名
git checkout 该文件名
git reset 该文件名
2、生成patch和使用patch简单说明
a、先查看提交记录,使用git format-patch命令生成patch。
命令格式是: git format-patch 旧一点的提交..新一点的提交
b、进入需要打patch的代码工程,git am该补丁文件(下面是在另外一个分支演示合入操作),假如使用git apply命令
则只合入修改内容但不提交。
3、删除远程分支、清理本地无效的远程追踪分支
删除远程分支:
git push origin –delete 分支名 或者 git push origin :分支名
如果在远程仓库中删除了某一分支,而git branch -a 后在remotes/origin位置还能看到,那么删除本地的远程追踪分支命令是:
git remote prune origin
4、设置git diff时显示的tab缩进为4个空格长度
git config --global core.pager 'less -x1,5'
5、忽略特殊文件或目录
有时候一些编译出来的临时文件或者某些特殊文件,不想让git追踪它或者说让执行git命令时忽略它们,处理方法是在工作区
新建.gitignore文件,然后打开.gitignore文件输入需要忽略的目录或者文件类型,例如忽略out目录和下面两种后缀的文件。
记得把这个.gitignore文件也提交。
out
*.tmp
*.log