关于git的一些用法

以前用过一段时间的svn,今年这个项目用的是git,这篇文件记录一些自己用过的命令和遇到的情况,仅作参考。

 目前关于git,用到最多的就是下面这几条命令:

git pull
git commit, git commit -asm “  log  ”
git push 

嗯,还有个几个:

git log
git diff
git status

哈哈哈,真够少的,今后再碰到什么再加吧,现在先占个位置。

10月21日补: 

git撤销add:
例:git add t1.cpp t2.cpp 

之后你想撤销对t1.cpp的add,那么只需要 

 git reset HEAD t1.cpp

就好了。 

当然,前提是你还没有commit。 

 

这两天改代码,改完之后发现不合适,干脆删掉文件或者重命名做参考,
于是直接git checkout <filename>重新down一个下来,简单粗暴直接,哈哈。

 

10月27日补:

git branch               查看本地分支
git branch -a           查看远程分支 

11月4日补:

如何撤销已经commit到本地,但是尚未push到server的更改:

git reset ${versionID}


指定好要恢复回去的版本号即可,这个时候已经更改过的内容还是在本地,但是版本已经回到了指定的版本。

如何对比两个版本有哪些文件被改变而不显示具体细节:

git diff --stat ${versionID_01} ${versionID_02}

注意stat之前是两个横杠“ - ”

11月6日补:

有时候习惯用以下命令提交代码:
 git     commit    -asm     “the message you want input”
后来发现这样会把不想提交的东西一起提交上去,
今天才发现,问题出在里面这个 a 这个参数上,这里等同于 git   -add (其实我还是不太确定这个a 是add 还是all。。。。。哈哈)

11月30日补:

有时候在merge或者checkout的时候会遇见如下的错误:
 
checkout error:

error: Your local changes to the following files would be overwritten by checkout: xxxxxxx

    xxxxxxx
Please, commit your changes or stash them before you can switch branches.
Aborting
merge error:
error: Your local changes to the following files would be overwritten by merge:
xxxxxxxx
Please, commit your changes or stash them before you can merge.
Aborting

 其实人家git以及给你指明了解决方案,----> git stash

git stash 可以将为提价的修改保存在当前分支的当前版本下,准确来说是暂存在栈里,这是条简化版的命令;
git stash save “ message log” 上条命令的精确版,可以写log;
git stash list 可以列举最近几次stash操作的信息,分支、版本号、log等;
git stash show stash@{0} 列举索引为0(即最近一次)的stash操作具体信息,比如修改了那些文件,修改了多少,具体内容看不到;
git show stash@{0} 则是列举索引为0的stash操作的详细内容,个人猜测,实际上内部调用了git diff 的命令,与git diff效果一样;
git stash pop 恢复最近一次stash操作即本命令前索引为0的stash操作,并在stash栈中删除;
git stash pop stash@{0} 恢复指定索引为0的stash操作,并在stash栈中删除;
git stash drop 删除stash栈中内容,默认为最近一次stash操作;
git stash drop stash@{0} 从stash栈中删除指定索引为0的stash操作;
git stash clear 清除stash栈中所有内容;

其实stash的操作还能更精细,但是我没有研究过,等今后用到在写吧,这个是这两天碰到的情况。

12月1日补:

如果已经merge了却想取消怎么办,老办法:
git reset --hard ${VersionGuid}
恩,就这么回事儿。

2017年9月14日补:

如何push指定的某个commit到指定branch:
git push origin [commit-id]:<branch-name>

 

2020年10月25日补:

暂存区对比:

git diff --staged

git diff --cached

git cherry-pick多个commit:

git cherry-pick commit_1^..commit_n   commit_1到commit_9,包含commit_1,commit_9

git cherry-pick commit_1..commit_9     commit_1到commit_9,包含commit_9, 不含commit_1

push 到gerrit,指定reviewer:

%r后面跟的是reviewer邮箱

git push origin HEAD:refs/for/[branch_name]%r=xxxx@xxx.com

git log针对指定文件查看多个commit的变化:

-n  指定最近几次commit,不加-n就是所有commit上关于该文件的变化。

git log -p -n [file_name]

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值