机器人 救救瓜
Toggle navigation
Home
SCM-tool
Linux
Jenkins
SVN
other
About Me
Archives
Tags
git 常用操作
? gitlab ?
2019-01-11 16:21:47
630
0
0
gua_l
? gitlab ?
git 常用操作 ----- > 参考 https://git-scm.com/book/zh/v2 --------- #### **配置 git config** ##### 配置credential.helper 每次与git做通讯时,需要输入用户密码,记住密码的方式如下: ```shell git config --global credential.helper store ``` ##### 此时查看配置 ```shell git config --list ##可见一行credential.helper=store ##表示认证信息将会存储 ``` 任何命令与服务器通讯时首次要求输入用户密码 Username for 'http://xxxx.haha-systems.com': user1 Password for 'http://user1@gitlab.xxxx-systems.com':xxxx 前面配置了认证存储,于是在$HOME 目录下会有一个.git-credentials文件存储着认证信息,下次无需输入。 cat .git-credentials http://luser1:xxxx@gitlab.xxxx-systems.com 首次进行提交时,需要配置个人的用户名称和电子邮件地址。这两条配置很重要,每次 Git提交时都会引用这两条信息,说明是谁提交了更新,所以会随更新内容一起被永久纳入历史记录: ``` $ git config --global user.name "John Doe" $ git config --global user.email johndoe@example.com ``` 如果没有设置,则会报如下的错 ``` [relmgr@huangbei Jenkins_Config]$ git commit -m "modify the config of jenkins QA build job" *** Please tell me who you are. Run git config --global user.email "you@example.com" git config --global user.name "Your Name" to set your account's default identity. Omit --global to set the identity only in this repository. fatal: empty ident name (for <relmgr@huangbei.(none)>) not allowed ``` ------- #### **删除 git rm** ##### 已物理删除的状态 ```shell git status #可以看到物理删除的文件状态为delete ,此时还需要git rm 使其加入暂存区,commit 时才能删除。 ``` ##### 暂存删除单个文件 ```shell git rm #单个文件 ``` ##### 暂存删除多个文件 ```shell git add -A # -A : include modify+add+delete # -u : include modify+add,no delete ``` <br /> ------- #### **分支 git branch** ##### 创建分支 ``` git branch <test1> ``` ##### 切换分支 ``` git checkout <test1> ``` ##### 创建并切换到新分支 ``` git checkout -b <test1> ``` ##### 查看分支列表 ``` git branch git branch -r git branch -a # -r 表示远程分支,-a表示所有本地和远程分支,不加选项显示本地分支列表 ``` ##### 删除远程分支 ``` git push origin --delete serverfix ``` ##### 查看本地分支和追踪情况 ``` #可以查看到哪些在远程仓库已经被删除,不再追踪 git remote show origin ``` ##### 本地分支同步到远程 ``` # “:" 号左边表示本地分支。 ":" 号左边表示远程 #提交本地test分支作为远程的master分支 git push origin test:master #提交本地test分支作为远程的test分支 git push origin test:test #刚提交到远程的test将被删除,本地还会保存的 ,即是把一个空内容推到远程 git push origin :test ``` ##### 同步远程删除的分支 ``` #使用以下命令可以将上面show出来的删除同步到本地记忆,本地-r 显示远程分支时不再显示过时信息 git remote prune origin ``` ##### 删除本地多余分支 ``` git branch -D <branch1> ``` ##### 分支比较 ```shell git log branch1 ^branch2 #显示branch1 上有,branch2 上没有的提交,^表示没有 #常用于查看分支比主干多提交的内容 git log vbng ^master ##可查看vbng从master 拉出分支之后,往分支上提交的内容 git log branch1..branch2 #显示branch2 比 branch1 多的内容,.. 两个点后面跟着的分支上仅有的内容 git log master..vbng ##等同于git log vbng ^master git log master ^origin/master #查看本地已commit 但未push 到远程的内容 ``` <br /> --------- #### **日志 git log** ##### 不加选项 ``` git log #默认不用任何参数的话,git log 会按提交时间列出所有的更新,最近的更新排在最上面。每次更新都有一个 SHA-1 校验和、作者的名字和电子邮件地址、提交时间,最后缩进一个段落显示提交说明。 ``` ##### -p 选项 ``` git log -p -2 # -p 选项展开显示每次提交的内容差异,该选项除了显示基本信息之外,还在附带了每次 commit 的变化。当进行代码审查,或者快速浏览某个搭档提交的 commit 的变化的时候,这个参数就非常有用了。 ``` ##### -< n > 选项 ``` git log -<n> # 其中的 n 可以是任何自然数,表示仅显示最近的若干条提交。-2 则仅显示最近的两次更新,经常与-p 结合使用 ``` ##### --stat选项 ``` git log --stat # --stat,仅显示简要的增改行数统计 ``` ##### --pretty=oneline ``` git log --pretty=oneline #使一条commit 显示为一行 one line . #--pretty= 还有 short,full ,format等 可以用,显示为不同的格式内容,具体参照git log --help ``` ##### --pretty=format ``` git log --pretty=format:<format> #git log --pretty=format:"%h - %an, %ar : %s" #自定义输出格式,如下表,经常与-n 结合使用:按格式打印最新n条提交的内容 ``` *format 常用的格式占位符写法及其代表的意义* |选项 | 说明 | |:-----|:------- | |%H |提交对象(commit)的完整哈希字串 | |%h |提交对象的简短哈希字串 | |%T |树对象(tree)的完整哈希字串 | |%t |树对象的简短哈希字串 | |%P |父对象(parent)的完整哈希字串 | |%p |父对象的简短哈希字串 | |%an |作者(author)的名字 | |%ae |作者的电子邮件地址 | |%ad |作者修订日期(可以用 -date= 选项定制格式)| |%ar |作者修订日期,按多久以前的方式显示 | |%cn |提交者(committer)的名字 | |%ce |提交者的电子邮件地址 | |%cd |提交日期 | |%cr |提交日期,按多久以前的方式显示 | |%s |提交说明 | ##### --graph ``` git log --pretty=format:"%h %s" --graph #oneline 或 format 时结合 --graph 选项,用简单图形表示每个提交所在的分支及其分化衍合情况 ``` ##### log 常用其他选项 ``` |选项 |说明 |:------------------|:---- |-p |按补丁格式显示每个更新之间的差异。 |--word-diff |按 word diff 格式显示差异。 |--stat | 显示每次更新的文件修改统计信息。 |--shortstat |只显示 --stat 中最后的行数修改添加移除统计。 |--name-only |仅在提交信息后显示已修改的文件清单。 |--name-status |显示新增、修改、删除的文件清单。 |--abbrev-commit |仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。 |--relative-date |使用较短的相对时间显示(比如,“2 weeks ago”)。 |--graph |显示 ASCII 图形表示的分支合并历史。 |--pretty |使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式) |--oneline |--pretty=oneline --abbrev-commit 的简化用法。 |-(n) |仅显示最近的 n 条提交 |--since, --after |仅显示指定时间之后的提交。 |--until, --before |仅显示指定时间之前的提交。 |--author |仅显示指定作者相关的提交。 |--committer |仅显示指定提交者相关的提交。 ``` *一个各选项结合的例子* ``` git log --since=2.weeks git log --pretty="%h - %s" --author=gitster --since="2008-10-01" --before="2008-11-01" --no-merges -- t/ #打印从10.1 (--since="2008-10-01")到11.1 (--before="2008-11-01")之间gitster(--author=gitster) 在t/目录下(-- t/)提交的尚未合并(--no-merges)的修改,并以短哈希值及提交说明的格式(-pretty="%h - %s" )打印 #其中 -- path/ 放到命令最后 ``` <br /> 更新 git fetch git pull = git fetch then git merge 提交 merge
Pre:
gitk
Next:
docker + k8s --学习笔记及摘抄
0
likes
630
Weibo
Wechat
Tencent Weibo
QQ Zone
RenRen
Submit
Sign in
to leave a comment.
No Leanote account?
Sign up now.
0
comments
More...
Table of content
No Leanote account? Sign up now.