git 常用指令

Posted 啄木鸟伍迪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git 常用指令相关的知识,希望对你有一定的参考价值。

git bash 常用指令:

分支:

  • 创建新下分支                                     git branch branchName

  • 切换分支                                            git checkout branchName

  • 提交分支             git push origin branchName

  • 合并分支                                       git merge 分支名1 (把分支名1合并到当前分支)

  • 参数可以将每条日志的输出为一行    git log –oneline

  • 设置Tag的目的为了最新提交指向一个分支

  • 设置tag                                             git tag ‘tagName’ sha-1标记号

  • 标注tag                                             git tag -a “initial_commit” sha-1标记号

  • 查看tag                                           git tag    或者 git show tagName (eg git show v0)

  • 查看历史                                            git log –oneline –decorate –graph –all

  • 切换到tag分支                                  git checkout -b fix_tagName

  •  (eg.Git checkout fix_v0)切换到了fix_v0分支,该分支指向TAG

  • 保存暂存区                                 git stash save -a “satsh”

  • 查看暂存区文件:                       git stash list

  • 还原暂存区                                 git stash pop –index stash@0   (0为指向某个暂存区的内容)     

  • 清楚暂存区内容                          git stash drop stash@0

  • 清除所有                                     git stash clear

提交:

  • git status //查看当前代码状态 红色为未提交 绿色代表代码在缓存区
  • git add . //把所有修改的代码放到缓存区(可以从vscode)
  • git commit -m "修改注明" //提交代码 注明修改说明
  • git push origin (当前分支名) //提交到远程仓库里面 这时候可以去仓库里面看下(或者git push -f强制提交)

本地bas操作提交:

  1. 终端 cd 文件地址
  2. git init;   创建本地仓库
  3. git remote add origin https://github.com/zhangsiyao11/chat       http为你自己仓库的地址
  4. 如果出现错误: fatal: remote origin already exists 则执行以下语句:git remote rm origin;再执行git remote add origin https://github.com/zhangsiyao11/chat即可
  5. git pull origin master
  6. git add "文件名";  需要提交的文件  通常为 git add . 表示添加所有文件;
  7. git commit -m "文件名"  ;提交 
  8. 如果出现让你设置用户名和用户邮箱的提示,就按照提示上给的命令输入即可。后再次执行上面commit的命令。
  9. git push origin master

获取远程:

有两种方式:git fetch 和git pull

方式一:git fetch origin/分支名称:相当于是从远程获取最新版本到本地,不会自动merge,需要重新写merger 命令;

  使用方式 举例:

        git fetch origin/master  (从远程获取最新版本到本地)

        git merger origin/master   (把刚刚获取的信息 合并到当前文件中)

方式二:git pull origin/分支名称:相当于是从远程获取最新版本并merge到本地

 

git 工作区域图解

 

Git常用指令

git学习笔记

@(python)

git 命令这是git常用命令
init 建立git仓库
add 把文件添加到仓库
commit 把文件提交到仓库,将暂存区中的文件提交到master中
status 掌握仓库的状态,看到更改的,有没有提交
diff =differents变化
log 查看历史记录,谁,什么时候,改了什么
reset 回退
reflog 记录每一个命令
checkout – file 用版本库里的版本替换工作区的内容;-b 创建分支,并切换到分支
rm 删除
branch 查看当前分支 -d删除分支
merger 分支合并到当前分支分支上
stash 存储工作现场
stash list 工作现场列表
tag 打标签
远程库  
clone 克隆远程库
git remote -v 查看远程库的信息 -v详细信息
git push origin master 推送某个分支
状态 
Untracked 未添加过
Changes not staged for commit: 添加过,但是更改没有add
no tracking information 本地分支和远程分支的链接没有创建

添加文件方法

git add 【files】 //把文件添加到暂存区中 
git commit -m “description” //将暂存区中的所有内容提交到当前分支

版本回退

在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,往上一百个版本写成HEAD~100 
eg 
退回上一个版本

$ git reset –hard HEAD^ //或者写commit id 
HEAD is now at ea34578 add distributed

再次查看log,发现最后一次的更新已经没有了,那么如何更新回这一个版本呢,往上翻,找到上一次的版本号

$ git reset –hard 3628164 
HEAD is now at 3628164 append GPL

也可以这样

git reflog //会显示所有的历史操作

Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD从指向了另一个版本。

git工作原理

工作区就是真实电脑中的路径。版本库中包括,暂存区和master 
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

技术分享


如何去除不想add的文件

先把大量文件一次性add进来:

strong textgit add *.py 
然后你用git status查看,会有提示:

Changes to be committed: 
(use “git reset HEAD …” to unstage) 
new file: 1.py 
new file: 2.py 
new file: 3.py 
new file: 4.py 
要排除掉其中一个文件,用:

git reset HEAD 1.py 
这时再用git status看,1.py变成了untracked,剩下的就可以提交了。


撤销修改

撤销工作区中的更改

git checkout –file

如果修改前提交到暂存区,那么工作区的文件会恢复为暂存区中的版本,否则恢复到版本库中的版本。

撤销提交到暂存区的修改

git reset HEAD file

可以把暂存区的修改撤销掉(unstage),重新放回工作区

提交到版本库中回退

如果没有提交到远程库可以参见版本回退,用reset回退版本


远程仓库

链接远程仓库

第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

$ ssh-keygen -t rsa -C “[email protected]” 
cd ~ 
ls -a

找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。


1.按照git上的提示将本地库关联到远程 
2.关联后,使用命令git push -u origin master第一次推送 master分支的所有内容; 
3.此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;


拉取远程仓库

 git fetch [remote-name]

此命令会到远程仓库中拉取所有你本地仓库中还没有的数据。运行完成后,你就可以在本地访问该远程仓库中的所有分支,将其中某个分支合并到本地,或者只是取出某个分支,一探究竟。

克隆远程仓库

要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。

Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。


分支

分支是git十分重要的功能,当你在开发新功能(feature)时,最好新建一个分支。 
修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除; 
在多人协作时,分支也是十分有用的,master版本是稳定版本,如果因为一点一点的添加,会照成使用错误,所以,真正的开发可以建立到一个dev分支上,时机成熟了,再将更新推送到master上。

创建分支

创建一个Dev分支

git checkout -b dev

git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

$ git branch dev 
$ git checkout dev //切换分支 
Switched to branch ‘dev’

查看、合并、删除分支

git branch 查看当前分支

git merge dev

将当前分支合并到当前分支

git merge –no-ff -m “merge with no-ff” dev

添加了一个–no-of可以将分支中的提交历史也合并到另一个分支上

>***git branch -d dev*** 删除分支
  • 1

解决合并冲突

当两个分支同时编辑一个文件时,就会出现冲突,<<<<<<<,=======,>>>>>>>标记出不同分支的内容手动改源文件,改好后提交。

保存工作状态

>git stash
  • 1

处理完其他事情后,找到当时的工作状态

> git stash list //查看保存的工作状态
  • 1

恢复工作状态

>git stash apply //恢复工作区
>git stash drop //删除工作区
  • 1
  • 2

等同于上面的两个

>git stash pop  
  • 1

你可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:

>$ git stash apply [email protected]{0}
  • 1

多人协作

没太看懂,先占个坑。 
廖雪峰git教程-多人协作

推送本地分支到远程库

git push origin master

并不是所有的本地分支都要推送到远程的 
一般在多人协作中,有两个分支,一个master主分支、dev开发分支,开发人员要在开发分支上同步开发进度

查看远程库的信息

>git remote    // -v   详细信息
  • 1

在本地创建远程分支

 git checkout -b dev origin/dev
  • 1

标签管理

发布一个版本时,我们通常先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。

打一个标签

git tag v1.0

也可以用git tag 查看所有标签

给历史提交一个tag

git log --pretty=oneline --abbrev-commit 找到历史提交的commit id 然后打上就可以了

   git tag v0.9 6224937  //commit id

tag information

git show <tagname>

delete tag

git tag -d v0.1   //local

删除远程tag 
先删除本地的tag 
让后从远程删除

$ git push origin :refs/tags/v0.9

推送tag到远程

git push origin <tagname>    //only
git push origin --tags       //push all local tag

Fork

如何参与一个开源项目呢?比如人气极高的bootstrap项目,这是一个非常强大的CSS框架,你可以访问它的项目主页https://github.com/twbs/bootstrap,点“Fork”就在自己的账号下克隆了一个bootstrap仓库,然后,从自己的账号下clone

git clone [email protected]:michaelliao/bootstrap.git

一定要从自己的账号下clone仓库,这样你才能推送修改。如果从bootstrap的作者的仓库地址[email protected]:twbs/bootstrap.git克隆,因为没有权限,你将不能推送修改。

配置别名

用st代替dtatus 
廖雪峰—配置别名

$ git config --global alias.st status

以上是关于git 常用指令的主要内容,如果未能解决你的问题,请参考以下文章

大白话说GIT常用操作,常用指令git操作大全

git常用指令学习

Git常用指令总结

git 常用指令

git/github常用指令入门

Git常用的操作指令