首页 > 技术文章 > Git基本操作

zjh-study 2019-04-02 16:05 原文

参考文献

一、初始化配置

// 配置用户账号信息
git config --global user.name 'gitHub name'
git config --global user.email 'gitHub email'

// 重置或者修改用户账号信息
// 第一种直接按上面配置,第二种就是替换(备用),这个是全局配置
git config --global user.name "James"
git config --global user.email "1282285801@qq.com"

// 查看当前使用者的信息和邮箱
git config user.name
git config user.email
// 也可以通过全局查看
git config --global --list
    
// 添加多个用户配置
git config --global --add user.name 'name'
git config --global --add user.email 'email'

二、切换路径

// 输入以下命令来切换路径
cd D: => 切换D盘
cd projectName => 切换指定文件夹名的文件
    
// 切换上级目录
cd ../

三、创建文件

通过mkdir + 文件名来创建一个项目

mkdir projectName

四、查看文件路径

// 查看当前文件的目录路径
pwd

五、创建本地仓库

git init

六、添加项目文件

添加项目到本地缓存区,没有任何报错提示即成功

// 添加指定问价
git add textName 

// 添加所有文件
git add *
git add .

七、提交项目文件

提交项目到分支

git commit -m "这是提示信息" => 提示信息是用来告诉其他人本次提交做了什么修改或者操作

八、查看文件状态

通过查看文件状态,来了解当前项目里文件的提交的状态

// 如果有红色标记的文件,则说明该文件尚未添加并提交或是修改了未上传,可以重复执行六和七步
git status

九、查看修改内容

// 查看修改了什么内容
git diff projectName

十、回退修改

// 查看日志,看看做了哪些操作
git log = git log --pretty=online

// 版本回退命令,每回退一个版本,则加一个^
git reset --hard HEAD^
			
// 但如果回退版本过多,不可能加很多个^,所以可以如下操作
git reset --hard HEAD~100 => 回退100个版本

十一、查看文件内容

cat projectName

十二、恢复修改

// 如果知道版本号,我们可以通过版本号来进行恢复修改
git reset --hard 版本号

// 但如果我们不知道版本号或者关闭了gitBash窗口,则操作不了
// 查看日志,查看版本号
git reflog

// 根据版本号恢复(亲自测试的时候出现了问题,没有恢复成功,不知道什么原因!)
git reset --hard 版本号

十三、删除操作

1、直接去对应文件手动删除

2、利用版本回退功能

3、在做了修改,还未提交到分支的时候

// 撤销修改,只能撤销尚未add的文件内容,如果已经add了,则无法撤销
git checkout -- projectName

十四、删除文件

rm projectName

// 彻底删除,直接通过commit命令
git commit -m "删除test2文件"

// 恢复删除,必须在没有commit命令之前(注意,checkout后面必须携带--,否则就是创建分支)
git checkout -- projectName

十五、远程仓库&git push

看看本地用户主目录下是否有.ssh文件夹,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人

C:\Users\micarshowo1\.ssh

// 没有则通过命令行创建
ssh-keygen -t rsa –C "emailname"
// 这个是创建不成功的,需要如下解决
在git安装文件里找到一个.ssh.exe这个启动一下,应该就可以了
    
// 接下来如果之前没有设置过就直接三次回车就好,如果之前设置过,则会提示是否要覆盖?敲Y即可
    
// 查看密钥
cat ~/.ssh/id_rsa.pub
    
// 密钥测试
ssh -T git@gitee.com

我们可以在码云/gitHub等代码管理工具上创建一个远程仓库,创建完成后,我们可以通过直接克隆或者与本地已有的仓库链接,将内容推送到远程仓库中

下面这两个步骤,如果你在本地创建了仓库,则可以直接走这一步,否则则要从创建本地仓库开始

git clone https://gitee.com/zhanjianhua/demo-test.git

// 或者关联
git remote add origin https://gitee.com/zhanjianhua/demo-test.git

// 将本地仓库master分支上的内容推送到gitHub/码云远程仓库上(第一次操作)
// 这句话的意思是将本地仓库推送到master上去
git push -u origin master
    
// 以后有更新或者是推送,则只需要执行简易推送命令即可
git push origin master

报错:remote: You do not have permission to push to the repository via HTTPS

// 可能没有代码推送权限
git pull 拉取一下, 如果能拉取,不能推送就是权限问题,可以找公司人员开通一下权限

// 使用SSH方式

// 用户名或者密码错误
// 错误提示:fatal: Authentication failed for 'https://gitee.com/zhanjianhua/demo-test.git/'
// 解决方式如下,重新配置
 git config --system --unset credential.helper

十六、创建分支

// 创建并切换分支
git checkout -b branchName
    
// 两者等价
git branch branchName => 创建分支
git checkout branchName => 切换分支

十七、查看分支

查看分支,会列出所有的分支,当前分支前面会添加一个星号 (*)

git branch
    
// 列出所有远程分支
git branch -r
    
// 列出所有本地分支和远程分支
git branch -a

十八、切换分支

git checkout branchName

十九、合并分支

git merge命令用于合并指定分支到当前分支上,合并后,再查看内容,可以看到,和分支最新提交的是完全一样的

注意Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向分支的当前提交,所以合并速度非常快

git merge branchName

通常合并分支时,git一般使用”Fast forward”模式,在这种模式下,删除分支后,会丢掉分支信息,现在我们来使用带参数 –no-ff来禁用”Fast forward”模式

git merge --no-ff -m "这是注释内容" branchName

二十、删除分支

git branch -d branchName

二十一、分支版本

git log --graph --pretty-online --abbrev-commit

二十二、BUG分支

// 隐藏工作现场,可以让没有提交的内容暂时挂起
git stash

// 查看工作现场
git stash list

// 恢复工作现场,恢复后,stash内容并不删除
git stash apply

// 删除内容
git stash drop

// 恢复的同时把stash内容也删除
git stash pop

二十三、远程仓库信息

// 要查看远程库的信息 使用 
git remote

// 要查看远程库的详细信息 使用 
git remote –v

二十四、多人协作

1、克隆远程的库到本地来

2、现在我们的小伙伴要在dev分支上做开发,就必须把远程的origin的dev分支到本地来,于是可以使用命令创建本地dev分支

git checkout –b branchName origin/branchName

3、不同的人对同一个分支的同一个文件的同一个地方进行修改提交分支,会报错

4、解决的办法也很简单,上面已经提示我们,先用git pull把最新的提交从origin/dev抓下来,然后在本地合并,解决冲突,再推送

5、git pull也失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接

git branch --set-upstream branchName origin/branchName
git pull

新建一个分支,与指定的远程分支建立追踪关系

git branch --track [branch] [remote-branch]

删除远程分支

git push origin --delete [branch-name]
git branch -dr [remote/branch]

推荐阅读