Git常用操作

前言:

先来一图,方便查询。下面就是基本上囊括常用的git命令,可以当做速查表
在这里插入图片描述



六个常用命令

(继续上个图,这个图记住基本工作就没啥问题。)
在这里插入图片描述

Git add 命令

git add . :监控工作区的状态树,会把工作时的所有变化提交到暂存区,这里面包括文件内容修改(modified)以及新文件(new),但唯独不包括被删除的文件;

git add -u/–update :只是监控已经被add的文件(tracked file),会将被修改的文件提交到暂存区。add -u 不会提交新文件(untracked file);

git add -A/–all :上面两个功能的合集

 git add . 保存新的添加和修改,但是不包括删除
 git add -u 保存修改和删除,但是不包括新建文件。
 git add -A 保存所有的修改       //即保存上述两个操作




git init
echo Change me > change-me
echo Delete me > delete-me
git add change-me delete-me
git commit -m initial
 
echo OK >> change-me
rm delete-me
echo Add me > add-me
 
git status
# Changed but not updated:
#   modified:   change-me
#   deleted:    delete-me
# Untracked files:
#   add-me
 
git add .
git status
 
# Changes to be committed:
#   new file:   add-me
#   modified:   change-me
# Changed but not updated:
#   deleted:    delete-me
 
git reset
 
git add -u
git status
 
# Changes to be committed:
#   modified:   change-me
#   deleted:    delete-me
# Untracked files:
#   add-me
 
git reset
 
git add -A
git status
 
# Changes to be committed:
#   new file:   add-me
#   modified:   change-me
#   deleted:    delete-me

引用此处


全局配置账号信息:

git config --global user.email youremail

git config --global user.user yourname

Git commit 命令

将暂存区内容添加到本地仓库中。

git commit  [这里可以写指定文件] -m [message]
//[message] 可以是一些备注信息

git commit 
//直接这样会出现文本编辑器给你编辑内容

git commit -a 
//-a 参数设置修改文件后不需要执行 git add 命令,直接来提交
//提交流程一般就是git add  / git commit 这样,也可以快捷


git commit --amend   //这个是在 commit -m之后想要修改注释的操作(未push上去时操作才有用)

Git init 命令

用于在目录中创建新的 Git 仓库。

//在目录中执行 git init 就可以创建一个 Git 仓库了。
git init 
//再用ls -al  就会出现。git文件,这个文件主要配置了一些参数
//当然,好像也可以直接git clone ,这样就不要git  init

Git push 命令

用于将本地分支的更新,推送到远程主机。

git push <远程主机名> <本地分支名>:<远程分支名>

git push <远程主机名> <本地分支名>
//本地分支名与远程分支名相同,则可以省略冒号:


//删除远端分支
git push origin :master   等同于 git push origin --delete master
//就是把本地的空分支推到远端的master分支,删除远端master分支


//建立远端分支
git push origin master:test
//就跟普通的push一样,只不过远端会建立test分支(如果该分支不存在的话)



git push -u origin master
//如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push

git push origin HEAD:master       
//HEAD代表你现在所指向的分支,比如你git clone下来一个项目,里面有很多分支,你切换到别的分支,然后修改后向提交到别的分支
//那么如果你再push,是没有用的,会出现这种情况
//$ git push
//fatal: You are not currently on a branch.
//To push the history leading to the current (detached HEAD)
//state now, use

//    git push origin HEAD:<name-of-remote-branch>

                             


Git pull 命令

用于从远程获取代码并合并本地的版本。

git pull <远程主机名> <远程分支名>:<本地分支名>



 git pull origin master
//远程分支(master)要与当前分支合并,则冒号后面的部分可以省略。上面命令可以简写:

git clone
拷贝一个 Git 仓库到本地,让自己能够查看该项目,或者进行修改。

git clone [url]
//clone整个仓库

//clone单个分支
git clone git_仓库_url    //获取全部branch内容
git clone -b 远端分支名 git_仓库_url //指定分支
git clone -b 远端分支名 --single--branch git_仓库_url    //获取指定分支的代码
git clone --depth 10 git_仓库_url    //只会获取最近 xx(10条提交记录的)代码,默认是master分支, 如果想要指定分支,可以结合 -b --single--branch 使用!



Git 建立、切换分支 命令

 
列出所有本地分支
git branch
 
列出所有远程分支
git branch -r
 
列出所有本地分支和远程分支
git branch -a
 
新建一个分支,但依然停留在当前分支
git branch [branch-name]
 
新建一个分支,并切换到该分支
git checkout -b [branch]
 
新建一个分支,与指定的远程分支建立追踪关系
git branch --track [branch] [remote-branch]

建立追踪关系,在现有分支与指定的远程分支之间
git branch --set-upstream [branch] [remote-branch]
 
合并指定分支到当前分支
git merge [branch]
 
选择一个commit,合并进当前分支
git cherry-pick [commit]
 
删除分支
git branch -d [branch-name]
 

Git remote 命令

跟远端的仓库进行连接

git init
vim README.md
git add README.md
git commit -m "first commit"
git remote add origin url
git push -u origin master

上面的步骤适用于远程的仓库没什么文件,是个空的才行,如果已经有文件存在了,是不行的,当你git push是会出现下图情况:
在这里插入图片描述

解决方法:

方法1:强行将代码推到github仓库里面去(推荐,省时省力)
git push -f origin master:master		//直接强推,即利用强覆盖方式用你本地的代码替代github仓库内的内容
方法2:

出现(non-fast-forward)的根本原因是repository已经存在项目且不是你本人提交
(我知道是大概率你提交的,但是git只认地址),你commit的项目和远程repo不一样。
这时该怎么办呢?很简单,把远端项目拉回本地:

git pull

然而pull回来之后,你再push依旧会fail。 

原因是他们是两个不同的项目,要把两个不同的项目合并,不能简单的git pull。而是

git pull origin master:master  --allow-unrelated-histories

这条命令允许了不同项目的合并。 
好了,pull成功了。 
接下来

git push origin master:master


上述方法2来自此处,请点击!


Git撤销命令

git checkout [file]   
 //恢复暂存区的指定文件到工作区,他会把暂存区的文件覆盖到你原先的文件
 //就是我先git add  test.txt
 //然后我又在工作区该百年test.txt文件内容,此时git checkout test.txt,会把我更改的内容覆盖

 git checkout .    //恢复暂存区当前目录的所有文件到工作区

git checkout [commitid]    //恢复工作区到指定 commit



git reset [file]     //重置暂存区的指定文件,与上一次 commit 保持一致,但你的工作区文件是不变的,哪怕你修改了也是不变的,跟checkout是不一样的

git reset --hard     //重置暂存区与工作区,与上一次 commit 保持一致,这个可以达到git checkout的效果

git reset [commit]    //重置当前分支的指针为指定 commit,同时重置暂存区,但工作区不变

git reset --hard [commit]    //重置当前分支的HEAD为指定 commit,同时重置暂存区和工作区,与指定 commit 一致

git revert [commit]   //新建一个 commit,用于撤销指定 commit


Git stash 命令

git stash    //将未提交的变化放在储藏区   
git stash save "xxxx"  //增加标识字符串

git stash pop  //将储藏区的内容恢复到当前工作区,并删除

git stash pop  --index  stash@{$num}    //其中xxx可以通过git stash list 进行查看        --index  stash@{0}

git stash list  //查看放置在stash的内容,stash的性质有点像stack

git stash clear  // 删除所有缓存的 stash。

git stash drop  stash@{$num}    //移除stash里面的内容

git stash apply  stash@{0}  //应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即 stash@{0}

Git fetch 命令

 git fetch <远程主机名> //这个命令将某个远程主机的更新全部取回本地

如果只想取回特定分支的更新,可以指定分支名:

git fetch <远程主机名> <分支名> //注意之间有空格
最常见的命令如取回origin 主机的master 分支
git fetch origin master

取回更新后,会返回一个FETCH_HEAD ,指的是某个branch在服务器上的最新状态,我们可以在本地通过它查看刚取回的更新信息:

git log -p FETCH_HEAD
返回的信息包括更新的文件名,更新的作者和时间,以及更新的代码
然后我们可以通过这些信息来判断是否产生冲突,以确定是否将更新merge到当前分支。 

Git merge命令

假设现有分支develop、test。需要将test合并到develop分支。

首先git checkout develop。

git merge test
test分支会合并到develop,会有test分支提交信息,同时最后一条提交会是Merge branch 'test' into develop。

git merge test --no-commit
test分支会合并到develop,会有test分支提交信息,最后一条提交与test分支一致。

git  merge test --squash
test分支会合并到develop,没有test分支提交信息,需要自行git commit。

上面这段来自此处,链接:https://www.jianshu.com/p/c778e88fd57a


Git删除远程文件命令

命令模板:git rm -r --cached + 文件路径

输入命令如:

$ git rm -r --cached xxxx

输入上面命令会提示如下:说明删除成功

rm ‘xxx’

接下来git commit ----> git push


git 挺详细的博客,点击查阅!

Git讲解系列文章

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值