将Git代码提交历史记录导出

将Git代码提交历史记录导出,第1张

git log --date=iso --pretty=format:’"%h","%an","%ad","%s"’ >> ~/Desktop/commitcsv

表示将git提交记录用excel文件的形式保存到桌面

是的,拉取之后要获取新的内容,以便获取最新的更改。要获取新的内容,你需要执行git pull命令,它将从远程仓库中拉取新的内容并将其合并到本地仓库中,以便你可以使用最新版本。如果你想更改本地仓库中的内容,你可以执行git push命令来推送你的更改到远程仓库中,以便别人也可以获取最新内容。

通过 git pull更新后,会显示别人修改了哪些文件。此时你想要查看某个文件的具体修改的内容,可通过下面的命令去查看:

git log -p + 文件名 (可查看该文件以前每一次push的修改内容)

git log - p -1 + 文件名 (只查看该文件当前这一次的push内容)

git查看 提交 修改 的文件列表

1查看最后一次提交记录的修改文件信息

 git show --raw

2查看指定commit id对应修改文件列表

git show --raw commit_id

git show --raw 2f80f1c8bb2cb8e91d22ad38480b681c194f6518

3查看所有提交记录的修改文件信息

git log --stat

git log --name-only

4查看所有修改相关的commit ID和comment信息

git log --pretty=oneline

5查询指定author的修改信息

git log --author=jackli

6查看指定author在指定时间修改信息

$ git log --pretty="%h - %s" --author='Junio C Hamano' --since="2008-10-01" \

--before="2008-11-01" --no-merges -- t/

5610e3b - Fix testcase failure when extended attributes are in use

acd3b9e - Enhance hold_lock_file_for_{update,append}() API

f563754 - demonstrate breakage of detached checkout with symbolic link HEAD

d1a43f2 - reset --hard/read-tree --reset -u: remove unmerged new paths

51a94af - Fix "checkout --track -b newbranch" on detached HEAD

b0ad11e - pull: allow "git pull origin $something:$current_branch" into an unborn branch

我们可以用gitlab-ctl tail 命令查看实时log。

Runit-managed是一个跨平台的用来取代Linux系统默认的服务控制的一个init系统, 想要了解更多知识,请自行搜索runit及sysvinit的相关信息。

omnibus-gitlab生成logs用的Runit-managed服务是svlogd, 关于svlogd的详细介绍, 请查看svlogd documentation。

修改/etc/gitlab/gitlabrb文件里面如下参数可以自定义svlogd:

Omnibus-gitlab从74版本开始内置了logrotate服务。 这个服务用来切割、 压缩并最终删除已不受Runit服务(即上节里面的svlogd)控制的日志文件, 如gitlab-rails/productionlog、nginx/gitlab_accesslog。 你可以根据需求修改/etc/gitlab/gitlabrb中logrotate的参数。

UDP log shipping (GitLab Enterprise Edition only)

Omnibus-gitlab企业版可以配置使用UDP传输syslog-ish日志信息。

log messages实例:

Nginx的access日志默认使用'combined'格式化日志, 查看nginx日志格式。 如果你想用自定义日志的格式, 修改/etc/gitlab/gitlabrb 文件如下的参数:

git config —global username “Nshen” //必须

git config —global useremail “ nshen121@gmailcom ” //必须

git config —global colorui “always” //或者"auto", always不仅Base环境是彩色,Dos里也是彩色的。

git config —global coreeditor notepadexe //设为windows记事本

git config —global aliasci “commit” //别名缩写

git config —global mergetool //可以设置合并工具

git config —global —list //查看设置

其实最后这些设置都保存在C:\Documents and Settings\用户名gitconfig 文件下(windows)

查看帮助: git help command

git init

git add txt //添加所有txt文件

git add README //添加单个文件

git add //添加所有文件包括子目录,但不包括空目录

add命令是个多功能命令,根据目标文件的状态不同,此命令的效果也不同:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等)注意每次修改后都要重新add,不然就会提交之前add时的版本。

git add -i //进入交互式add

git add -p //直接进入补丁模式,可以暂存修改的一部分。

git commit -m “initial project version”

git commit -m “something” someFile //提交指定文件

git commit -C HEAD -a —amend //复用HEAD留言,增补提交(修改小错误,而不增加提交记录,掩盖自己的小马虎)

-m “提交的说明”

-a 动把所有已经跟踪过的文件暂存,并提交(工作目录中修改过的文件都提交到版本库,不需一个一个手动add了)

—amend 增补提交

-C 复用指定提交的提交留言

-c 打开编辑器在已有的提交基础上编辑修改

eg 修改最后一次提交:

git commit -m 'initial commit'git add forgotten_filegit commit --amend

如果没有修改就相当于更改提交说明,上边3个命令得到一个提交

忽略提交的文件:

所有人都需要忽略的文件要写在gitignore文件里,而只有自己的个人偏好需要忽略的文件要写在git/info/exclude文件中

# 此为注释 – 将被 Git 忽略a # 忽略所有 a 结尾的文件!liba # 但 liba 除外 [oa] # 忽略以o或a结尾的文件 ~ # 忽略以~结尾的文件/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODObuild/ # 忽略 build/ 目录下的所有文件doc/ txt # 会忽略 doc/notestxt 但不包括 doc/server/archtxt查看文件改动:

git diff // 比较工作目录与缓存区的区别

git diff —cached 或者 git diff —staged //缓存区与版本库里的区别

git diff HEAD //三者的区别

(请注意,单单 git diff 不过是显示还没有暂存起来的改动,而不是这次工作和上次提交之间的差异。所以有时候你一下子暂存了所有更新过的文件后,运行 git diff 后却什么也没有,就是这个原因。)

git diff 18f822e //18f822e这个版本与当前目录的区别

git diff aaaaabbbbb //比较aaaaa与bbbbb之间差别

git diff —stat可以统计数据,比较特别的命令

重命名,移动,删除文件:

git mv file_from file_to //改名或移动

$ git mv READMEtxt README$ git status# On branch master# Your branch is ahead of 'origin/master' by 1 commit## Changes to be committed:#(use "git reset HEAD <file>" to unstage)## renamed: READMEtxt -> README

其实,运行 git mv 就相当于运行了下面三条命令:

$ mv READMEtxt README

$ git rm READMEtxt

$ git add README

必须调用 git rm 文件名 //从暂存区移除,并且文件也被删除

如果只是手工删除了文件,运行git status时会出现

# Changed but not updated:#(use "git add/rm <file>" to update what will be committed)## deleted: gritgemspec

此时必须再运行 git rm 文件名,才会在提交时候不再纳入版本管理

如果删除之前修改过并且已经add到缓存区了的话,则必须强制删除 -f

另外一种情况是,我们想把文件从Git仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。换句话说,仅是从跟踪清单中删除。比如一些大型日志文件或者一堆a编译文件,不小心纳入仓库后,要移除跟踪但不删除文件,以便稍后在 gitignore 文件中补上,用 —cached 选项即可:

git status

$ git status# On branch master# Changes to be committed: //只要在这行后边的,说明放入暂存区了#(use "git reset HEAD <file>" to unstage) //想取消放入缓存 git reset HEAD README## new file: README# Changed but not updated: //跟踪文件内容改变,但还没有放到暂存区,需要git add 命令才会放到暂存区#(use "git add <file>" to update what will be committed)#(use "git checkout -- <file>" to discard changes in working directory) //删除修改,恢复到之前版本,有危险 (如果想保留并且回退版本用stashing 和分支来处理)# modified: benchmarksrb查看提交历史:

git log

这时“j”向下浏览,“k”向上浏览,“q”退出

git log —pretty=oneline //一行显示

—pretty=“%h %s” //以各种格式输出

git log –p -2 //-p显示每次提交的内容差异 -2表示最近2次更改

git log —since “5 hours”

—since “3 hours”

—since “1 minute”

—before =“2008-1001”

git log 27j34j3j03u43u23 //最老版本最新版本(不包括起点只包括终点)

git log 34j4j4HEAD

git log fhfs8fh //省略HEAD

git log “HEAD^ ”“HEAD ” //windows必须加引号表示回溯上一个提交

git log -1 HEAD~1 //相当于git log -1 HEAD^

git blame hellohtml //你也可以用"-L"参数在命令(blame)中指定开始#####和结束行:

git blame -L 12,+10 hellohtml //12到22行

blame还可以跟踪内容复制,文件复制,略,见版本控制之道 79页

git checkout head 文件名 //撤销暂存区的修改

git checkout head readmetxt todotxt

git checkout head txt

git checkout head //撤销所有

git revert HEAD //创建一个反向的新提交抵消原来的提交改动

如果需要反转多个,必须从最后的开始反转, 加 -n可以不马上提交,之后一起提交。

git revert -n HEAD

git revert -n 54efhds

git commit -m “revert head and 54efhds”

git reset —hard HEAD //所有未提交的内容清空,这会让"git diff" 和"git diff —cached"命令的显示法都变为空

git reset —soft HEAD //复位版本库,暂存差异,便于提交中发现错误需要更改时有用(例如私人密码放到里边了)

分支:在当前分支末梢建立分支:

git branch RB_10(建立分支不会自动切换过去)

git checkout RB_10(切换到RB_10分支)

创建并切换分支:

git checkout -b RB_10(简化上边2步 *** 作)

git branch -d RB_10

基于某次提交、分支或标签创建新分支:

git branch RB_10 master

git branch RB_10 6fe57de0

git branch Rb_101 10

git branch -r //显示远程分支

git branch -a //列出所有分支

git branch -m master mymaster

-M 大写M会覆盖同名的分支

直接合并:

git merge 想合并到当前分支的源分支名

git merge —no-commit 分支 //合并但不提交

压合合并:将分支压合成一条commit记录,并合并过来

git merge —squash 某bug分支

git commit -m “修复某bug”

拣选合并:只合并一个提交

git cherry-pick 321d76f

如果需要连续拣选,就需要加 -n参数

然后再git commit ,但不要加-m参数,编辑器就会使用刚拣选的提交留言作为现在的留言。

标签Tag:查看标签:

git tag

git tag 10 //在当前分支最后一次提交创建标签

git tag 10 RB_10 //基于RB_10分支的最新踢脚创建标签

git tag 10 ae468d8kt //为某次提交创建标签

git checkout 10 //检出标签与检出分支一样 *** 作,但检出标签后用git branch查看本地分支会发现你现在不再任何分支上

这时你不应该修改,而应该立即基于此标签创建一个分支

git checkout -b from-10

1)git rebase RB_101 //也许修改过一个bug,希望新版本变基到RB_101分支上

2)手动解决冲突 //如果解决不了直接git rebase -abort来跳过特定提交或完全放弃变基

3)git add xxxhtml //冲突解决

4)git rebase —continue

git rebase --onto HEAD^^ HEAD^ HEAD

//—onto参数可以改写历史抹掉中间的参数,将倒数第一个参数变基到倒数第3个参数,为防止出错建议在试验性分支上先试验。

rebase -i 可以排序历史记录,多个提交合并为1个,一个提交分解成多个提交 ,

详见版本控制之道p86 ,需要编辑器支持,windows记事本不行

远程相关:

git clone git://githubcom/schacon/gritgit //从现有仓库克隆

git clone git://githubcom/schacon/gritgit mygrit //换名,唯一区别就是新建的目录成了mygrit,其他都一样

git remote add pb git://githubcom/paulboone/ticgitgit

clone会默认添加origin仓库,如果原本用git init创建的版本库,后来又想提交到远程版本库,就可以用下边的办法

git remote add origin git@examplecom :/xxxxxx

git remote -v //查看远程仓库,默认clone后,应该有一个origin仓库,-v显示对应的clone地址

git remote show origin //查看远程仓库信息

git remote rename pb paul

git remote rm paul

git fetch [remote-name] 拉取远程仓库到本地远程仓库,不自动合并 //$ git fetch origin$ git fetch pbremote: Counting objects: 58, doneremote: Compressing objects: 100% (41/41), doneremote: Total 44 (delta 24), reused 1 (delta 0)Unpacking objects: 100% (44/44), doneFrom git://githubcom/paulboone/ticgit [new branch] master -> pb/master [new branch] ticgit -> pb/ticgit

现在pb/master可以在本地访问了,你可以合并到自己的某个分支,或者切换到这个分支看看有什么有趣的更新

git pull 抓取数据合并到工作目录中当前分支

git push [remote-name] [branch-name] //默认为 git push origin master

git push origin serverfix //推送分支,其实是下边一句的简化,提取我的 serverfix 并更新到远程仓库的 serverfix

git push origin serverfix:serferfix

git push origin :serverfix //这个语法用于删除,只要把分号前留空

git gc //垃圾回收,每隔一段时间例如一个月运行一次可以减少磁盘占用空间。

git reflog //最后的保障,列出误删的东东

git bisect //二分查找,版本控制之道p124页,略

归档版本库,导出压缩包:

git archive —format=格式 —prefix=目录/ 版本>压缩包zip

git archive —format=zip head>testzip

git archive —format=tar —prefix=mysite-10/ 10 | gzip>mysite-10targz

git archive —format=zip —prefix=mysite-10/ 10 >mysie-10zip

以上就是关于将Git代码提交历史记录导出全部的内容,包括:将Git代码提交历史记录导出、git拉取之后要获取吗、git log -p 的用法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9440896.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存