git 常用命令

Git 是一个开源的分布式版本控制系统
https://www.yiibai.com/git/git_status.html

0. git config

安装完 git 后,首先需要设置你的用户名称与邮件地址。 每一个 git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改。

git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"
// “xxx”是你自己设置的名字,xxx@vip.qq.com是你的邮箱地址。

注意:如果使用了 “--global”选项,那么该命令只需要运行一次,因为之后无论你在该系统上做任何事情,Git 都会使用那些信息。当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有“--global”选项的命令来配置。

检查配置信息:

如果想要检查你的配置,可以使用 git config --list 命令来列出所有 git 当时能找到的配置。
你可以通过输入 git config : 来检查 git 的某一项配置

获取帮助:使用git时需要获取帮助,有三种方法可以找到git命令的使用手册:

git help <verb>
git <verb> --help
man git-<verb>

// 例如:如想要获得config命令的手册,可执行:
git help config

生成 SSH public key:

A. 进入~/.ssh目录,看SSH Key是否存在,如果有文件id_rsa.pub 或 id_dsa.pub说明存在,则直接进入下一步
B. 如果SSH Key不存在,则需要生成新的SSH Key
在命令行中输入ssh-keygen -t rsa -C "your_email@example.com"
直接回车使用默认路径即可。
C. 终端会提示:输入passphrase(本步骤也可回车跳过)
D. 将新生成的key添加到ssh-agent中:
终端执行 eval "$(ssh-agent -s)"
        >> Agent pid 59566
终端执行 ssh-add ~/.ssh/id_rsa

将SSH Key添加到igerrit上面:

打开/home/.ssh/id_rsa.pub  文件,里面的信息就是SSH Key。
把SSH Key拷贝出来!不要拷贝最后面的邮箱。
网页登录igerrit
Settings>SSH Public Keys Tab中,选择Add key,把上面SSH Key粘贴上去保存即可。

配置Hosts:

在终端执行命令:  sudo vi /etc/hosts
在 hosts文件里面配置下面IP
xxx.xxx.x.xxx   igerrit

1. git log

git log           ——————查看提交记录
eg:
commit 0ca83c4403cfb1e5ddaaa6b672bd00d448fa8c97 ———这是commit ID,可以根据它搜索对应的提交
Author: xxx
Date:   Fri Jul 5 16:14:56 2019 +0800

2. git reset

git reset --hard  xxx(commit ID)           // 将本地代码回到某一次的提交

这个时候,发现回退版本错了,那么就用git reflog查看提交记录

git reflog

f368015 HEAD@{0}: reset: moving to f36801544670e00b2f59a28e19017d2786c4085e
def5ade HEAD@{1}: reset: moving to def5ade (上一次reset位置的前一个)
f368015 HEAD@{2}: reset: moving to f36801544670e00b2f59a28e19017d2786c4085e
def5ade HEAD@{3}: commit: add data to 1.txt
f368015 HEAD@{4}: commit (initial): init 1.txt

恢复
git reset --hard def5ade

git reset --soft xxx        // 回退一个版本,不清空暂存区,将已提交的内容恢复到暂存区,不影响原来本地的文件(未提交的也不受影响) 。这种针对已经add但是没有push的代码恢复到本地未提交的状态的方法
git reset HEAD //取消已缓存的内容
// eg:
// 修改文件A,使用git add将文件A提交到暂存区,执行git reset HEAD后,该变更变成尚未暂存状态,已commit的文件不受影响

--soft参数

//将仓库回退到commit ID所指的版本,
/* --soft参数的作用:
1.不会清空暂存区(已add的)
2.不会清空本地修改内容(未add的)
3.已commit的会保存到暂存区
*/
git reset --soft xxx(commit ID)

--hard参数

//将仓库回退到commit ID所指的版本,撤销工作区中所有未提交的修改内容,并删除之前的所有信息提交
git reset --hard xxx(commit ID)

3. git clean

想批量删除branch中新加的文件(untracked files),,git reset --hard不行

首先确认要删除的文件
git clean -fd -n

git clean -fd  // 其中-f表示文件 -d表示目录, 如果还要删除.gitignore中的文件那么再加上-x (-x对我来说没用)

4. git status

git status 命令用于显示工作目录和暂存区的状态。使用此命令能看到那些修改被暂存到了,哪些没有,哪些文件没有被Git tracked到。
git status不显示已经commit到项目历史中去的信息。看项目历史的信息要使用git log

5. git checkout

git checkout:切换分支
用git branch --all 查看所有服务器中的分支,以及本地的分支

remotes/origin/xx1
remotes/origin/xx2
remotes/origin/xx3

在本地创建一个新的分支,对应远程中remotes/origin/xx1分支
git checkout -b xxx1 remotes/origin/xx1

查看本地的分支git branch
*  xxx1
    xxx2

将本地分支由xxx1切换成xxx2
git checkout xxx2


git checkout -B <branch>
这个命令,可以强制创建新的分支,为什么加-B呢?
如果当前仓库中,已经存在一个跟你新建分支同名的分支,
那么使用普通的git checkout -b <branch>这个命令,是会报错的,且同名分支无法创建。
如果使用-B参数,那么就可以强制创建新的分支,并会覆盖掉原来的分支。

6. git branch

git branch --all      // 查看所有分支
git branch              // 不带参数:列出本地已经存在的分支,并且在当前分支的前面用"*"标记
git branch -d branch1 branch2   // 删除分支1和2

git branch -v //显示当前分支对应的远程分支

7. git add

我们有一个仓库,但什么也没有,可以使用add命令添加文件。

git add filename1
git add filename2
…
也可以
git add filename1 filename2 …

8. git commit

git commit: 提交版本
现在我们已经添加了这些文件,我们希望它们能够真正被保存在Git仓库。
为此,我们将它们提交到仓库。
git commit -m "Adding files"

如果您不使用-m,会出现编辑器来让你写自己的注释信息。
当我们修改了很多文件,而不想每一个都add,想commit自动来提交本地修改,我们可以使用-a标识。
git commit -a -m "Changed some files"
git commit 命令的-a选项可将所有被修改或者已删除的且已经被git管理的文档提交到仓库中。
千万注意,-a不会造成新文件被提交,只能修改。

**追加提交:**
git commit --amend --no-edit 会保留上次的提交信息

9. git push

现在我们修改之后可以进行推送到服务器。
remotes/origin/demo     // 远程分支
git push origin demo1:refs/for/demo   // 本地分支名叫demo1
refs/for/[brach] 需要经过code review之后才可以提交,而refs/heads/[beanch]不需要code review。

10. git clone

我们先从服务器克隆一个库
git clone ssh://example.com/~/www/project.git

11. git pull

git pull:取回更新
如果您已经按上面的进行push,下面命令表示,当前分支自动与唯一一个追踪分支进行合并。

12. git diff

git diff filename //查看文件内容的变化

13. git gui

git gui // git可视化工具

14. git stash

提交有冲突,分支有问题
git reset —hard
git clean -fd
git reset —soft ID(上一次的)

然后git status看一看这一次的
git stash

git pull 
git stash apply 解决冲突再提交

15. git init

新建一个文件夹,然后git init,可以创建一个git仓库
然后git add。。把新文件放进去可以看差分

16. 提交冲突

Commit后提交有冲突解决

git log

>> commit xxxx1   (commitID)   //当前错误提交的commit
>> commit xxxx2

git reset xxxx2   
>   等价于
>  1. git reset —soft xxxx2    (将commit取消)
>  2. git reset HEAD. (将add的缓存取消)
 

git add xx
git checkout .     (把本地有修改的全都还原)
git clean -fd
git reset .          (重置后取消暂存的变更)
git stash   (缓存)
git pull
git stash pop
git add .
git commit -m “”
git push
posted on 2020-04-15 21:27  JJ_S  阅读(185)  评论(0编辑  收藏  举报