标签:init use 删除 不能 rename ref 追踪 报错 div
配置相关的命令都使用git config开始。详细请参看git config --help.常用到的git配置命令如下:
git config -l或git config --listgit config -e --global:此命令会调出配置文件。git config --global user.name "user name"git config --global user.email "xxx@nnn.com"git config user.name "user name"git config user.email "xxx@nnn.com"git config --global core.editor "path/\notepad++.exe -multiInst -notabbar -n"远程相关的命令都使用git remote开始。详细请参看git remote --help.常用到的远程命令如下:
当我们使用git clone克隆远程仓库时,git会自动创建一个远程仓库名origin.与远程仓库的URL连接。自动把本地的master分支和远程的master分支对应起来了。
git remotegit remote -v:显示更详细的信息。包括URLgit remote show <remote_name>:查看某个远程仓库详细信息。包括跟踪的分支信息。git remote add <name> <url>:name表示为远程仓库分配的名称,url为远程仓库的地址。git remote rename <oldname> <newname>:git remote remove namegit使用git clone命令进行仓库的克隆。常用命令参数如下:
-o name:使用指定的name代替origin名。-b branch_name:克隆指定的分支。--single-branch:只克隆指定分支。配合-b选项使用--depth=n:克隆的深度,克隆最近n次的commit.常用clone例程:
git clone git@git.n.xxx.git:克隆远程仓库所有内容。git clone git@git.n.xxx.git newname:克隆远程仓库所有内容并指定新名称。git branch:查看所有本地分支.当前分支前面会标一个*。常用参数如下:-a:查看所有的分支,包括远程分支-v:查看分支指向的commit-vv:查看本地分支与远程分支的匹配关系--merged:查看合并的分支--no-merged:查看没有合并的分支git branch <branch name>:在当前提交上创建一个分支git branch <branch name> <base_name>:基于指定的某个commit或者分支创建分支。base_name为commit号或分支名。git checkout <branch name>git checkout -b <branch name>:创建并切换(当分支已经存在时切换不了)git checkout -b dev origin/dev:创建本地的dev分支并与远程的origin/dev分支连接。git branch -d <branch name>:删除指定分支.-D为强制删除git branch --set-upstream-to=origin/<branch> dev--set-upstream-to与-u同义。git status:查看详细状态,有下面一些描述状态。git add命令)git status -s,git status -short??:未跟踪a :未跟踪文件使用git add命令添加到暂存区时标记此状态。M :修改。即对文件进行了修改,但未使用git add命令添加到暂存区。MM:同时处于修改阶段和暂存阶段。即已经使用git add命令添加到暂存区,然后又进行了修改。git add filename。filename 可以是.,代表所有文件。也可以是表达式如*.c,代表所有的c文件。git commit,常用选项如下:-m "message".message为提交时的说明信息。可以使用"message. Ref #xxx"格式绑定issue。-v:提交时可以查看详细的修改信息。-a:自动将工作区中的内容添加到暂存区,然后提交。-s:提交时添加提交者信息。--amend:修改本地某次的提交信息.git diff命令用于比较文件之间的不同。常见选项如下
git diff:比较工作区与暂存区的各个文件区别git diff --stagedgit diff [commit1]...[commit2]git log用于查看提交日志
git log:列出所有历史记录,最近的排在最上方.q退出。-p:(patch)列出每个commit不同的详细信息。-n:显示前n条.-stat:查看概要--no-merges:防止显示合并提交--since:指定查看时间。如两天前的提交历史git log --since=2.days--author:指定作者。如指定作者为"BeginMan"的所有提交git log --author=BeginMan--grep:指定关键字。如指定关键字为“init”的所有提交git log --grep=init--committer:指定提交者。如指定提交者为"Jack"的所有提交git log --committer=Jack--pretty:指定显示格式。如每个提交信息显示一行。git log --pretty=oneline-S:通过查询文件的变更内容来检索出指定提交日志.如git log -S xxx。git log [-option] filename:查看指定文件的log日志。filename也可以是分支名。如果分支名与文件名相同,系统会提示错误,可通过–选项来指定给定的参数是分支名还是文件名git log --oneline --decorate:查看分支与commit的关系git reset用于回退相关操作。reset的三种方式:
介绍详见:https://www.jianshu.com/p/c2ec5f06cf1a
git reset --hard HEAD^:将工作区,暂存区、仓库全都恢复到上一个版本。主要用于放弃本地所有的修改。
git reset --soft HEAD^:只将仓库恢复到上一个版本,工作区和暂存区的内容不变。这个功能主要用来合并多个commit.
git reset --mixed HEAD^:(reset的默认方式)。将仓库和暂存区恢复到上一个版本,工作区内容不变。
git reset HEAD^:回退所有内容到上一个版本
git reset HEAD^ a.py:回退a.py这个文件的版本到上一个版本
git reset –soft HEAD~3:向前回退到第3个版本
git reset –hard origin/master:将本地的状态回退到和远程的一样
git reset 057dcc:回退到某个版本
git revert HEAD:回退到上一次提交的状态,按照某一次的commit完全反向的进行一次commit
git reset HEAD CONTRIBUTING.md:将缓冲区的内容撤回到工作区
git checkout -- filename:撤销工作区中被修改的内容.用于文件还没有执行git add之前的修改。
向远程分支推送.git push <远程仓库名> <本地分支名>:<远程分支名>:这里的:前后是必须没有空格的。
git push origin master.git push origin :master.它等同于git push origin --delete master-u remote_name:如果当前分支与多个主机存在追踪关系,则可以使用 -u 参数指定一个默认主机,这样后面就可以不加任何参数使用git push.--force:强制推送。--force-with-lease:没有人在上游更新分支内容,时才可以强制推送。--all:不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机.--delete:用于删除某个远程分支。如git push origin --delete <branch_name>。从远程分支拉取
git fetch <remote> <branch>:将远程仓库拉取到本地。如git fetch origin mastergit pull <remote> <branch>:从远程获取最新版本并merge到本地。如git pull origin master使用--force或--force-with-lease强制向master分支推送时可能依然会报错(You are not allowed to force push code to a protected branch on this project.)这是由于gitlab等服务器设置了主分支保护造成的。可以在"Settings" -> “Repository” -> scroll down to “Protected branches”.取消。
如果使用http url推送,每次提交时都会要求输入用户名和密码,为了方便,可以使用git config --global credential.helper cache来缓存。
git merge --no-ff -m "merged bug fix 101" issue-101git merge --abort:终止合并
合并流程:以A分支向B分支合并为例。
git checkout B.git merge Agit log查看合并结果变基使得提交历史更加整洁。你在查看一个经过变基的分支的历史记录时会发现,尽管实际的开发工作是并行的,但它们看上去就像是先后串行的一样,提交历史是一条直线没有分叉。
git rebase master:将当前分支变基到maser分支上
git rebase -i HEAD~3
git help <cmd>:获取命令的详细帮助git add -h:获取add命令的简单帮助git rm filename:删除某个文件。filename可以是表达式。如
//*前必须要有git rm log/\*.log
git rm --cached filename将某个文件从暂存区踢出。使其不受版本管理,这个文件仍然存在于工作区。git mv file_from file_to:移动文件git stash:把当前工作现场“储藏”起来,等以后恢复现场后继续工作.git stash pop:恢复的同时把stash内容也删了.git stash list子模块简单的说就是项目需要包含并使用另一个项目。子模块允许你将一个git仓库作为另一个git仓库的子目录。它能让你将另一个仓库克隆到自己的项目中,同时还保持提交的独立。
将一个已存在的git仓库添加为正在工作的仓库的子模块:
git submodule add myproject_url.git.gitmodules的文件,保存着模块的相关信息。克隆含有子模块的仓库:
git submodule initgit submodule updategit clone --recurse-submodules myproject_url.gitgit tag:查看所有标签(默认为按字母顺序排序)
git tag -l "v1.8.5*":查看感兴趣的分支
git tag -a v1.4 -m "my version 1.4":创建标签
-a:表示带注释的标签
git支持两种类型的tag:
git push origin --tags:推送标签到remotegit checkout tag:检出标签git checkout -b version2 v2.0.0:基于某个标签创建分支!修饰git config --global alias.visual ‘!gitk‘每个仓库都有一个.git的文件,用来管理仓库。
config文件:存储仓库的配置信息,里面包含了仓库的远程地址,分支等信息。
.gitignore文件可以有多个,每个此文件只负责它一个它的子目录。
支持正则表达式
[abc]:匹配括号中的任何字符。如a,b,c.
?:匹配单个任意字符
*:跨多个路径
**:匹配多个任意字符
[0~9]:匹配一个范围
!:不包括某个文件
eg:
*.a
!lib.a
/TODO
build/
doc/*.txt
doc/**/*.pdf
标签:init use 删除 不能 rename ref 追踪 报错 div
原文地址:https://www.cnblogs.com/liqiangwei/p/14304844.html