Git常用操作

Posted tangg

tags:

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

前期准备

下载并安装Git

  • linux
sudo apt-get install git
  • win

下载应用程序,安装即可

设置用户名和email地址

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

创建版本库(本地)

初始化当前目录为Git仓库(本地)

//进入指定目录下
git init

add 并 commit 文件

git add readme.txt
//添加所有新增,或者有改动的文件
//git add .
git commit -m "wrote a readme file"

本地相关命令

git init
git add readme.txt
git add .

git commit -m "备注"

查看当前工作区的状况,是否有修改或者待提交的
git status

修改了readme但是还未add 或者 commit
查看做了什么修改
git diff readme.txt


查看历史的提交命令
git log
git log --pretty=oneline

查看git记录的每一次命令
git reflog

版本回退
git reset --hard HEAD^
git reset --hard HEAD^^
git reset --hard 1094a

所有的add操作,只是将文件添加进暂存区(stage)
在通过commit一次性提交



情况1
在工作区的文件中,增加了一些修改(并没有add和commit),但是没有被提交到暂存区
(可以先用git status查看文件的修改状态)
撤销在工作区做的任何修改
git checkout -- readme.txt

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

情况2
在文件中增加了一些内容,并且git add到了暂存区
可以用git status 查看状态
step1:
把暂存区的修改退回到工作区(切换为增加了修改,但是没有执行git add的状态)
git reset HEAD readme.txt
step2:
回到了情况1,把工作区的修改撤销

删除文件

  • 新建文件,并已经执行了add操作,提交到了暂存区

  • 手动将目录下的test.txt文件删除,执行git status 会发现技术图片

  • 确实要删除该文件

    如果只是执行了add 操作
    git rm test.txt
    
    若果还进行了commit,则还需要执行
    git commit -m "remove test.txt"
    
  • 如果是误删除

    用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”

     git checkout -- test.txt
    

远程仓库

建立起本地仓库和远程仓库的连接

本地Git仓库和Github仓库之间的传输是通过SSH加密

  • 使用命令生成密钥和公钥(自己的github账户密码)
ssh-keygen -t rsa -C "youremail@example.com"

在用户主目录里找到.ssh目录,
id_rsa是私钥,不能泄露出去,
id_rsa.pub是公钥

  • 将公钥添加到github网站个人账户

登陆GitHub,打开“Account settings”,“SSH Keys”

先有本地库,再同步到远程库

  • 再github上新建空白仓库,如learngit
  • 根据提示,在本地的learngit仓库下运行命令
git remote add origin git@github.com:【GitHub账户名】/learngit.git
  • 把本地库所有内容推送到远程库
    (第一次推送的时候使用以下命令)
git push -u origin master
  • 以后的推送至远程
git push origin master

先有远程库,再同步到本地

  • 在github上创建仓库,勾选自动创建README文件
  • 在本地适当目录下打开git bash,运行
git clone git@github.com:【github账户名】/【git仓库名】.git

分支管理

创建并切换到dev分支

git branch dev
git checkout dev

git branch

切换分支
git checkout master
git switch -c dev  创建并切换到新的分支
git switch master  切换到已有的分支

合并分支,价格指定的分支合并到当前分支
git merge dev

合并后删除分支
git branch -d dev

分支合并可能会有冲突,造成合并失败
合并失败后,查看文件中的内容,会用
<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1
标记出每个分支的修改

在文件中修改冲突,后,再add commit即可

查看分支合并图
git log --graph




  • 分支策略,禁用fast forword

强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息

git switch -c dev
git add readme.txt 
git commit -m "add merge"
git switch master
git merge --no-ff -m "merge with no-ff" dev

git log --graph

git branch

git branch -d dev

远程仓库覆盖本地

git远程分支覆盖本地分支

git fetch --all
git reset --hard origin/master (这里master要修改为对应的分支名)
git pull

从远程仓库拉取指定分支到本地

命令:

git clone -b develop XXX 

其中develop就是分支的名称

其他

用户名、账号密码设置

设置git软件绑定的用户名和邮箱账号

git设置全局和单个仓库账号和密码

Git全局配置和单个仓库的用户名邮箱配置

  1. 配置全局仓库的账号和密码
    git config --global user.name "userName"  //你的用户名
    git config --global user.email "email address" //你的邮箱地址
  1. 如果你的公司项目也放在git上面,为了不与个人账号的发生冲突,这时候需要给这个仓库单独设立账号和密码
    进入到这个仓库里面,使用下面命令
    git config user.name "userName"  //你的用户名
    git config user.email "email address" //你的邮箱地址
  1. 设置好账号和密码后
    git config --list   //查看git设置情况

已有本地仓库,将本地仓库关联远程仓库

如何将本地的一个新项目上传到GitHub上新建的仓库中去

本地已经是一个git仓库

  • 添加本地仓库与远程仓库的关联
git remote add origin https://gitee.com/tangg9646/tests.git
  • 查看本地仓库与远程仓库的关联
git remote -v
  • 取消本地仓库与远程仓库的关联
git remote remove origin
  • 如果初始化远程仓库的时候,生成了readme.md 需要先执行额外操作
git pull --rebase origin master
  • 将本地仓库push到远程仓库
第一次提交(远程仓库为空)
git push -u origin master
第二次上传
git push origin master

?

git每次pull或push都要输入用户名和密码解决方法

git config --global credential.helper store

这个命令是在本地生成一个账号密码文件,这样就不用每次都输入了(但是还得输入一次)

这个指令对于windows,linux都是通用的!!!

可以通过命令

cat ~/.git-credentials

进行查看!





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

VSCode自定义代码片段15——git命令操作一个完整流程

Git常用操作

git入门团队中git保管代码常用操作

Git常用操作

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

Git常用操作命令