git新手指南——git相关命令

Git

git命令行
git 查看、切换用户

查看用户名:git config user.name

查看用户邮箱:git config user.email

修改用户名:git config --global user.name "Your_username"

修改用户邮箱:git config --global user.email "Your_email"

git init

通过git init命令把这个目录变成Git可以管理的仓库

git add

用命令git add告诉Git,把文件/文件的修改添加到仓库

git add . 添加该目录下得所有文件

git commit -m

用命令git commit告诉Git,把文件提交到仓库

git status

git status命令可以让我们时刻掌握仓库当前的状态

git diff

git diff顾名思义就是查看difference

git log

git log命令显示从最近到最远的提交日志

如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数

git log --pretty=oneline

git reset

我们要把当前版本回退到上一个版本,就可以使用git reset命令git reset --hard HEAD^

HEAD^

在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

git reflog

要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本

在Git中,总是有后悔药可以吃的。当你用$ git reset --hard HEAD^回退到上个版本后,再想恢复到之后的版本,就必须找到想要版本的commit id。Git提供了一个命令git reflog用来记录你的每一次命令

git checkout –
1.丢弃工作区的修改

git checkout -- file可以丢弃工作区的修改

命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次git commitgit add时的状态。

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。

2.“一键还原”

git checkout -- file其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

你通常直接在把没用的文件删了,这个时候,Git知道你删除了文件,因此,工作区和版本库就不一致了,git status命令会立刻告诉你哪些文件被删除了

现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit

另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本git checkout -- test.txt

SSH加密

第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsaid_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

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

你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。

如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsaid_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:

然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容

SSH警告

当你第一次使用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回车即可。

关联远程仓库

把一个已有的本地仓库与hithub仓库关联

git remote add origin SSH地址

git remote add origin git@github.com:michaelliao/learngit.git
git push

git push origin master

把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

git push -u origin master

第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

git clone

要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。

分支管理
切换分支
git switch

git switch -c dev创建并切换到新的dev分支

git switch master直接切换到已有的master分支

git checkout(旧版)

git checkout -b dev

git checkout命令加上-b参数表示创建并切换,相当于以下两条命令

创建分支
git branch dev

切换分支
git checkout dev

git branch

git branch命令会列出所有分支,当前分支前面会标一个*号。

git branch -d dev删除dev分支

git branch -D <name>强行删除。

git merge

git merge命令用于合并指定分支到当前分支。

git merge dev将dev分支合并到当前分支

git merge --no-ff

强制禁用Fast forward模式,Git会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息

git merge --no-ff -m "merge with no-ff" dev合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。

git rebase
  • rebase操作可以把本地未push的分叉提交历史整理成直线;
  • rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。
git stash

Git提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作

git stash list查看stash存储的分支,但是需要恢复一下,有两个办法:

一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;

另一种方式是用git stash pop,恢复的同时把stash内容也删了

$ git stash pop
On branch dev

你可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:

$ git stash apply stash@{0}
cherry-pick

Git专门提供了一个cherry-pick命令,让我们能复制一个特定的提交到当前分支

Bug分支

修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;

当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场;

在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick <commit>命令,把bug提交的修改“复制”到当前分支,避免重复劳动。

多人协作
git remote

查看远程库的信息

git remote -v

显示远程库更详细的信息

推送分支

推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:

$ git push origin master

如果要推送其他分支,比如dev,就改成:

$ git push origin dev
git pull

推送失败,远程分支的最新提交和你试图推送的提交有冲突,解决办法也很简单,Git已经提示我们,先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送

协作模式

多人协作的工作模式通常是这样:

  1. 首先,可以试图用git push origin <branch-name>推送自己的修改;
  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
  3. 如果合并有冲突,则解决冲突,并在本地提交;
  4. 没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!

如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>

这就是多人协作的工作模式,一旦熟悉了,就非常简单。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值