git的通用操作流程如下图(来源于网络)
四个关键点:
工作区: 当前电脑的中项目空间。
暂存区(Index/Stage):在使用git管理项目文件的时候,其本地的项目文件会多出一个.git的文件夹,将这个.git文件夹称之为版本库。其中.git文件夹中包含了两个部分,一个是暂存区(Index或者Stage),顾名思义就是暂时存放文件的地方,通常使用add命令将工作区的文件添加到暂存区里;
本地仓库:.git文件夹里还包括git自动创建的master分支,并且将HEAD指针指向master分支。使用commit命令可以将暂存区中的文件添加到本地仓库中;
远程仓库: 远程代码管理区,将本地代码提交到远程仓库,方便管理和整合代码。本地可以通过clone 进行代码下载。
下面是初始化常用的一些操作:
$ git init -初始化仓库。
git init --bare /home/git/git-temp.git 服务器端生成远程仓库命令
$ git add . -添加文件到暂存区。
$ git commit -将暂存区内容添加到仓库中。
$ git clone -拷贝一份远程仓库,也就是下载一个项目。
代码修改提交与修改
Git 的工作就是创建和保存你的项目的快照及与之后的快照进行对比。
下表列出了有关创建与提交你的项目的快照的命令:
git add 添加文件到仓库
git add . 将本地修改或者新增添加到本地缓存中
git add [file]添加指定文件到本地缓存
git status 查看仓库当前的状态,显示有变更的文件。
git status -s 缩略显示状态
git diff 比较文件的不同,即暂存区和工作区的差异。
git diff 尚未缓存的改动:
git diff --cached 查看已缓存的改动:
git diff HEAD 查看已缓存的与未缓存的所有改动:
git diff --stat 显示摘要而非整个 diff
git commit 提交暂存区到本地仓库。
git commit -m [message] 将缓冲区代码提交到本地仓库,加上备注message
git commit -am [message] 将代码提交到远程仓库,加上备注message
git commit [file1] [file2] ... -m [message] 指定文件提交到本地仓库
git commit -a 代码修改后直接提交到本地仓库(无需git add操作)
git reset 回退版本。(git reset [--soft | --mixed | --hard] [HEAD])
git reset HEAD 取消已缓存的内容。
git reset HEAD^ 回退所有内容到上一个版本
git reset HEAD^ hello.php 回退 hello.php 文件的版本到上一个版本
git reset 052e 回退到指定版本
git reset –hard HEAD~3 回退上上上一个版本
git reset –hard bae128 回退到某个版本回退点之前的所有信息。
git reset --hard origin/master 将本地的状态回退到和远程的一样
git rm 删除工作区文件。
git rm test.txt 从暂存区和工作区中删除文件
git rm -f test.txt 强行从暂存区和工作区中删除修改后文件
git rm --cached test.txt 从暂存区中删除文件
git rm –r * 递归删除整个目录中的所有子目录和文件
git mv 移动或重命名工作区文件。
git mv README README.md 移动或重命名一个文件、目录或软连接。
git checkout -b创建分支
创建并切换到新分支
git checkout -b panda
git branch panda 创建新分支
git branch -a 可以看到已经在panda分支上
删除分支,先切换到主分支上在删除其他分支
git branch -D panda
远程分支就是本地分支push到服务器上。比如master就是一个最典型的远程分支(默认)。
git push origin panda
远程分支和本地分支需要区分好,所以,在从服务器上拉取特定分支的时候,需要指定远程分支的名字。
git checkout --track origin/panda
注意该命令由于带有--track参数,所以要求git1.6.4以上!这样git会自动切换到分支。
提交分支数据到远程服务器
git push origin <local_branch_name>:<remote_branch_name>
例如:
git push origin panda:panda
一般当前如果不在该分支时,使用这种方式提交。如果当前在 2.0.1.20120806 分支下,也可以直接提交
git push
删除远程分支
git push origin :develop
git创建tag
git tag <name>就可以打一个新标签
加上-a参数来创建一个带备注的tag,备注信息由-m指定。如果你未传入-m则创建过程系统会自动为你打开编辑器让你填写备注信息。
git tag -a tagName -m "my tag"
列表显示所有的tag
git tag
给指定的某个commit号加tag
git tag -a v1.2 9fceb02 -m "my tag"
将tag同步到远程服务器
git push origin v1.0
推送所有:
git push origin --tags
提交日志
git log 查看历史提交记录
git log --oneline 查看历史记录的简洁的版本。
git log --graph 开启了拓扑图
git log --reverse --oneline 逆向显示所有日志
git log --author=fish --oneline -5 指定用户的提交日志可以使用命令 5条
git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges 三周前且在四月十八日之后的所有提交, --no-merges 选项以隐藏合并提交
git blame <file> 以列表形式查看指定文件的历史修改记录
git blame test 查看指定文件的修改记录
远程操作
git remote 远程仓库操作
git remote -v
git clone url 克隆地址
origin 为远程地址的别名。
git remote show url 显示远程仓库信息
git remote add [shortname] [url]
git remote add origin 仓库地址 添加仓库 地址
git push -u origin master 将内容提交到远程仓库
git remote rm name 删除远程仓库
git remote rename old_name new_name 修改仓库名
git fetch 从远程获取代码库
git fetch [alias]
git merge 远端仓库提取数据并尝试合并到当前分支
git merge [alias]/[branch]
git pull 下载远程代码并合并(git pull <远程主机名> <远程分支名>:<本地分支名>)
git pull origin
git pull origin master:brantest 远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并。
git push 上传远程代码并合并
git push origin master=git push origin master:master 将本地的 master 分支推送到 origin 主机的 master 分支
git push --force origin master 本地版本与远程版本有差异,但又要强制推送可以使用 --force 参数
git push origin --delete master 删除 origin 主机的 master 分支
设置提交用户信息
$ git config --global user.name 'fish'
$ git config --global user.email fish@*.com
Git完全复制一个Repository到新Repository
git clone [old repository url]
进入到旧仓库目录,通过mirror参数推送到新的Repository
cd [old repository]
git push --mirror [new repository url]
推荐其他更详细解释:git常用操作指南
评论区