侧边栏壁纸
博主头像
成云博主等级

行动起来,活在当下

  • 累计撰写 40 篇文章
  • 累计创建 25 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录
git

git概念和常规操作

佳航
2020-09-23 / 0 评论 / 0 点赞 / 728 阅读 / 5865 字

git的通用操作流程如下图(来源于网络)

gitcommand.jpg

四个关键点:

工作区: 当前电脑的中项目空间。

暂存区(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常用操作指南

0
git

评论区