文章目录

  • 一、常用指令
  • 1、基础指令
  • 2、扩展指令
  • 二、仓库操作
  • 1、建立远程git仓库并将本地的代码提交到远程仓库
  • 3、删除git仓库中某部分记录文件
  • 4、Git忽略规则(.gitignore配置)
  • 清除本地缓存
  • 忽略语法
  • 5、clone仓库
  • 浅克隆
  • 三、分支操作
  • 1、打标签
  • 2、切出本地分支,合并到主分支
  • 3、merge分支
  • 四、代码操作
  • 1、打patch


一、常用指令

1、基础指令

git status					//查看当前分支的状态
git diff					//查看当前分支的修改内容
git blame	test.txt		//查看test.txt这个文件的修改记录

git add test.txt			//将test.txt这个文件添加到git管理
git rm test.txt				//将test.txt这个文件从git管理中删除

git checkout -- test.txt	//撤销test.txt这个文件这个文件的修改

git stash					//将当前的修改保存起来,并且使这些修改git不可见
git stash pop				//将之前保存的修改释放并处于git可见状态

git push origin :project_FDU						//删除远程分支

git tag -d linux4.4.83-v1.0.0						//删除本地tag
git push origin  :refs/tags/linux4.4.83-v1.0.0		//删除远程tag

git clone -depth=1			//只拿到一个分支下的一个commit.对于拿下来的这个仓库,只能进行本地操作,不能进行远程推仓或更新
http://blog.chinaunix.net/uid-24467128-id-4762864.html

2、扩展指令

git log --name-only			//只显示每次提交修改的文件名称
git show --pretty="format:" --name-only 73167b96			//只显示某次提交修改的文件名称
为project_FDU分支设置跟踪信息,追踪远程的origin/project_FDU分支
git branch --set-upstream-to=origin/project_FDU project_FDU
把一个分支上的某次修改的提交记录合并到另外一个分支上:
git cherry-pick 73167b96
# 修改最近提交的 commit 信息
$ git commit --amend --message="modify message" --author="junshou <junshou@163.com>"

# 仅修改 message 信息
$ git commit --amend --message="modify message"

# 仅修改 author 信息
$ git commit --amend --author="junshou <junshou@163.com>"

二、仓库操作

1、建立远程git仓库并将本地的代码提交到远程仓库

创建远程仓库容器

第一步:新建仓库文件夹,文件名添加.git后缀
    mkdir  u-boot-2016.01.git
    
第二步:进入这个仓库文件夹
    cd  u-boot-2016.01.git
    
第三步:创建初始化git仓库
    git init --bare

将本地代码加入git管理

第一步:解压u-boot-2016.01代码
    tar xvf u-boot-2016.01.tar.bz2

第二步:进入u-boot-2016.01代码文件夹,加入git管理
    cd u-boot-2016.01
    git init
    git add .

第三步:提交第一个版本,形成master分支
    git commit -a -m "base code from nexell"

将本地代码挂接到远程仓库容器中去

第一步:创建原始代码于远端个仓库关联
    git remote add origin ../u-boot-2016.01.git
    (git remote add origin ssh://zhangchu@10.2.2.142/Users/eyrh/Service.git)
	(git remote set-url origin    修改远程关联)
	  (git remote remove xx        移除名为xx的remote)
第二步:将原始代码的master分支提交到远端仓库
    git push origin master

验证远端仓库是否有效

第一步:创建一个测试文件夹,并跳进去
    mkdir test
    cd test

第二步:将远端仓库中的代码拉下来    
    git clone ../u-boot-2016.01.git
    (git clone ssh://junshou@10.2.2.142/Users/eyrh/Service.git)
    (git clone ssh://junshou@10.2.2.142:10010/home/uboot)
    (git clone git@10.2.2.142:Users/eyrh/Service.git)

3、删除git仓库中某部分记录文件

当有部分不需要git管理的文件被误添加到git仓库中,比如编译的中间文件等,使用如下命令删除管理信息:

e.g. 删除out目录的管理信息
git rm --cached out -f -r

4、Git忽略规则(.gitignore配置)

清除本地缓存

参考链接:

git清除本地缓存(改变成未track状态),然后再提交:

[root@kevin ~]# git rm -r --cached .
[root@kevin ~]# git add .
[root@kevin ~]# git commit -m 'update .gitignore'
[root@kevin ~]# git push -u origin master

忽略语法

# 这是注释,将被忽略
*.log       # 忽略所有.log文件
build/      # 忽略build文件夹及其内容
/test       # 忽略根目录下的test文件
!important.log  # 但是不要忽略important.log文件

5、clone仓库

克隆ssh远程仓库
命令一:git clone git@(IP):(仓库路径)
e.g. :
git clone git@192.168.0.233:jushou/work/linux-source.git
命令二:git clone ssh://(user)@(IP):(端口号)/(仓库路径)
e.g. :
git clone ssh://junshou@192.168.0.233:10000/home/jushou/work/linux-source

浅克隆

https://www.codenong.com/54213420/
git log 看到 grafted 标签时,意味着 git clone 时用了--depth参数,当前仓库是 shadow 的,即 commit 历史不完整的。
恢复完整commit
使用git fetch origin --unshallow来拉取完整 commit 历史。再次合并就可以了
将git浅层仓库转换为普通仓库
git rev-parse --verify 61c7581f36158236aabc9169f1a5aa9753273fc3 > .git/info/grafts
git filter-branch -f -- --all
git replace --convert-graft-file

三、分支操作

1、打标签

参考链接:
https://git-scm.com/book/zh/v1/Git-%E5%9F%BA%E7%A1%80-%E6%89%93%E6%A0%87%E7%AD%BE

创建一个含附注类型的标签非常简单,用 -a (译注:取 annotated 的首字母)指定标签名字即可:

$ git tag -a project_meizheng_v1.0.0 -m 'beijingmeizheng first version'
$ git tag
v0.1
v1.3
v1.4
project_meizheng_v1.0.0

$ git push origin project_meizheng_v1.0.0

$ git ls-remote	会列出所有的分支/标签

删除本地标签:git tag -d tagName

删除远程仓库标签:git push origin :refs/tags/tagName

2、切出本地分支,合并到主分支

参考链接:
切出新分支
git chechout -b <branchName>
增加新的修改并提交
git commit -m "***"
切到主分支上并更新
git checkout master
git pull
(git rebase)有可能会用到
使用如下命令合并分支到主分支
git merge <branchName>
推送到远程
git push origin master

3、merge分支

git checkout master
    git merge test-***

四、代码操作

1、打patch

git format-patch -1 												打最近的两次提交的patch 
git format-patch -n 												打最近n次提交的patch
git format-patch 736d2489d0faf6b8b287e8aeb81b39d5ca08a061 			依次打最近到73***61的每次提交的patch
git format-patch -1 4d795d26ab0a4500927328cb76fd9616c9fb5cea		将指定commit号打出来