Git总结

2021-03-03  本文已影响0人  zhangwenhao


命令

安装、配置、查看相关

git version
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
git config --list

几个基本的命令

git init
git add 文件名 //这里文件后缀加了就要求要准确,不加不冲突就行了
git add . //添加全部文件
git commit -m "描述语句,最好不要省略"

版本、管理文件、区域理解

git status
git diff 文件名 
git log     //加上 --pretty=oneline 使内容更加的简洁
git log --graph --pretty=oneline --abbrev-commit    // 这样还可以看见提交的描述语句
git reset --hard HEAD^     //回到上一个版本
git reset --hard 版本号     //版本号就是commit id,只需要前几位即可
git reflog
git checkout -- 文件名
// 修改已经被添加到了暂存区,需要结合上一步命令才能丢弃修改
git reset HEAD 文件名
//想要恢复可以使用:git checkout -- 文件名 来恢复,实际上是将版本库中的文件恢复到了工作区,那么,如果版本库中没有该文件(在删除之前都没有执行 add 操作),就不能恢复了
rm 文件名

远程仓库(GitHub)

//前提:github 与 本库都有一个库,需要将两个库关联起来
git remote add origin git@github.com:GitHub用户名/版本库名.git //其中 origin 为 git 默认的远程库名字,当然也可以用自己想的
git push -u origin master //其中,-u参数在第一次推送时使用即可,表示将两个分支关联起来
git push origin master //第一次推送之后,就可以省略 -u参数了
// 这里默认用的是 ssh 协议,当然也可以直接使用 url,url使用的为 https 协议
// 后面那一串在 github 版本库中的 Clone or download 按钮那里可以复制
git clone git@github.com: GitHub用户名/版本库名.git 

//克隆指定分支
git clone -b 分支名 地址
git remote  // 只能查看远程库在本地的名字:origin(默认)
git rmote -v    // 可以查看抓取和推送的地址,如果没有权限查看不到推送的地址

分支管理

git branch 分支名
git checkout 分支名 //git switch 分支名 为2.23之后版本使用的
git checkout -b 分支名  //git switch -c 分支名 为2.23之后版本使用的
git branch  //得到的带 * 号的为当前分支
git merge 要合并的分支名    //如果没有发生冲突,那么就是快速合并模式,是没有提交记录的

//可以通过添加 --no-ff 参数来禁止快速合并模式,使用普通合并模式,这样可以通过 log 查看提交记录
git merge --no-ff -m "描述语句" 要合并的分支名
//要删除多个直接在后面写上分支名即可,要切换到其他分支才能删除另外的分支,不能在自己分支上进行删除自己的操作
git branch -d 分支名1 分支名2 分支名3   

// 删除没有被合并的分支,使用上面的命令不会成功的
// 需要使用 -D 参数来强行删除
git branch -D 分支名
git stash   // 这样你在当前分支上修改的文件,添加的文件都会被储藏起来,并且这时当前的工作区是十分干净的,没有你之前在分支上的修改
git stash lis   // 查看到的记录 有 stash 号,可以用于后续指定恢复哪一个工作现场
git stash apply // 但是stach 内容不会被删除
git stash drop  // 删除 stash 内容
git stash pop   // 恢复并删除 stash 内容
git stash apply stash{0}    // 恢复指定的 stash,这里是 stash{0}
git cherry-pick 该修改的 commitId 号    // 只复制一个修改,跟 merge 不同
//如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>。
git pull
git checkout -b 分支名 origin/分支名    //origin为远程库在本地的名字,根据你设置的来定,默认为origin
//如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,就要使用下面的命令了
git branch --set-upstream-to 分支名 origin/分支名
git rebase  // 然后使用  git log --graph --pretty=oneline --abbrev-commit 进行查看提交日志

标签

git tag 标签名  // 默认在当前分支最新的提交上(HEAD)
git tag 标签名 commitId // 给指定我提交打上标签
git tag -a 标签名 -m "描述性语句" commitId  // 与上面的一样的
git tag
git show 标签名
git push origin 标签名  //默认push是不是推送标签的,指定一下就可以了
git push origin --tags  //推送全部的tag
git tag -d 标签名   //本地
git push origin --delete 标签名 //删除远程库中的标签
git push origin :refs/tags/标签名   //和上一条命令一样的效果

其他

git config --global color.ui true
// 注意 .gitignore 文件本身是需要加入到版本库中的
创建一个文件,将想要忽略的文件名(有后缀加上后缀)写在这个文件里面,然后将这个文件保存并命名为:.gitignore
git add -f 文件名
git check-ignore -v 被忽略的文件名
git config --global alias.别名 "命令"   //设置好以后就可以使用 git 别名 来达到相同的效果了

补充知识

1. 使用 git log 查看日志的时候,得到的 一串十六进制表示的数字为:commit id(只有每次提交commit时,git都会计算出来一个id号)

2. 版本记录:HEAD^:上一个版本,HEAD^^:上上一个版本,HEAD~100:往上100个版本 // 要调到指定版本需要使用版本号:只需要前面几位就行了(5,6,7位)

3. git内部有一个指向当前版本的HEAD指针,进行版本跳转时,实际上就是将指针指向指定版本,然后再更新数据即可

4. 一个文件夹中除开 .git 文件其他的都是属于工作区,.git 文件为版本库,其中重要的为: 暂存区(stage/index),还有个东西叫分支,默认有一个 master 主分支,有一个 HEAD 指针指向master。通过 add 了之后文件就添加到了版本库中的暂存区了,commit之后就提交到了分支中。

5. Git 跟踪的是修改,而不是文件,这样理解:
        修改一个文件 -> git add -> 再修改一次该文件 -> git commit
        修改一个文件 -> git add -> 再修改一次该文件 -> git add -> git commit    
    如果 git 跟踪的是文件,那么第一行操作过后,工作区就没有东西了,但事实是 git status 查看得到的是 Changes not staged for commit (提交时改变没有被暂存);而第二行操作过后,所有的修改都被添加到了暂存区中,这时候工作区已经十分干净了,所以说 Git 跟踪的是修改,而非文件
    
6. git 支持很多协议,如:https、ssh等。https 协议较慢,ssh 较快,默认是ssh

7. HEAD 指针是指向分支的,分支就相当于时间线,记录时间线上的修改。在一个分支上提交的修改在另外一个分支上是看不见的,这样更安全一些。当然,要是你没有指向add、commit操作,切换回来是可以看见文件的修改的,因为这就相当于手动修改文件一样,文件的修改并没有被添加到版本库中

8. 快速合并模式(Fast forward):只有一个分支对文件进行了修改,合并时。直接修改 HEAD 指针到一个分支就合并完成了,很快速。合并冲突发生时将不再是快速合并。
   但是快速合并模式下,合并不会被提交,不会有记录。可以通过 --no-ff 参数来禁止快速合并模式

9. 合并冲突:不同的分支都对同一个文件进行了修改,在这两个文件合并时就会产生冲突。git status 可以告诉我们冲突的文件是哪个,然后我们对文件进行修改之后提交即可

10. 配置文件都在 `.git` 目录下的 `config` 文件中

注意

项目基本操作

  1. github 上创建一个版本库,然后邀请其他项目成员加入到该项目
  2. clone 项目,就可以开始编写你的代码啦
  3. 编写完之后,准备 push 之前,先 pull 一遍项目,如果有冲突则解决
  4. 解决冲突完之后,add 加入版本库,然后 commit 提交修改,最后 push 即可

新版本命令改变

// 从暂存区恢复工作区
git resotre --worktree readme.txt

// 从master恢复暂存区 
git restore --staged readme.txt

// 从master同时恢复工作区和暂存区
git restore --source=HEAD --staged --worktree readme.txt

其他命令

// 切换目录
cd 目录

// 查看目录下的文件
ls

常见报错

上一篇下一篇

猜你喜欢

热点阅读