git 常用命令

2 篇文章 0 订阅

暂存管理: stash中的保存的内容在堆栈中(栈是先进后出)
git stash 暂存
git stash save 作用等同于git stash,区别是可加注释,效果如下:

$ git stash save 'test'
Saved working directory and index state On 0305_ding_test: test
$ git stash list
stash@{0}: On 0305_ding_test: test
stash@{1}: On 0305_ding_test: aaa

git stash show 查看暂存中最新保存的stash和当前目录的差异
git stash show stash@{1} 查看暂存中指定的stash和当前目录差异
git stash show -p 查看暂存中详细的不同

git stash list 列出所有stash
git stash apply 恢复暂存内容
git stash apply stashName(如stash@{1})指定恢复哪个stash到当前的工作目录

$git stash apply stash@{1}

git stash drop 删除暂存区
git stash drop stashName 删除暂存区某个指定的stash
git stash clear 清除暂存中的所有内容

查看所有分支(包括本地和远程)

git branch -a 
git branch -r

切换分支

git checkout branch_name

切换到上一个分支

git checkout -

拉取远程分支并创建本地分支:git checkout -b 本地分支名dev origin/远程分支名dev

git checkout -b dev origin/dev

查看分支状态

git status

查看日志

git log

查看某个文件的提交记录

git log --pretty=oneline 文件路径

在这里插入图片描述
放弃本地所有修改

 git checkout .

#恢复本地误删的文件

*以Service文件夹下的文件为例*
git reset HEAD ../Server
git checkout ../Server
*以applicationContext-test.xml文件为例*
localhost:hy-test$ git reset HEAD hy-test/src/test/resources/applicationContext-test.xml
Unstaged changes after reset:
D	hy-test/src/test/resources/applicationContext-test.xml
M	hy-test/src/main/java/com/hy/test/service/TestRemoteService.java
localhost:hy-test$ git checkout hy-test/src/test/resources/applicationContext-test.xml

删除本地分支staging_branch

git branch -D staging_branch 

删除远程分支 staging_branch

git push origin --delete staging_branch

git 切换到之前版本上
git log 查看需要查看的版本的 commit 编码, 取前6位即可

git checkout 8d39ad

可以使用 git reset HEAD^ 回溯到上一个版本
git reset –hard HEAD~100 回溯100个版本

回退后的版本强制推送到远程仓库:
git push -f origin master

git checkout [ 被删除的文件或文件夹 ],以temp文件夹为例,需要先后执行:

git reset HEAD ../temp
git checkout ../temp

代码托管在多个平台上,分别设置SSH-key,生成SSH密钥为不同文件中:

ssh-keygen -t rsa -C Jefxxxng@xxx.com -f ~/.ssh/gitlab_rsa

当前版本差异并保留目录结构

git diff >d:/a.diff

不同版本差异文件并保留目录结构

git diff --before:commitId --after:commitId > d:/b.diff

push远程仓库时,经常报出下面的错误,导致操作失败

$ git push origin HEAD
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

解决方案:

git pull origin branch_name
git push origin head -u

当 git push origin branch_name时遇到报错如下:

fatal:'origin' does not appear to be a git repository    
fatal:Could not read from remote repository

解决方案:

git remote add origin git@github:xx_project-name.git

比较不同版本差异文件并打包

git diff 2aa78688025fe0 fee23ed8bb --name-only  | xargs zip diff.zip
git diff 2aa78688025fe0 fee23ed8bb  > diff.txt

回滚merge操作

1、git reflog
查看merge操作的提交记录的版本号

2、git reset –hard 版本号
回滚到merge之前的状态

示例:

localhost:$ git reflog
3f3b82aa (HEAD -> release-prod, origin/release-prod) HEAD@{0}: merge 1205-drm2.1: Merge made by the 'recursive' strategy.
bded7dc4 (origin/verify-lal) HEAD@{1}: checkout: moving from 1205-drm2.1 to release-prod
84274434 (origin/1205-drm2.1, 1205-drm2.1) HEAD@{2}: commit: test
db7b482c HEAD@{3}: checkout: moving from release-prod to 1205-drm2.1
bded7dc4 (origin/verify-lal) HEAD@{4}: merge 1205-drm2.1: Merge made by the 'recursive' strategy.
89cb8b65 (tag: 20191202151642576-release-prod, origin/hotfix-1202) HEAD@{5}: checkout: moving from 1205-drm2.1 to release-prod
db7b482c HEAD@{6}: checkout: moving from release-test to 1205-drm2.1
18320026 (release-test) HEAD@{7}: pull: Fast-forward
c72efbf0 HEAD@{8}: checkout: moving from release-prod to release-test
89cb8b65 (tag: 20191202151642576-release-prod, origin/hotfix-1202) HEAD@{9}: checkout: moving from release-test to release-prod
localhost:$ git reset --hard bded7dc4
HEAD is now at bded7dc4 Merge branch '1205-drm2.1' into release-prod

localhost:$ git reflog
bded7dc4 (HEAD -> release-prod, origin/verify-lal) HEAD@{0}: reset: moving to bded7dc4
3f3b82aa (origin/release-prod) HEAD@{1}: merge 1205-drm2.1: Merge made by the 'recursive' strategy.
bded7dc4 (HEAD -> release-prod, origin/verify-lal) HEAD@{2}: checkout: moving from 1205-drm2.1 to release-prod
84274434 (origin/1205-drm2.1, 1205-drm2.1) HEAD@{3}: commit: test
db7b482c HEAD@{4}: checkout: moving from release-prod to 1205-drm2.1
bded7dc4 (HEAD -> release-prod, origin/verify-lal) HEAD@{5}: merge 1205-drm2.1: Merge made by the 'recursive' strategy.
89cb8b65 (tag: 20191202151642576-release-prod, origin/hotfix-1202) HEAD@{6}: checkout: moving from 1205-drm2.1 to release-prod
db7b482c HEAD@{7}: checkout: moving from release-test to 1205-drm2.1
18320026 (release-test) HEAD@{8}: pull: Fast-forward
c72efbf0 HEAD@{9}: checkout: moving from release-prod to release-test
89cb8b65 (tag: 20191202151642576-release-prod, origin/hotfix-1202) HEAD@{10}: checkout: moving from release-test to release-prod
c72efbf0 HEAD@{11}: merge 1205-drm2.1: Merge made by the 'recursive' strategy.
8b266a63 HEAD@{12}: checkout: moving from 1205-drm2.1 to release-test

#代码量统计

git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -; done
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值