Git 常用的命令你都懂了吗?

查看、添加、提交、删除、找回,重置修改文件

git add <file> # 将工作文件修改提交到本地暂存区

git add . # 将所有修改过的工作文件提交暂存区

git revert <$id> # 恢复某次提交的状态,恢复动作本身也创建次提交对象

git revert HEAD # 恢复最后一次提交的状态

查看提交记录

git log git log <file> # 查看该文件每次提交记录

git log -p <file> # 查看每次详细修改内容的diff

git log -p -2 # 查看最近两次详细修改内容的diff

git log --stat #查看提交统计信息

clone指定分支命令

git clone <remote_repo> -b <branch>

<分支管理>

git pull的作用是从一个仓库或者本地的分支拉取并且整合代码。

git pull 仓库的名字 分支的名字(如果都不写,会有一个默认值。按照git branch 设置的默认跟踪的服务器和分支来拉取。)

git pull origin master 拉取远程服务器origin的master分支

查看本地分支和远程分支的映射关系

git branch -vv

git 本地分支关联远程分支

解决方式:git branch --set-upstream-to=origin/remote_branch your_branch

其中,origin/remote_branch是你本地分支对应的远程分支;your_branch是你当前的本地分支。

情况二:远程无对应的分支

步骤如下:

1.新建一个本地的分支

git branch -b newbranch  //这个命令是新建一个分支,并切换到该分支上去

2.新建一个远程分支(同名字的远程分支)

git push origin newbranch:newbranch  //创建了一个远程分支名字叫 newbranch

3.把本地的新分支,和远程的新分支关联

git push --set-upstream origin newbranch

这时就可以在这个分支下使用 git pull 推送支远程的新分支上了

创建分支:

git branch branchname

拉取远程分支并创建本地分支

git checkout -b 本地分支名x origin/远程分支名x

git branch new_branch  commitId,用这个commit创建一个新的分支 这样,该新的分支,就保留了commitId对应的修改,我们可以使用git log 命令来查看是否正确

//恢复删除的分支名称 找回已删除分支

1 git reflog

2 git branch xxx分支名称 HEAD@{1}

把分支推到远程分支:

git push <远程主机名> <本地分支名>:<远程分支名>

git push origin master:developer_branch(将本地的master 推送到远程分支的developer_branch分支上)

git push origin branchname

git push -u origin branchname# 将本地主分支推到远程(如无远程主分支则创建,用于初 始化远程仓库)

git push origin master --force#如果git要强制覆盖,那么可以使用--force命令。

$ git checkout -b [branch]

$ git branch --set-upstream

$ git push -u origin

这个时候第一次push需要网址:

$ git add --all  或者使用 git add .(所得的文件) | git add file.js(对用指定文件)

$ git commit -m "提交信息"

$ git remote add origin '远程仓库url'

$ git push -u origin origin(对应远程分支名)

然后下一次就不用那么麻烦了,直接:

$ git add --all  | git add .(所得的文件) | git add file.js(对用指定文件)

$ git commit -m "信息"

$ git push

查看分支:

git branch <-a>

切换分支:

git checkout branchname

合并分支:

(快速合并,合并指定分支到当前分支)git merge branchname

(普通合并) git merge --on-ff -m "msg" branchname

git merge origin/master-1.2.x

分支push代码:

git push  push所有分支

删除分支:

git branch -d branchname

删除远程分支:

git push origin --delete <branchName>

从远程克隆某个分支:

git clone http:xxxx.git -b branchname

将本地修改存储起来:

git stash

可以看到保存的信息:

git stash list

还原暂存的内容:

git stash pop stash@{0}

清楚.iml文件的缓存,过滤掉iml文件不提交

git rm -r --cached . 

git add . 

git commit -m "update .gitignore'"

git branch # 列出目前有多少branch

git branch new-branch # 产生新的branch (名称: new-branch), 若没有特别指定, 会由目前所在的branch / master 直接复制一份.

git branch new-branch master # 由master 产生新的branch(new-branch)

git branch new-branch v1 # 由tag(v1) 产生新的branch(new-branch)

git branch -d new-branch # 删除new-branch

git branch -D new-branch # 强制删除new-branch

git checkout -b new-branch test # 产生新的branch, 并同时切换过去new-branch

git push origin 本地分支名:远程分支名

# 与remote repository 有关

git branch -r # 列出所有Repository branch

git branch -a # 列出所有branch

tag 操作

先 git clone 整个仓库,然后 git checkout tag_name 就可以取得 tag 对应的代码了。

但是这时候 git 可能会提示你当前处于一个“detached HEAD" 状态,因为 tag 相当于是一个快照,是不能更改它的代码的,如果要在 tag 代码的基础上做修改,你需要一个分支:

git checkout -b branch_name tag_name

这样会从 tag 创建一个分支,然后就和普通的 git 操作一样了。

tag 分享标签

默认情况下,git push 并不会把标签传送到远端服务器上,只有通过显式命令才能分享标签到远端仓库。其命令格式如同推送分支,运行git push origin [tagname] 即可:

$ git push origin v1.5.0

如果要一次推送所有本地新增的标签上去,可以使用 --tags 选项:

$ git push origin --tags

1:打 tag 标签

Git tag -a v1.0 -m “commit version 1.0“

加上 -f 覆盖原有的tag

git tag -f v1.0

2:push 到远程仓库

push所有tag到远程仓库:git push origin –tags (注意tags前是两个短横杠)

push单个tag到远程仓库:git push origin [tagname]

3:删除 tag 便签

git tag -d v1.0

删除远程的

git push origin  --delete 【要删除的tag】

4:查看 tag 标签

git tag

5:切换标签

git checkout v1.0

6 先根据这个tag新建一个分支

git checkout -b 新分支 tag名

用git show命令可以查看标签的版本信息:

$ git show v0.1.2

完整的打tag

git add *

git commit -m "v0.3"

git tag v0.3

git push

git push origin v0.3

修改tag名称

git tag  新tag  旧tag

git tag -d 旧tag

删除远程的

git push origin  --delete 【要删除的tag】

如果回退到某个版本

切换到,master

git reset --hard efdec9d3d07bc26bf42cf5d6126e00f4f2922b3a

切换到master分支

git reset —hard xxx

git branch 分支名

git checkout 分支名

git push origin 分支名

切换到master分支

git reset --hard origin/master

git reset --hard HEAD ?终止合并,撤销未提交的合并,会把工作目录和索引都还原到git merge命令之前。

git reset --hard ORIG_HEAD? 撤销已经提交的合并。可能会遇到丢失目录中未提交的修改。用git reset --merge ORIG_HEAD 可避免。

比如多个OEM 分支同步提交的代码

1 首先先提交A 分支的代码

2 git reset --soft HEAD~1

3 切换到B分支上; 这时候; 会把A分支修改的代码; 带到B 分支上 修改提交;即可

4 切换A 更新一下代码; 否会显示你一直未提交代码

git查看某个文件的修改历史

1. git log filename

可以看到fileName相关的commit记录

2. git log -p filename

可以显示每次提交的diff

3. 只看某次提交中的某个文件变化,可以直接加上fileName

git show c5e69804bbd9725b5dece57f8cbece4a96b9f80b filename

如果修复git 忽略不生效的问题

.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:

git rm -r --cached .

git add .

git commit -m 'update gitignore'

1、git log -- filename(git log filename)

可以看到该文件相关的commit记录

2、git log -p filename

可以显示该文件每次提交的diff

3、git show comit_id filename

可以查看某次提交中的某个文件变化

4、git show commit_id

查看某次提交

5、gitk --follow filename

以图形化界面的方式显示修改列表

————————————————

有时候我们希望只合并某个分支上的某次修改commit到指定的分支上.那么就可以使用cherry-pick命令来操作了.

使用git log 查看提交的信息,记住commit id.

git checkout 要修改的分支

git cherry-pick 某个commit id  // 把某个commit id的提交合并到当前分支.

git remote -v

8.项目转移 git 仓库,例如 A 转到 B

//—————情况一

如果 A 仓库挂了无法恢复,则查看项目中谁的代码最全面,然后记得 commit 到本地。

然后在新的 git 服务器上新建 B 仓库,

例如:git push --mirror http://git.oschina.net/xqf/JcenterTest.git  http://git.oschina.net/xqf/JcenterTest.git就是 B 仓库地址

输入 B 仓库地址和密码就 ok,这样本地代码就可以不用,之后的开发都在 B 仓库进行

//————————情况二

如果远程 A 仓库正常,A 转移到 B

a.从原地址克隆一份裸版本库,比如原本托管于github,现在想转到码云上

例如:把 https://github.com/xuqingfeng77/AndroidMoreFunctionDemo 转移到码云上

git clone --bare https://github.com/xuqingfeng77/AndroidMoreFunctionDemo

--bare 创建的克隆版本库都不包含工作区,直接就是版本库的内容,这样的版本库称为裸版本库,执行完命令可以看到AndroidMoreFunctionDemo.git 文件夹

b.然后到码云上新建一个仓库

c.以镜像推送的方式上传代码到码云服务器上

cd AndroidMoreFunctionDemo.git

git push --mirror http://git.oschina.net/xqf/AndroidMoreFunctionDemo.git

输入码云的账号密码就 ok

Unknown SSL protocol error in connection to github.com:443

//忽略证书

git config http.sslVerify "false"

本地工作区贮藏功能

(1)git stash push --keep-index --include-untracked --message 注释 -- 文件1 文件2..  : --keep-index 清空工作区及未提交与版本库一致 ,--include-untracked 包含未添加到暂存区的

(2)git stash list  :查看stash了哪些存储

(3)git stash show :显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}

(4)git stash show -p : 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show  stash@{$num}  -p ,比如第二个:git stash show  stash@{1}  -p

(5)git stash apply :应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1}

(6)git stash pop :命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1}

(7)git stash drop stash@{$num} :丢弃stash@{$num}存储,从列表中删除这个存储

(8)git stash clear :删除所有缓存的stash

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,558评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,002评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,024评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,144评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,255评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,295评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,068评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,478评论 1 305
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,789评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,965评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,649评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,267评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,982评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,800评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,847评论 2 351

推荐阅读更多精彩内容

  • 今日份鸡汤:努力从来不嫌晚,只要你坚定开始就可以啦~ 进入正题: 1、Git clone(远程项目clone到本地...
    wyn_做自己阅读 3,302评论 0 0
  • git branch 查看本地所有分支 git status 查看当前状态 git commit 提交 git b...
    猿万阅读 5,049评论 1 45
  • 设置user的name和email 设置name: $ git config --global user.name...
    Fizz_YF阅读 366评论 0 0
  • 分支操作git branch 创建分支git branch -b 创建并切换到新建的分支上git checkout...
    caoxinyiyi阅读 76评论 0 0
  • 配置 【git config】 git help 获取帮助,也可以写成 git --help 基本操作 【...
    小小的开发人员阅读 356评论 0 0