git命令入门

一、github的工作流
我们的本地仓库由git维护的三棵"树"组成。第一个是我们的工作目录,他持有实际文件;第二个是
缓存区,它像个缓存区域,临时保存你的改动;最后是HEAD,指向你最近一次提交后的结果。
    1.1、创建公钥(本地仓库与远程仓库建立连接使用的凭证)
    ssh-keygen -t rsa -C “你的邮箱” 创建连接公钥

    1.2、设置git的用户名和邮箱(提交代码时候会显示这个用户名)
    git config --global user.name "youname" 
    git config --global user.email "youeamil@email.com"
    
    1.3、查看当前仓库配置信息
    git config --list
二、常用命令
1、git init
初始化一个本地的空git仓库

2、git log
查看本地git日志

    2.1、git log remotes/origin/远程分支名
    查看远程仓库git日志

3、git clone

    3.1、复制一个远程仓库的版本
    git clone 仓库地址

    3.2、克隆指定分支下得代码
    git clone -b 分支名  仓库地址

4、git status
查看仓库的状态。工作树和仓库再被操作的过程中,状态会不断发生变化。

3、添加到缓存区
git add <filename> 
git add *  

4、提交改动到本地仓库
git commit -m "代码提交的说明信息"

5、同步本地仓库到远程github仓库
git push -u origin master(master换成你想要推送的任何分支)

git push --force origin master 强制推送到远程(一般用于版本回退后的push)

6、在未克隆现有仓库时,将现有的仓库连接到某个远程服务器,如此就能够将你的改动推送到所添
加的服务器上去了。
git remote add origin <server>

7、branch(分支)
查看本地分支
git branch

查看所有分支
git branch -a

创建名为"feature_x"的本地分支,并切换过去:
git checkout -b feature_x

以远程仓库的dev分支为副本,创建本地分支dev
git checkout -b dev origin/dev

切换回主分支
git checkout master

删除本地分支
git branch -d feature_x

删除远程分支
git push origin --delete 分支名

git push origin :分支名

将分支推送到远端仓库(如果不推送到远端仓库,该分支别人是看不见的)
git push origin <branch>

8、更新本地仓库至最新改动
git pull

9、合并其他分支到自己的当前分支
git merge <branch>

10、自动合并改动失败时,会导致文件冲突(conflicts),这时需要人工手动合并这些冲突。改完以后,执行如下命令以将它们标记为合并成功:
git add <filename>

11、在合并改动之前,也可以使用如下命令查看:
git diff <source_branch> <target_branch> ——查看更改前后的差别

a、查看工作树(当前的workspace)和暂存区(已经add了)的差别
git diff

b、查看工作树和最新提交(已经commit了)的差别
git diff HEAD

tips: 在执行git commit命令之前先执行git diff HEAD命令,查看本次提交与上次提交之间有什么差别,等确认完毕后再进行提交。这里的HEAD是指向当前分支中最新一次提交的指针。

12、git checkout -- 文件名
还原本地修改;把file文件在工作区的修改全部撤销,这里有两种情况: 一种是file自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态; 一种是file已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。 命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令;

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

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

git checkout .(注意这里有个英文状态下的点符号) 撤销所有未add的修改

13、git reset
 
    13.1、git reset --hard commit_id(通过git log可以得到commit_id相关信息,如果本地有提交的                        
    话)
    完成撤销,同时将代码恢复到前一commit_id 对应的版本。

    13.2、git reset commit_id(commit id前6位即可) 
    完成Commit命令的撤销,但是不对代码修改进行撤销,可以直接通过git commit 重新提交对本地代码的修改。
    
    13.3、如果你想丢弃你所有的本地改动与提交,可以到服务器上获取最新的版本并将你本地主分支指向到它:
    获取服务器上最新的版本
   
    git reset --hard origin/master

14、git stash save '这里是说明文字'

保存当前工作状态(可以理解为游戏存档);

场景一: 想切换分支,但是你还不想提交你正在进行中的工作;所以你储藏这些变更。为了往堆栈推送一个新的储藏,只要运行 git stash;

    14.1、查看已保存的工作进度(查看游戏所有的存档记录)

    git stash list

    14.2、读取工作进度(读取游戏存档)

    git stash apply

    读取指定名字的进度

    git stash apply(2) 

场景2: 远程的仓库已经修改了文件b,本地的仓库也修改了文件b,此时文件b在本地仓库和远程仓库中不是同一个版本了,这时候,我使用pull,会报错: Your local changes would be overwritten by merge. Commit, stash or revert them to proceed. 我的解决方式: 先git stash change:保存本地当前工作进度; 然后,git pull: 获取远程仓库最新代码; 最后,git stash apply:读取本地工作进度; 最后,commit 和push。ok; 这个就像我们玩游戏一样,玩到一半了,保存游戏进度,下次打开游戏,再读取进度 
 

5、文件的三种状态

已提交(committed),已修改(modified)和已暂存(staged)。已提交表示该文件已经被安全地保存在本地数据库 中了;已修改表示修改了某个文件,但还没有提交保存;

已暂存表示把已修改的文件放在下次提交时要保存的清单中。

 

6、工作目录,暂存区域,以及本地仓库

每个项目都有一个 Git 目录(译注:如果 git clone 出来的话,就是其中 .git 的目录;如果git clone --bare 的话,新建的目录本身就是 Git目录。),它是 Git 用来保存元数据和对象数据库的地方。该目录非常重要,每次克隆镜像仓库的时候,实际拷贝的就是这个目录里面的数据。

从项目中取出某个版本的所有文件和目录,用以开始后续工作的叫做工作目录。这些文件实际上都是从 Git 目录中的压缩对象数据库中提取出来的,接下来就可以在工作目录中对这些文件进行编辑。

所谓的暂存区域只不过是个简单的文件,一般都放在 Git 目录中。有时候人们会把这个文件叫做索引文件,不过标准说法还是叫暂存区域。

基本的 Git 工作流程如下:

1. 在工作目录中修改某些文件。

2. 对修改后的文件进行快照,然后保存到暂存区域。

3. 提交更新,将保存在暂存区域的文件快照永久转储到 Git 目录中。

15、git fetch

git fetch origin master
将本地主分支指向服务器最新的版本

应用场景一:当团队其他同事新建了一个远程分支,在本地使用git branch -a却看不到时,使用git fetch取回所有分支的更新

,然后使用git branch -r 就可以看到同事新建的远程分支了

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啊哈前端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值