git常用操作

记录在使用git的时候一些常用操作
1.提交项目到master分支
git clone XX #默认clone master 分支,如果要clone指定分支则git clone -b 分支名 XX
git add .  #表示添加所有文件,也可以将.改为指定文件名
git commit -m 'comment ' #与github项目有改动的文件会被给予该comment
git push origin master #第一次push的时候使用git push -u origin master

2.创建分支并提交
git clone XX
git branch -a #查看所有分支,加-v表示查看所有分支的最新提交
git branch 分支名 #创建分支
git checkout 分支名 #切换到指定分支,上面两行等同于git checkout -b 分支名
git add .
git commit -m 'comment'
git push origin 分支名 #**注意**:这样操作后所有的改动都会被赋予该分支,master分支将不会被给予任何改动,即还是和最开始git clone下来的内容一样

# 拉取远程分支到本地
git fetch origin dev
git checkout -b dev origin/dev

3.推送代码到现有仓库
cd existing_folder
git init
git remote add origin https://git.woa.com/jljunliang/test.git #将本地仓库和远程关联起来
git add .
git commit -m "init"
git push -u origin master #-u表示将本地maste分支和远程master 分支关联起来,这样以后推送master,只用git push即可

4.版本回退 git reset
git reset --hard commitId #1.回退到指定commit id的版本,一般版本号不用写全,写前四个就好,会自动匹配 2.--hard表示将工作区和暂存区都回退到指定版本,如果是--soft则表示仅将暂存区回退到指定版本,而工作区的修改保持不变,默认为--soft
git reset HEAD^ #回退到上一个版本,HEAD^^表示上上个版本,HEAD~100表示上100个版本
git reset HEAD^ <file>  # 回退file文件的版本到上一个版本
git log #查看历史commit记录,来查找需要回退的commit id
git reflog #查看历史命令,来查找需要回退的将来版本的commit id

5.撤销修改 git restore

在工作区修改,但是未进行add,即未提交到暂存区,撤销工作区的修改

git restore <file> #等同于git checkout -- <file>

在工作区修改之后且还修改了暂存区,即已进行add,但未进行commit,撤销暂存区修改

git restore --staged <file> #等同于git reset HEAD <file>

6.保存和恢复进度 git stash

git的工作区和暂存区在各分支中是公用的参考。所以当在分支A进行的修改如果没有进行commit(即仅仅修改了工作区或者暂存区),在切换到分支B之后(切换的前提是此时分支A和分支B内容一样,如果不一样则不允许切换),分支A的修改会被带到分支B,如果在分支B进行了commit则就算做是分支B的commit。在git中哪个分支进行commit就算做是谁的。
为了避免分支A的修改被带到分支B,用git stash保存当前的进度,并进行恢复。

git stash #保存当前进度
git stash save "message" #保存当前修改状态,加上注释信息
git stash list #列出所有的曾经的stash
git stash pop #恢复最新的进度到工作区。git默认会把工作区和暂存区的改动都恢复到工作区。会删除当前进度!!!
git stash pop --index #恢复最新的进度到工作区和暂存区。(尝试将原来暂存区的改动还恢复到暂存区)
git stash pop stash@{1} #恢复指定的进度到工作区。stash_id是通过git stash list命令得到的
git stash apply <stash_id> #恢复指定的进度到工作区。和git stash pop一样只是不删除恢复的进度
git stash clear #删除所有存储的进度

git status 还可以被用于开发过程中的分支合并,比如当你从master新拉取一个分支dev,用于开发,开发过程中master分支更新了内容,这时候需要合并dev和master分支,可以采用

git stash
git pull origin master
git stash pop

git stash pop 之后如果出现了冲突,就需要手动解决冲突:https://blog.csdn.net/jy692405180/article/details/78520251

因为git stash pop其实在内部是分成两个命令来执行的:http://www.kkh86.com/it/git/guide-common-conflict-on-pop.html

git stash apply #应用最新的一个贮藏
git stash drop  #删除新的一个贮藏

apply把贮藏应用的时候遇到了冲突,导致了命令的执行失败,所以就没有继续执行drop了
所以在git stash pop存在冲突,并解决完冲突之后,需要手动删掉git stash drop


7.切换分支 git checkout

如果直接从远程git clone 仓库地址,一般在本地只有master分支,具有远程master分支的内容,但是远程的其余分支却无法对应到本地。
从远程origin/dev分支取得到本地分支dev

git fetch origin dev # 本地可能不存在远程的这个分支,需要先fecth
 git checkout -b dev origin/dev

8. git amend

https://www.jianshu.com/p/a8a2ac58f37d

重新add并且不构成新的commit

git commit --amend --no-edit #

之后再push,进行先评审后合入

push origin HEAD:refs/for/master
9.其他
git log #查看提交日志
git status #查看目前状态,在git add 与git  commit 前后可以使用辅助git push
git config --list #显示git详细信息

9.gist

gist是一个很好用的工具https://gist.github.com/,甚至不需要登录github,有点像https://paste.ubuntu.com/,但是可以像github一样追踪改变的历史,并且可以创建私密与公开的gist。


REFERENCE:Git教程 廖雪峰, git stash

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值