记录一下git学习使用过程中的知识点以及难点,方便以后回顾复习
- 1.首先创建一个空的目录
- 2.控制台跳转到该目录 cd+目录路径
- 3.$ git init 当前目录下会多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。 如果你没有看到.git目录,那是因为这个目录默认是隐藏的。
- 第一步,使用命令$ git add [fileName],注意,可反复多次使用,添加多个文件;
- 第二步,使用命令$ git commit,完成。
- $ git add [fileName]
- $ git commit -m "message" (引号中填写提交信息)
- $ git status 查看仓库当前的状态
- $ git diff [fileName] 查看工作区和暂存区difference
- $ git diff HEAD -- [fileName] 查看工作区和版本库里面指定文件区别
- $ git diff --cached -- [fileName] 查看暂存区和版本库里面指定文件区别
每当你觉得文件修改到一定程度的时候,就可以“保存一个快照”,这个快照在Git中被称为commit。一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit恢复,然后继续工作,而不是把几个月的工作成果全部丢失。版本控制系统Git中,我们用git log命令查看历史提交记录.
Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
-
$ git log 显示从最近到最远的提交日志
-
$ git log --pretty=oneline 单行显示信息
-
$ git reflog 显示历史命令信息
-
$ git reset --hard HEAD^ 把当前版本回退到上一个版本
-
$ git reset --hard commitId
- HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
- 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
- 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
- $ git checkout -- [fileName] 丢弃工作区的修改(此时文件还没被添加到暂存区):
- $ git reset HEAD [fileName] 丢弃暂存区的修改,回到工作区状态
- 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
- 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步:
- 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退,不过前提是没有推送到远程库。
在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果没有创建SSH Key:$ ssh-keygen -t rsa -C "youremail@example.com"
- $ ssh-keygen -t rsa -C "youremail@example.com" 创建SSH Key
- $ git remote add origin ssh/https地址 本地仓库关联远程仓库
- $ git push -u origin master 推送本地master到远端master并关联本地master和远端的master
- $ git push origin master 推送本地master到远端master
- 要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;
- 关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
- 此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
$ git clone ssh/https地址 克隆一个本地库
- 要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。
- Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。
-
$ git branch 查看当前分支
-
$ git checkout -b 【分支名称】 创建并切换新分支,-b参数表示创建并切换 或者git switch -c [分支名称]
-
$ git branch 【分支名称】
-
$ git checkout 【分支名称】 或者git switch 【分支名称】
-
$ git merge【分支名称】 合并指定分支到当前分支
-
$ git merge --no-ff -m "【msg】"【分支名称】
-
$ git branch -d【分支名称】 删除本地分支
-
$ git push origin --delete 分支名字 删除远程分支
-
查看分支:git branch
-
创建分支:git branch
-
切换分支:git checkout
-
创建+切换分支:git checkout -b
-
合并某分支到当前分支:git merge
-
删除分支:git branch -d
- $ git stash stash当前工作区内容
- $ git stash list 查看stash列表
- $ git stash apply【使用list命令看到的某个stash标识】 恢复stash(恢复后,stash内容并不删除,使用git stash list还可以查看到)
- $ git stash drop 【使用list命令看到的某个stash标识】 删除stash
- $ git stash pop 【使用list命令看到的某个stash标识】 恢复并删除stash
##### 重点:假如误删了stash内容 可以通过git fsck --no-reflog | awk '/dangling commit/ {print $3}'(mac);git fsck --no-reflog | select-string 'dangling commit' | foreach { $bits = $_ -split ' '; echo $bits[2];}(windows)来列出stash列表 然后通过$git show 命令查看stash内容再通过git stash apply即可
- $ git cherry-pick [commitId]
- 删除分支:$ git branch -d【分支名称】
- 删除未合并的分支:$ git branch -D【分支名称】
- 查看远程仓库信息:$ git remote
- 查看远程仓库详细信息:$ git remote -v
- 克隆远端分支到本地并切换到该分支:$ git checkout -b dev 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 origin/branch-name branch-name。
- 查看远程库信息,使用git remote -v;
- 本地新建的分支如果不推送到远程,对其他人就是不可见的;
- 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
- 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
- 建立本地分支和远程分支的关联,使用git branch --set-upstream-to=origin/branch-name branch-name;
- 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。
- 查看所有标签:$ git tag
- 打标签:$ git tag 标签名
- 查看标签信息:$ git show 标签名
- 创建带有说明的标签,用-a指定标签名,-m指定说明文字 $ git tag -a 标签名 -m "msg" commitId
- 查看历史提交版本:$ git log --pretty=oneline --abbrev-commit
- 对某次提交打tag:$ git tag 标签名 commitId
- 命令git tag 标签名 用于新建一个标签,默认为HEAD,也可以指定一个commit id;
- git tag -a tagname -m "blablabla..."可以指定标签信息;
- 命令git tag可以查看所有标签。
-
删除标签:$ git tag -d <标签名字>
-
推送某个标签到远程 $ git push origin <标签名字>
-
推送全部尚未推送到远程的本地标签 $ git push origin --tags
- 1.从本地删除: $ git tag -d <标签名字>
- 2.从远程删除: $ git push origin :refs/tags/<标签名字>
- 命令git push origin <标签名字>可以推送一个本地标签;
- 命令git push origin --tags可以推送全部未推送过的本地标签;
- 命令git tag -d <标签名字>可以删除一个本地标签;
- 命令git push origin :refs/tags/<标签名字>可以删除一个远程标签。