首先理解几个基本概念:

origin:默认远程版本库;

master:默认开发分支;

查看本地更新状态:

git  status

jiangzhaowei@ubuntu$ git status
# On branch dev
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   .config
#       modified:   tv-ap/atsc/app/Kimin.c
#       modified:   tv-ap/atsc/app/MApp_Scan_ATSC.c
#
no changes added to commit (use "git add" and/or "git commit -a")

查看更改情况:

git diff  ./tv-ap/atsc/app/MApp_Scan_ATSC.c

iangzhaowei@ubuntu$ git diff ./tv-ap/atsc/app/MApp_Scan_ATSC.cdiff --git a/tv-ap/atsc/app/MApp_Scan_ATSC.c b/tv-ap/atsc/app/MApp_Scan_ATSC.c
index c750c1d..71811dc 100755
--- a/tv-ap/atsc/app/MApp_Scan_ATSC.c
+++ b/tv-ap/atsc/app/MApp_Scan_ATSC.c
@@ -757,6 +757,7 @@ void MApp_Scan_ATSC_End(void)pastRfCh.stTPSetting.u16Frequency = stTPSetting.u16Frequency;pastRfCh.stTPSetting.fModulation = DEMOD_ATSC_MODE_NTSC;pastVirtualCh[0].u8RfNum = u8RFCh;
+                               pastVirtualCh[0].u16ProgramNumber = 0;pastVirtualCh[0].stVirtualChNum.u8AirCable = (U8)ANT_TYPE;#elsepastVirtualCh[0].stTPSetting.u16Frequency = stTPSetting.u16Frequency;

REPO全部更新:

repo forall -c git pull

初始化本地git仓库(创建新仓库)

git init

配置用户名

git config --global user.name "xxx"  

配置邮件

git config --global user.email "xxx@xxx.com"  

git status等命令自动着色

git config --global color.ui true                        
git config --global color.status auto
git config --global color.diff auto
git config --global color.branch auto
git config --global color.interactive auto

clone远程仓库

git clone git+ssh://git@192.168.53.168/VT.git            

查看当前版本状态(是否修改)

git status                                               

添加xyz文件至index

git add xyz                                              

增加当前子目录下所有更改过的文件至index

git add .                                                

提交

git commit -m 'xxx'                                      

合并上一次提交(用于反复修改)

git commit --amend -m 'xxx'                              

将add和commit合为一步

git commit -am 'xxx'                                     

删除index中的文件

git rm xxx                                               

递归删除

git rm -r *                                              

显示提交日志

git log                                                  

显示1行日志 -n为n行

git log -1                                               
git log -5

显示提交日志及相关变动文件

git log --stat                                           
git log -p -m

显示某个提交的详细内容

git show dfb02e6e4f2f7b573337763e5c0013802e392818        

可只用commitid的前几位

git show dfb02                                           

显示HEAD提交日志

git show HEAD                                            

显示HEAD的父(上一个版本)的提交日志 ^^为上两个版本 ^5为上5个版本

git show HEAD^                                           

显示已存在的tag

git tag                                                  

增加v2.0的tag

git tag -a v2.0 -m 'xxx'                                 

显示v2.0的日志及详细内容

git show v2.0                                            

显示v2.0的日志

git log v2.0

显示所有未添加至index的变更

git diff                                                 

显示所有已添加index但还未commit的变更

git diff --cached                                        

比较与上一个版本的差异

git diff HEAD^                                           

比较与HEAD版本lib目录的差异

git diff HEAD -- ./lib                                   

比较远程分支master上有本地分支master上没有的

git diff origin/master..master                           

只显示差异的文件,不显示具体内容

git diff origin/master..master --stat                    

增加远程定义(用于push/pull/fetch)

git remote add origin git+ssh://git@192.168.53.168/VT.git

显示本地分支

git branch                                               

显示包含提交50089的分支

git branch --contains 50089   

显示所有分支

git branch -a      

显示所有原创分支

git branch -r    

显示所有已合并到当前分支的分支

git branch --merged    

显示所有未合并到当前分支的分支

git branch --no-merged  

本地分支改名

git branch -m master master_copy  

从当前分支创建新分支master_copy并检出

git checkout -b master_copy

上面的完整版

git checkout -b master master_copy 

检出已存在的features/performance分支

git checkout features/performance 

检出远程分支hotfixes/BJVEP933并创建本地跟踪分支

git checkout --track hotfixes/BJVEP933 

检出版本v2.0

git checkout v2.0 

从远程分支develop创建新本地分支devel并检出

git checkout -b devel origin/develop  

检出head版本的README文件(可用于修改错误回退)

git checkout -- README  

合并远程master分支至当前分支

git merge origin/master  

合并提交ff44785404a8e的修改

git cherry-pick ff44785404a8e 

将当前分支push到远程master分支

git push origin master    

删除远程仓库的hotfixes/BJVEP933分支

git push origin :hotfixes/BJVEP933  

把所有tag推送到远程仓库

git push --tags      

获取所有远程分支(不更新本地分支,另需merge)

git fetch            

获取所有原创分支并清除服务器上已删掉的分支

git fetch --prune  

获取远程分支master并merge到当前分支

git pull origin master

重命名文件README为README2

git mv README README2                                    

将当前版本重置为HEAD(通常用于merge失败回退)

git reset --hard HEAD                                    
git rebase

删除分支hotfixes/BJVEP933(本分支修改已合并到其他分支)

git branch -d hotfixes/BJVEP933

强制删除分支hotfixes/BJVEP933

git branch -D hotfixes/BJVEP933  

列出git index包含的文件

git ls-files    

图示当前分支历史

git show-branch                                          

图示所有分支历史

git show-branch --all                                    

显示提交历史对应的文件修改

git whatchanged                                          

撤销提交dfb02e6e4f2f7b573337763e5c0013802e392818

git revert dfb02e6e4f2f7b573337763e5c0013802e392818      

内部命令:显示某个git对象

git ls-tree HEAD                                         

内部命令:显示某个ref对于的SHA1 HASH

git rev-parse v2.0                                       

显示所有提交,包括孤立节点

git reflog                                               
git show HEAD@{5}

显示master分支昨天的状态

git show master@{yesterday}                              

图示提交日志

git log --pretty=format:'%h %s' --graph                  
git show HEAD~3
git show -s --pretty=raw 2be7fcb476

暂存当前修改,将所有至为HEAD状态

git stash                                                

查看所有暂存

git stash list                                           

参考第一次暂存

git stash show -p stash@{0}                              

应用第一次暂存

git stash apply stash@{0}                                

文件中搜索文本“delete from”

git grep "delete from"                                   
git grep -e '#define' --and -e SORT_DIRENT
git gc
git fsck

git checkout -- 文件名

把该文件在工作区的修改全部撤销,这里有两种情况:

一种是文件修改后还没有放到暂存区(也就是还没有执行git add),现在撤销修改就回到和版本库一样的状态;

一种是文件修改后已经添加到暂存区(已经执行了git add),又做了修改,撤销修改就回到了添加到暂存区后的状态;

总之,就是让这个文件回到最近执行git commit或git add时的状态。

注意中间的"--"很重要,没有“--”,就变成了“切换到另一个分支”的命令。

git reset HEAD 文件名

把暂存区的修改撤销掉(unstage),重新放回工作区。

git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区,当我们用HEAD时,表示最新的版本。

 git rm 文件名

在工作区中增加一个文件,并添加到本地分支中。但是如果你不需要这个文件了。你直接用"rm 文件名"删除该文件。这个时候,Git知道你删除了文件,因此,工作区和版本库就不一样了。git status可以查看当前的情况。

此时有两个选择:

1.确实要从版本库中删除该文件,就用命令"git rm 文件名"删掉,并且git commit提交,此时该文件就真正从版本库中删除了。

2.另一种情况是删错了,因为版本库中还有该文件,所以可以把误删的文件恢复到最新版本,“git checkout -- 文件名”。“git checkout”就是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

git remote add origin ***github仓库地址

关联一个远程仓库。在第一次提交之前进行。

git remote -v

查看远程仓库的地址。

git remote rm origin 

删除原来的远程仓库地址。

git push -u origin master

第一次推送master分支的所有内容。

git push origin master

以后每次的修改使用该命令。

关于分支:

在版本回滚里,每次提交,Git都把他们串成一条时间线,这条时间线就是一个分支。到目前为止,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD指针严格来说不是指向提交,而是指向master,master才是指向提交的。所以,HEAD指向的就是当前分支。

git checkout -b dev

创建一个dev分支,然后切换到dev分支。

.

(22)分支管理策略

1.通常合并分支时,如果可以,Git会使用Fast Forward快进模式,但这种模式下,删除分支后,会丢掉分支信息。我们可以使用--no-ff方式的git merge.

2.git checkout -b dev

仍然创建并切换到dev分支。

3.git add .

git commit -m "merge --no-ff"

在dev分支下进行提交。

4.git checkout master

切换到master分支下。

5.git merge --no-ff -m "merge with no-ff" dev

合并使用--no-ff参数,表示禁用Fast Forward。因为本次合并要创建一个新的commit,所以加上-m参数。

6.git log --graph --pretty=oneline --abbrev-commit

查看分支历史。注意使用--abbrev-commit 参数可以把commit的40为hash值缩短为7位,方便查看。

7.分支策略:

首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活。干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master上发布1.0版本。每个人都有自己的分支,时不时往dev分支上合并就可以了。

合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出曾经做过合并。而fast forward合并就看不出曾经做过合并。默认是“fast forward”.

Bug分支

每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。

1.git stash

把当前的工作现场储藏起来,等以后回复现场后继续使用。

git stash list

查看当前分支中存储的stash

2.git status

此时在dev分支中查看工作区,是干净的。因此可以放心的创建分支来修复bug。

3.git checkout master

git checkout -b issue-101

首先确定要在哪个分支上修复bug,假定要在master分支上修复,就从master创建临时分支。

4.在issue-101上修复bug,提交。

5.git checkout master

git merge --no-ff -m "修复完成,合并issue-101分支" issue-101

git log --graph --pretty=oneline --abbrev-commit

合并bug分支。

6.git branch -d issue-101

删除bug分支。

7.git checkout dev

git status

再次回到dev分支干活,工作现场是完全干净的。

8.git stash list

查看当前的工作现场。Git把stash内容存储在某个地方了。我们需要恢复现场。

.

9.git stash pop

git stash list

在恢复内容的同时把stash的内容也删了。

.

10.git stash apply

git stash drop

这两行命令相当于“git stash pop”. 用“git stash apply”恢复,但是恢复后,stash内容并不删除,需要用“git stash drop”来删除。

11.git add .

git commit -m "在dev分支提交"

把dev分支工作的内容提交。等下要合并到master分支。

12.git checkout master

git merge --no-ff -m "合并dev分支的工作内容" dev

如果有冲突,则手动修改。

13.git add .

git commit -m “合并了dev后的master提交”

git branch -d dev

手动解决冲突后,在master提交,然后删除dev分支。

14.小结:修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除。

当手头工作没有完成时,先把工作现场git stash 一下,然后去修复bug,修复后,再git stash pop,回到工作现场。

(24)Feature分支

1.添加一个新功能,你肯定不希望因为一些实验性质的代码,把主分支搞乱了。所以,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后删除feature分支。

当开发完成后,如果在还没有合并之前,这个新功能不需要了。就需要删除该分支。

git branch -d feature-net

.

2.git branch -D feature-net

注意:1中的删除无法成功,因为该分支还没有被合并,如果删除,将丢失修改。如果要进行强行删除,要使用"git branch -D feature-net"命令。

3.小结:开发一个新的feature,最好新建一个分支。如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。

(25)git remote

查看远程库的信息。

git remote -v

显示详细信息。显示了可以抓取和推送的origin地址。如果没有推送的权限,就看不到push的地址。

(26)多人协作

1.推送分支:就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上。

git push origin master

如果要推送到其他分支,比如dev,就改成:

git push origin dev

但是并不是一定要把本地分支往远程推送,那么,哪些分支需要推送,哪些分支不需要呢?

--master分支是主分支,因此要时刻与远程同步;

--dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;

--bug分支只用于在本地修复bug,没必要推送到远程;

--feature分支可以看实际开发需要。

2.抓取分支

git checkout -b dev origin/dev

创建远程origin的dev分支到本地。

git branch --set-upstream dev origin/dev

设置本地dev与远程origin/dev分支的链接。

3.多人协作的模式:

--首先,可以试图用git push origin branch-name推送自己的修改;

--如果推送失败,因为远程分支比你的本地分支版本新,需要先用git pull视图合并;

--如果合并有冲突,则解决冲突,并在本地提交;

--没有冲突或者解决冲突后,再用git push origin branch-name推送就能成功。

--如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令"git branch --set-upstream branch-name origin/branch-name".

4.小结

--查看远程库信息,使用“git remote -v”;

--本地新建的分支如果不推送到远程,对其他人就是不可见的;

--从本地推送分支,使用“git push origin branch-name”,如果推送失败,先用"git pull"抓取远程的新提交;

--在本地库创建和远程分支对应的分支,使用“git checkout -b branch-name origin/branch-name”,本地和远程分支的名称最好一致;

--建立本地分支和远程分支的关联,“git branch --set-upstream branch-name origin/branch-name”;

--从远程抓取分支,使用git pull.如果有冲突,要先处理冲突。

(27)标签管理

发布一个版本时,我们通常先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。

Gitde 标签虽然是版本库的快照,但其实他就是指向某个commit的指针。所以,创建和删除标签都是瞬间完成的。

(28)创建标签

git tag v1.0

切换到要打标签的分支上,执行“git tag v1.0”,默认是打在最新提交的commit上。

git tag

查看所有的标签。

.

git tag v1.1 commit_id

标签可以打在任意一个提交上。

git show v1.0

查看标签信息。

.

(29)操作标签

1.git tag -d v1.0

因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。

2.git push origin v1.0

推送某个tag到远程分支。

3.git push origin --tags

一次性推送全部尚未推送到远程的本地标签。

4.如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除

git tag -d v1.0

然后从远程删除。删除命令也是push,但是格式如下:

git push origin :refs/tags/v1.0

.

5.小结:

--命令“git push origin <tagname>”:可以推送一个本地标签;

--命令“git push origin --tags”:可以推送全部未推送的本地标签;

--命令"git tag -d <tagname>":可以删除一个本地标签;

--命令“git push origin :refs/tags/<tagname>”:可以删除一个远程标签。

转载于:https://www.cnblogs.com/jiangzhaowei/p/5226995.html

GitRepo 命令大全 ***相关推荐

  1. DOS命令大全 黑客必知的DOS命令集合

    一般来说dos命令都是在dos程序中进行的,如果电脑中安装有dos程序可以从开机选项中选择进入,在windows 系统中我们还可以从开始运行中输入cmd命令进入操作系统中的dos命令,如下图: 严格的 ...

  2. linux mysql 命令 大全

    linux mysql 命令 大全 1.linux下启动mysql的命令:   mysqladmin start /ect/init.d/mysql start (前面为mysql的安装路径) 2.l ...

  3. Linux_学习_01_常用命令大全

    一.文件目录 1.列出目录 ls -a #显示隐藏文件 -l #显示文件和目录的详细资料 -h-lrttree #显示文件和目录由根目录开始的树形结构 lstree #显示文件和目录由根目录开始的树形 ...

  4. Ubuntu常用命令大全[显示桌面]

    Ubuntu常用命令大全 查看软件xxx安装内容 #dpkg -L xxx 查找软件 #apt-cache search 正则表达式 查找文件属于哪个包 #dpkg -S filename apt-f ...

  5. cmd批处理命令大全1

    cmd和批处理命令大全 1.Echo 命令 打开回显或关闭请求回显功能,或显示消息.如果没有任何参数,echo 命令将显示当前回显设置. 语法 echo [{on|off}] [message] Sa ...

  6. linux下Vi编辑器命令大全

    linux下Vi编辑器命令大全 /根目录下的文件夹 输入"/",回车 里面有很多文件夹,如:etc,home,lib,mnt等等 etc:存放用户名和密码 home:每个用户有个文 ...

  7. Linux常用命令大全-toolfk程序员在线工具网

    本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装任何软件,只要把内容贴上按一个执行按钮,就能获取到想要的内容结果.Tool ...

  8. 最常用的CURL命令大全

    为什么80%的码农都做不了架构师?>>>    日期:2012-6-10  来源:GBin1.com cURL是 一个非常实用的命令行工具,可以有效的帮助你处理URL相关操作和数据传 ...

  9. Windows 7运行命令大全

    2019独角兽企业重金招聘Python工程师标准>>> Windows 7运行命令大全,小编整理了常用的45个Win7运行命令分享给大家: 1.cleanmgr:打开磁盘清理工具 2 ...

最新文章

  1. 手机 x PC 交叉感染?360 安全研究员演示“混血攻击”
  2. html使用xml数据岛,html中的xml数据岛记录编辑与添加_xml技巧
  3. 2021-06-29
  4. Apache Web Server - httpd 的虚拟主机的配置
  5. AngularJS学习!
  6. 计算机课程学习小结,计算机课程学习心得5篇___.docx
  7. 钱 | 钱,钱,钱,钱,钱,钱,钱!钱啊钱!(配音乐)
  8. 服务器 交换机的维护,服务器路由器交换机维护设置
  9. XNOR.ai融资1200万美元
  10. svn里的branch、trunk、tag的用处
  11. GitHub 标星 15.3k,Java 编程思想最新中文版
  12. 无线密码破解----minidwep-gtk的PIN破解方法
  13. 能量谱 matlab,频谱、幅度谱、功率谱和能量谱含义
  14. PS-第十一天-通道抠图及剪贴蒙版
  15. LocalDate、LocalTime、LocalDateTime
  16. Visual Studio完成并换行快捷键
  17. 常见监控摄像头专业术语(码流、分辨率、帧率)详解
  18. win10 双屏显示 鼠标可以从主屏幕左侧滑入右侧竖屏
  19. RNA 10. SCI 文章中基因表达富集之 KEGG 注释
  20. 升级鸿蒙系统数据备份,鸿蒙系统手机怎么回退到稳定版的EMUI 11.0系统?鸿蒙系统回退到EMUI系统详细教程...

热门文章

  1. 股东痛斥联想管理层:都是帅哥 但业绩差
  2. MailBee.NET Objects接收电子邮件(POP3)教程一:接收简单的电子邮件
  3. Spring Mvc 入门Demo
  4. sessionkey 微信小程序获取_微信小程序获取sessionkey,Connection reset
  5. Spring MVC初见面
  6. 谈论源码_为什么每个人都在谈论WebAssembly
  7. raspberry pi_如何使用Raspberry Pi测量颗粒物
  8. 优必选能开放软硬件源代码吗_四个项目供父母教孩子如何使用开放式硬件和电子产品...
  9. vue-cil+vuex 构建一个简单的记事本应用
  10. React 组件间传值的几种情形