git 命令集

来源:互联网 发布:splice视频编辑软件 编辑:程序博客网 时间:2024/04/30 13:17

git 命令集

分类: Linux 314人阅读 评论(0)收藏举报
 

git 命令集

 

-------------------------------------------------------------------------------

配置

-------------------------------------------------------------------------------

git config --global user.name "Karl Ma" 配置用户名

git config --global user.email karlcpp@gmail.com 配置用户mail

git config --global core.editor emacs 配置编辑器

git config --global merge.tool vimdiff  配置差异分析工具

git config --list 显示配置项

git config user.name 显示特定的配置项

以下是设置命令的别名

git config --global alias.co checkout

git config --global alias.br branch

git config --global alias.ci commit

git config --global alias.st status

 

-------------------------------------------------------------------------------

帮助

-------------------------------------------------------------------------------

git help

git help tag

git tag --help

 

-------------------------------------------------------------------------------

基本命令

-------------------------------------------------------------------------------

git init 要对现有的某个项目开始用 Git 管理,需到此项目所在的目录执行此命令

git init --bare --shared 在一个空目录下执行可以创建一个纯仓库, --shared 选项,Git 会自动对该仓库加入可写的组

git add *.c   跟踪新文件,将*.c的文件们增加到暂存区

gti commit 将暂存区的文件提交,会启动编辑工具

git commit -m 'some' 将暂存区的文件提交

git commit -a -m 'some' 自动把所有已经跟踪过的文件暂存起来一并提交,跳过git add步骤,没有跟踪的文件不会提交,也不增加

git commit --amend 重新提交,与上一次提交合并成一次提交

git clone git://github.com/schacon/grit.git 从远程服务器上clone一份,ssh协议的格式为user@server:/path.git

git clone git://github.com/schacon/grit.git mygrit 从远程服务器上clone一份到本地的mygrit目录

git clone file:///d:/myproject/test.git 本地协议clone

git clone /d/myprojects/test.git 本地协议lcone

git clone ssh://user@host:project.git 使用ssh协议

git clone user@host:project.git 同上,省略写法

git clone --bare my_project my_project.git 把一个仓库克隆为纯仓库

git status 检查当前文件状态

git add <file> 暂存已修改文件

git rm <file> 移除跟踪的文件,同时删除本地文件

git rm -f <file> 如果文件已经修改过并放到了暂存区,需要强制移除

git rm --cached <file> 不删除本地文件,只从跟踪清单中移除

git rm /*~  移除所有以~结尾的文件,从当前目前递归执行。/表示需要git来解释*而不是用shell来解释*,如果用shell来解决*的话,就不会有递归啦

git mv file_from file_to 移动文件,这里相当于改名,相当于执行了三条命令:(不论用哪种方式,git都会知道是改名啦)

$ mv README.txt README

$ git rm README.txt

$ git add README

git log 查看提交历史日志

git log -p 显示每次提交的差异

git log -p -2 只显示最近两次的提交日志,当然显示其差异

git log --stat 仅显示简要的增改行数统计

git log --pretty=oneline 每一个日志只显示在一行

git log --pretty=format:"%h - %an, %ar : %s" 以特定的格式显示

git log --graph 显示树形图

 

在项目目录下编辑.gitignore文件,忽略文件的模式

# 此为注释 – 将被 Git 忽略

*.a       # 忽略所有 .a 结尾的文件

!lib.a    # 但 lib.a 除外

/TODO     # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO

build/    # 忽略 build/ 目录下的所有文件

doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

 

git diff 比较工作目录中的文件与暂存区的文件的差异

git diff --cached 已经暂存起来的文件和上次提交时的快照之间的差异

git diff --staged 效果同上,1.6.1以上的git支持

 

gitk GUI界面

git reset HEAD benchmarks.rb 取消先前放到暂存区中的文件

git checkout -- benchmarks.rb 取消工作目录中文件的修改,恢复到修改前的版本

 

git remote 查看当前的远程库

git remote -v 查看当前的远程库,并显示对应的clone地址

git remote add pb git://github.com/paulboone/ticgit.git 添加一个远程库

git fetch pb 从远程仓库pb中抓取数据

git pull 从原始克隆的远端仓库中抓取数据后,合并到工作目录中当前分支

git push origin master 推送数据到远程仓库origin的master分支

git remote show origin 显示远程仓库origin的信息

git remote rename pb paul 将远程仓库pb重命名为paul

git remote rm paul 删除远程仓库paul

 

git tag 列显已有的标签

git tag -l 'v1.4.2.*' 列显以v1.4.2.开头标签

git tag -a v1.4 -m 'my version 1.4' 创建一个含附注类型的标签

git show v1.4 查看相应标签的版本信息,并连同显示打标签时的提交对象

git tag -s v1.5 -m 'my signed 1.5 tag' 签署标签

git tag -v v1.4.2.1 验证签署的标签

git tag v1.4-lw 轻量级标签

git tag -a v1.2 9fceb02 将校验和以9fceb02的一次提交打上v1.2的标签,需要先用git log --pretty=oneline命令看一下每次提交的校验和

git push origin v1.5 将v1.5的标签推送到远程仓库origin

git push origin --tags 将所有标签推送到远程仓库origin

 

-------------------------------------------------------------------------------

分支与合并

-------------------------------------------------------------------------------

git branch testing  创建一个testing分支

git checkout testing 将工作目录转换到testing分支上

git checkout -b testing 相当于上两条命令一起执行

 

git merge hotfix 将当前所在的分支(如master)合并到hotfix分支上,合并后hotfix和master会指向同一个快照

git branch -d hotfix  删除hotfix分支

git branch -D hotfix  强制删除hotfix分支,如果hotfix分支没有与当前分支合并过,用-d删除会返回错误,可以用-D强制删除

 

git status 可以查看哪些合并合并时发生了突出

 

git mergetool 调用一个可视化的合并工具,//在我的机器上会调用TortoiseMerge,我安装了TortoiseSVN

 

git add <file> 将修改完的(解决冲突的文件放到暂存区)

git commit -a -m 'some gugu' 直接将修改后的(解决了冲突的文件提交)

 

git branch 显示所有的分支,显示时前面有*那个分支为工作目录所在的分支

git branch -v 显示分支的同时,显示分支的最后一次信息

 

git branch --merged 查看哪些分支已被并入当前分支,删除这些分支(非当前分支不会损失什么)

git branch --no-merged 查看哪些分支没有并入当前分支,删除这些分支会损失

 

git push origin serverfix 取出我的 serverfix 本地分支,推送它来更新远程仓库origin的 serverfix 分支

git push origin myserverfix:serverfix 取出我的myserverfix 本地分支,推送它来更新远程仓库origin的 serverfix 分支

 

git merge origin/serverfix 如果要把origin仓库的serverfix内容合并到当前分支

 

git checkout -b serverfix origin/serverfix  从origin仓库的serverfix分支创建一个本地的serverfix分支

git checkout --track origin/serverfix 结果同上一条一样,1.6.2版本以上的git支持

 

git push [远程名] :[分支名] 删除一个远程分支

git push origin :serverfix 删除远程分支serverfix

 

git rebase master 将当前分支衍合到master分支

git rebase --onto master server client 相当于检出 client 分支,找出 client 分支和 server 分支的共同祖先之后的变化,然后把它们在 master 上重演一遍

git rebase master server 当前分支在master,这个命令相当于先转到server分支,再执行git rebase master

原创粉丝点击