git 常用命令

 git一共分四块:工作区(代码),暂存区,本地版本库,远程版本库

 

 git init -->git初始化

 git add . -->git从工作区添加到暂存区

 git commit -m '提交描述信息'-->git从暂存区提交到本地库

 git remote add origin 远程URI  -->git本地仓库和远程仓库关联

 git push -u origin master -->git把本地库的内容提交到远程库(第一push记得加-u,后面就用了)

 git status -->git查看当前是否有更新内容

 git log -->git查看已经提交过的日志

 git log pretty=oneline -->git查看已经提交过的日志,一行显示

 git reflog -->git查看以前执行过的记录(主要用来查看Commit_id)

 

 git reset --hard commit_id (至少四位:用git log或者用git reflog查看)

-->git用来执行版本回退的

 

 git checkout -- ./文件名<记得要是路径+文件名>(.:代表所有文件,如果你只需要某个文件中的内容回退就写文件名)-->这个命令代表的是工作区(代码)中的内容回退。

 

 

 git rm 文件 -->git删除文件

 git checkout -- ./文件名 -->git也可以用来把误删除的文件回退

 

 git clone 远程URI       -->克隆项目到本地

 

 git branch -->查看分支

 git branch <name:分支名>-->创建分支

 git checkout <name:分支名>-->切换分支

 git checkout -b <name:分支名>-->创建且切换分支

 git merge <name> -->合并分支到当前分支

 git branch -d <name>  -->删除分支

 

 git tag <name>   -->用于新建一个标签,默认为HEAD,也可以指定一个commit id;

 git tag -a <tagname> -m '标签描述信息'   -->可以指定标签信息;

 git tag -s <tagname> -m '标签描述信息'   -->可以用PGP签名标签;

 git tag    -->可以查看所有标签。

 

 

 git push origin <tagname>   -->可以推送一个本地标签;

 git push origin --tags     -->可以推送全部未推送过的本地标签;

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

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

 

 

特例1:如果想合并某一个分支的某几个文件
场景:当前分支是test_xiang,想从test_xiangping分支合并Test.java文件就可以了
1.创建一个test_xiang的临时分支
git checkout -b test_xiang_temp

2.把test_xiangping分支上的Test.java合并到test_xiang分支上
git checkout --patch test_xiangping  Test.java

git checkout test_xiangping  Test.java


3.把test_xiang_temp合并到test_xiang上
git merg test_xiang_temp

4.测试test_xiang如果没有问题,就删除test_xiang_temp分支
git branch -d test_xiang_temp

 

特例2:如果想合并某一个分支中的一个commit
命令:
git cherry-pick 合并某个commit
git cherry-pick 命令能把某一个分支的一个或多个commit合并。

就是对已经存在的commit 进行 再次提交--如下:

命令:git cherry-pick <commit id>

查询git的历史版本:

命令:git log 
命令:git show commit_id

  git log [<options>] [<since>..<until>] [[--] <path>...]

      主要参数选项如下:

             -p:按补丁显示每个更新间的差异

            --stat:显示每次更新的修改文件的统计信息

            --shortstat:只显示--stat中最后的行数添加修改删除统计

            --name-only:尽在已修改的提交信息后显示文件清单

            --name-status:显示新增、修改和删除的文件清单

            --abbrev-commit:仅显示SHA-1的前几个字符,而非所有的40个字符

            --relative-date:使用较短的相对时间显示(例如:"two weeks ago")

            --graph:显示ASCII图形表示的分支合并历史

            --pretty:使用其他格式显示历史提交信息

git log的结果如下:

commit 64c89137c0dbe012b47ded3423dd35f0d5b76481
Author: xiangping <xiangping@xiaoniu.com>
Date:   Wed Nov 7 11:05:20 2018 +0800

其中 64c89137c0dbe012b47ded3423dd35f0d5b76481 就是我们的commit id

注意:当执行完 cherry-pick 以后,会重新提交;再次提交的哈希值和原来的不同,但标识名 一样(commit id会变)

 

如果想把A分支的一个commit合并到B分支,先切换到B分支

(注意:cherry-pick是本地的操作,假如你pull代码之后有人在A分支上有了新的commit,需要你先pull代码在进行cherry-pick)

命令:git checkout B

note:把分支A的某一次提交:commit_id=64c89137c0dbe012b47ded3423dd35f0d5b76481 合并到B分支。commit_id的值可以写全,也可以只给出前面的一段,只要你提交的commit_id没有重复的就好,剩下的部分git会帮你填充。(建议最好写全)

命令:git cherry-pick 64c89137c0dbe012b4
命令:git cherry-pick 64c89137c0dbe012b47ded3423dd35f0d5b76481


----上面的命令是将A分支的一个commit_id为64c89137c0dbe012b47ded3423dd35f0d5b76481的一次提交添加到B分支

1.合并成功显示如下:

Finished one cherry-pick.
# On branch B
# Your branch is ahead of 'origin/B' by 1 commits. 

2.有冲突的情况,比如和a12f48554a4adaed6718de89ad9dafba939a90b的提交冲突

Automatic cherry-pick failed.  After resolving the conflicts,
mark the corrected paths with 'git add <paths>' or 'git rm <paths>'
and commit the result with: 


命令:git commit -c a12f48554a4adaed6718de89ad9dafba939a90b

解决的冲突的方法:

1)查看冲突的文件

命令:git status

both modified: com/xping/hrbt/model/Xiangping.java

2)把Xiangping文件解决冲突,然后用git add命令、再执行commit命令,提交。

 

可遇见性问题:

命令:git cherry-pick 999sdak233sdff594a69a33d12e22bedfae4

出现了如下的错误:fatal: bad object 999sdak233sdff594a69a33d12e22bedfae4


可能出现的原因:git cherry-pick commit_id 这个命令是一个本地操作,所以你必须保证本地有这个commit_id,所以建议再做这个操作之前都先pull一下代码。把代码拉到本地。

============================================================================

合并某一个某一个分支的commit_id命令:git rebase -i commit_id

合并某一个某一个分支的commit_id命令:git cherry-pick commit_id

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值