Git常用指令

在进行git操作之前,首先得创建一个远程git仓库。由于你的本地Git仓库和远程Git仓库之间的传输是通过SSH加密的,所以,需要一点设置:
第一步: 创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开终端(Windows下打开Git Bash),创建SSH Key:

$ ssh-keygen -t rsa -C "youremail@example.com"

你只要把邮件地址换成你git的邮件账号就可以了,然后一路回车,使用默认值就可以了,无须设置密码。
如果一切顺利的话,你就可以在根目录下看到.ssh的目录。里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以告诉别人,一般是会将公钥上传到远程的git仓库。


屏幕快照 2020-01-19 下午4.25.06.png

第二步: 在远程git配置公钥。
也就是将id_rsa.pub里的信息拷贝到SSH key的配置信息里即可。
这样你才可以将你本地的代码上传到远程库,这里的私钥对就是识别你的身份,确认这里的提交是你进行操作的。

一、将本地代码提交到远程仓库。

如果远程已经存在仓库 可以直接执行git clone +仓库地址

1. 首先得创建本地仓库。

可将项目拷贝到一个工程文件下,或直接在项目的主目录,创建git仓库。
通过cd到文件目录下,在终端执行git init,如果在已有的项目中存在了git仓库,可先删除相应的git文件,再进行创建。

git init
2. 关联远程仓库。
$ git remote add origin git@github.com:michaelliao/learngit.git(此仓库地址,会在创建仓库的时候生成,直接拷贝过来即可)。
3. 关联后,用git status查看仓库状态。然后再执行下面的操作。
git add .
git commit -m "提交说明"

最后再执行使用命令git push -u origin master第一次推送master分支的所有内容;

git push -u origin master

当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告:

The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?

这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。
查看远程仓库地址:

git remote -v
会得到下面的打印
origin  git@gitlab.xxx.com.cn:xxx-folder/ios-app.git (fetch)
origin  git@gitlab.xxx.com.cn:xxx-folder/ios-app.git (push)
仓库创建好之后,接下来就是开发者用的最多的操作,基本是每天都会用到。

二、分支管理。

1. 创建分支

//从拉取远程分支到本地

git fetch origin remoteBranchName
git checkout -b branchName origin/remoteBranchName

//创建新的本地分支

git branch branchName //创建分支
如, git branch dev   //创建dev分支

查询本地绑定的远程分支:

git branch -vv
2. 切换分支。
git checkout -b dev_test   //创建并切换到dev_test分支
Switched to a new branch 'dev_test'

git checkout 表示切换分支, -b 创建分支。相当于下面两条指令的合集。

git branch dev_test  //创建分支
git checkout dev_test //切换分支

git branch 查看本地分支
git branch -a 查看所有分支

新版本的git建议使用 git switch命令来切换分支。

git switch dev     //切换分支
git switch -c dev_home  //创建并切换到dev_home分支
3 .删除分支

a. 本地分支删除

git branch -d dev_test //本地删除分支,你当前所处的分支不能是你要删除的分支(dev_test)。
如果无法删除终端会给出提示

error: The branch 'dev_search' is not fully merged.
If you are sure you want to delete it, run 'git branch -D dev_test'.
这时候你就可以执行 git branch -D dev_test 强制删除该分支。

b. 远程分支删除

git push origin --delete dev_test //将要删除的分支push到origin即可删除。
另一种方式就是,
git push origin :dev_test(本地已删除的分支名称,注意冒号后需要一个空格)。

4. 分支重命名。
git branch -m oldBranchName newBranchName

如我想将dev_test分支改名为dev_home分支。

git branch -m dev_test dev_home。

三、提交合并代码(stash、merge)

在每次提交代码前,都要查看仓库状态 git status。

  1. stash 暂存
git status
git diff //查看变化

git stash save "临时缓存"
git stash list   //查看stash列表
git stash pop //恢复最近的一个stash
git stash pop stash@{1}//恢复指定的stash

git stash drop stash@{0}   //移除第一个stash
git stash clear  // 清除所有stash


git log //查看版本控制系统历史记录
commit 5c6ff84e9bcaad06d1c6ba7856487853d89b4fe1 (HEAD -> dev_search, origin/dev_search)
Merge: 4533a78def 7d3d9df828   
Author: xxx001 <xxx001@pingan.com.cn>
Date:   Sun Jan 19 15:19:09 2020 +0800

    解决合并冲突提交代码

commit 7d3d9df8288d84aa5fd85a0061fefebe18c9664b (dev)
Merge: b19d5c8c2c 4aee5d5a43
Author: xxx001 <xxx001@pingan.com.cn>
Date:   Sun Jan 19 14:42:38 2020 +0800

    Merge branch 'dev' of ssh://code.paic.com.cn/git/carowner-ios into dev

  1. add ,commit
$ git add .  //将所有文件添加到暂存区(stage),
$ git commit -m "首页弹出窗bug fix"。 // 执行git commit就可以一次性把暂存区的所有修改提交到分支。

修改commit提交的注释
修改最后一次的提交注释,这个最常见

git commit --amend         【第一行出现注释界面】
i //进入编辑界面

修改某次的注释

git rebase -i HEAD~2

四、版本回退

如果代码已经commit过,但是想去掉本次commit的状态,但又不想去掉最新本地修改的代码,可以执行

git reset origin/branchName //将本地代码状态回滚到commit之前,本地代码还在,但需要重新add commit
有时候想修改commit的描述说明也可用这种方法。 

1 reset方式 (通过reset的方式,把head指针指向之前的某次提交,reset之后,后面的版本就找不到了)

每次提交代码都会有一个commitId:也就是提交记录id,所有的提交都可以根据提交记录id找到。

git reset --hard HEAD //回到当前提交的版本, 也就是上一次版本。
git reset --hard HEAD^ //回到上一次提交记录。
git reset --hard HEAD~100 //回到上一百个版本。
git reset --hard commitId  //回到对应的commitId对应的版本。

强制push到对应的远程分支(如提交到develop分支)

git push -f -u origin develop

2.revert

这种方式不会把版本往前回退,而是撤销某一次提交,某次commitId之前和之后的提交都会保留。只是撤销某次提交,并生成一个新的commit。所以,你只需要让别人更新一下代码就可以了,你之前操作的提交记录也会被保留下来
操作步骤如下:

1、找到你误提交之前的版本号

2、git revert -n 版本号

3、git commit -m xxxx 提交

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

推荐阅读更多精彩内容

  • git的使用原则是可复用,不重复,需放进git远程仓库的文件:源代码、第三方文件。 不需放进git远程仓库的文件:...
    Singal11阅读 1,510评论 0 0
  • 版本库操作 git init # 把当前的目录变成可以管理的git仓库,生成隐藏.git文件(但...
    琢磨先生lf阅读 415评论 0 0
  • 1.Git介绍 Git是分布式版本管理控制系统 Git使用好处:可以在脱机环境中查看开发版本历史,在合作开发中使用...
    Mstian阅读 272评论 0 0
  • 由于git的使用通常伴随着linux的常用指令,因此下面记得也有linux常用的操作,如果学习git确实应该也学习...
    fwfaef阅读 245评论 0 0
  • 一、git的一些常用指令 查看、添加、提交、删除、找回,重置修改文件 git help # 显示command...
    李先生Mr_Li阅读 263评论 0 0