Git常用指令

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

$ ssh-keygen -t rsa -C "[email protected]"

你只要把邮件地址换成你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 [email protected]: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回车即可。

仓库创建好之后,接下来就是开发者用的最多的操作,基本是每天都会用到。

二、分支管理。

1. 创建分支

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

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

//创建新的本地分支

git branch branchName //创建分支
如, git branch dev   //创建dev分支
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 drop stash{0}   //移除第一个stash
git stash clear  // 清除所有stash


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

    解决合并冲突提交代码

commit 7d3d9df8288d84aa5fd85a0061fefebe18c9664b (dev)
Merge: b19d5c8c2c 4aee5d5a43
Author: xxx001 
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(推荐)
这种方式不会把版本往前回退,而是生成一个新的版本。所以,你只需要让别人更新一下代码就可以了,你之前操作的提交记录也会被保留下来
操作步骤如下:

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

2、git revert -n 版本号

3、git commit -m xxxx 提交

4、git push 推送到远程

你可能感兴趣的:(Git常用指令)