标签:init use 删除 不能 rename ref 追踪 报错 div
配置相关的命令都使用git config
开始。详细请参看git config --help
.常用到的git配置命令如下:
git config -l
或git config --list
git 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 remote
git remote -v
:显示更详细的信息。包括URLgit remote show <remote_name>
:查看某个远程仓库详细信息。包括跟踪的分支信息。git remote add <name> <url>
:name表示为远程仓库分配的名称,url为远程仓库的地址。git remote rename <oldname> <newname>
:git remote remove name
git使用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 --staged
git 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 master
git 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-101
git merge --abort
:终止合并
合并流程:以A分支向B分支合并为例。
git checkout B
.git merge A
git 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 init
git submodule update
git clone --recurse-submodules myproject_url.git
git 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