Git 基本命令

1.git安装后设置《用户名》和《邮箱》;查看自身《用户名》和《邮箱》

//设置
$ git config --global user.name "yangkang" $ git config --global user.email "kang.yang@arvato.com" //查看 $ git config user.name yangkang $ git config user.email kang.yang@arvato.com

2.创建工作区间,初始化工作区

//查看当前路径
$ pwd
/c/Users/YANG295/Desktop

$ git init
Initialized empty Git repository in C:/Users/YANG295/Desktop/.git/

3.添加文件到缓存区,commit提交

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

git add -u :他仅监控已经被add的文件(即tracked file),他会将被修改的文件提交到暂存区。add -u 不会提交新文件(untracked file)。(git add --update的缩写)

git add -A :是上面两个功能的合集(git add --all的缩写)
//添加,可add 多个文件,一次commit提交
$ git add demo.txt
//提交
$ git commit -m "本次提交的描述"

4.查看git状态

//查看状态
$ git status

5.比较工作区修改前后文件,修改未add

$ git diff demo.txt

6.git查看日志log和reflog

//git reflog 可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)
$ git reflog
58b8ed8 (HEAD -> master) HEAD@{0}: commit: 测试修改文件查看区别
6c43baa (origin/master) HEAD@{1}: merge b1: Fast-forward

//git log 命令可以显示所有提交过的版本信息;可以加上参数  --pretty=oneline,只会显示版本号和提交时的备注信息
$ git log
commit 58b8ed8f78cd8d52281a28aec6602e03ba82b7a2 (HEAD -> master)
Author: yangkang <kang.yang@arvato.com>
Date:   Thu Nov 8 14:23:06 2018 +0800

    测试修改文件查看区别

$ git log --pretty=oneline
58b8ed8f78cd8d52281a28aec6602e03ba82b7a2 (HEAD -> master) 测试修改文件查看区别

7.git版本回退(需要reflog知晓commitid的前7位)注意是--hard

//$ git reflog 
58b8ed8 (HEAD -> master) HEAD@{0}: commit: 测试修改文件查看区别
6c43baa (origin/master) HEAD@{1}: merge b1: Fast-forward
a289a45 HEAD@{2}: checkout: moving from master to master
a289a45 HEAD@{3}: checkout: moving from b1 to master
6c43baa (origin/master) HEAD@{4}: commit: 创建分支并修改了index.html

//回退到commitid a289a45
$ git reset --hard a289a45
a289a45 (HEAD -> master) HEAD@{0}: reset: moving to a289a45
58b8ed8 HEAD@{1}: reset: moving to 58b8ed8
58b8ed8 HEAD@{2}: commit: 测试修改文件查看区别
6c43baa (origin/master) HEAD@{3}: merge b1: Fast-forward
a289a45 (HEAD -> master) HEAD@{4}: checkout: moving from master to master
a289a45 (HEAD -> master) HEAD@{5}: checkout: moving from b1 to master
6c43baa (origin/master) HEAD@{6}: commit: 创建分支并修改了index.html

8.取消工作区修改(实际上使用版本库文件替换)

$ git checkout --demo.txt

9.取消暂存区文件的修改;注意是HEAD

$ git reset HEAD demo.txt

10.删除版本库中文件

//git rm和git add都属于对暂存区的操作
$ git rm demo.txt

$ git commit -m 删除demo文本

11.添加远程仓库并push  拖下远程代码到问题pull

//添加远程仓库地址
$ git remote add origin http://www.gitlab.com/yangjingkang/test.git

//push 第一次提交,加入 -u参数
$ git push -u origin master
//拖下远程代码
git pull <远程主机名> <远程分支名>:<本地分支名>
eg:
    git pull origin master:brantest
    将远程主机origin的master分支拉取过来,与本地的brantest分支合并。

后面的冒号可以省略:
    git pull origin master


git pull命令的作用是:取回远程主机某个分支的更新,再与本地的指定分支合并。

一句话总结git pull和git fetch的区别:git pull = git fetch + git merge

12.从远程仓库克隆

//后面可再跟名字作为。新git库
$ git clone http://www.gitlab.com/yangjingkang/test.git newGit

13.创建新的分支

//创建并切换到分支
$ git checkout -b dev

//查看git下所有分支,*表示当前分支
$ git branch 
* dev
   master

//$ git checkout -b dev等于如下两条命令
$ git branch dev //创建分支 dev
$ git checkout dev //切换到 dev 分支

14.合并分支(合并前先切换回主分支master,才能进行合并)

//切换回主分支
$ git checkout master

$ git branch 
    dev
*  master

//将dev分支合并到主分支master
$ git merge dev

 15.删除分支

//删除dev分支
$ git branch -d dev 

16.解决冲突(主从分支对同一个文件同一处代码进行了修改并commit,合并时报failed;需手动调整重新提交)

17.查看分支合并图

$ git log --graph

18.分支策略

分支策略
实际开发原则如下:
1.master仅用来发布新版本(把dev分支合并到master,再发布新版本)
2.开发人员都在dev分支上干活,每个人都有自己的分支,定期向dev分支合并即可。

19.git stash 暂存当前编辑(必须把修改的文件git add后,才可以git stash;

     git stash 可用来暂存当前正在进行的工作, 比如想pull 最新代码, 又不想加新commit, 或者另外一种情况,为了fix 一个紧急的bug,  先stash, 使返回到自己上一个commit, 改完bug之后再stash pop, 继续原来的工作。)

//暂存
$ git stash
//查看保存清单
$ git stash list
//返回暂存
$ git stash pop

20.git 查看远程仓库信息

$ git remote
origin

21.推送分支(会推送到远端对应的分支上)

语法:$ git push <远程主机名> <本地分支名>:<远程分支名> 若省略远程分支,代表将本地当前分支推送到远端对应分支
git push origin master // 推送到远端的master
git push origin dev //推送到远端的dev
什么样的分支需要推送到远端?我认为凡是需要大家共享的分支就需要push到远端

22. 从远程仓库克隆

$ git clone git@github.com:jasondong-1/gitpractice.git //git clone 默认只会把远端的master克隆下来
$ git branch
* master 

 23.获取远端其他分支

$ git checkout -b dev origin/dev //现在有了对应的dev分支
$ git branch
* dev
  master

24.两人同时修改了同一份文件向远端push冲突的解决

$ git push origin dev
//git 建议push 之前先pull (拉取同步)

//或者是手动处理掉
//解决冲突后,重新add commit

 25.git打标签(人类可以识别的标志)

git tag v0.1 33dd7af //33dd7af是commit-id
或
$ git tag -a v0.2 -m "stable edition" e47dc70

查看 tag 
git tag

 26.操作标签

git push origin <tagname>可以推送一个本地标签;
git push origin --tags可以推送全部未推送过的本地标签;
git tag -d <tagname>可以删除一个本地标签;
git push origin :refs/tags/<tagname>可以删除一个远程标签。

 27..gitignore 可以忽略.gitignore 文件中的文件

复制代码
# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build
复制代码

 28.克隆当个分支项目

git clone -b lankou2 http://www.gitlab.com/CRM_PRODUCT/CODE/ec_product.git //clone lankou2分支

29.克隆多个分支项目

如果要clone所有分支,也可以这样解决这个问题:

  找一个干净目录,假设是 iview_project

cd iview_project //切换到指定目录
git clone https://github.com/iview/iview-admin.git //克隆项目

这样在 iview_project 目录下得到一个 iview-admin 子目录

cd iview-admin //切换到项目目录
git branch -a //列出所有分支名称如下: * 号表示当前分支
* dev 
remotes/origin/HEAD -> origin/dev
remotes/origin/desktop
remotes/origin/dev
remotes/origin/gh-pages
remotes/origin/master
remotes/origin/template


说明: origin/template, origin是远程仓库名,template是远程仓库的一个分之,由上结果可以看出,远程仓库origin还有desktop、dev、gh-pages、template、master等分支。

接下来,可以在本地新建分支并与远程仓库的分支进行关联了

git checkout -b template origin/template // 作用是checkout远程仓库origin的分支template,在本地起名为template分支,并切换到本地的template分支

git checkout -b desktop origin/desktop // 作用参见上一步解释
//第一次切换分支,就用上面命令,如果本地已经存在了对应的分支可以直接:

git checkout dev // 切换回dev分支,并开始开发。

//查看分支命令
git branch -a //查看所有分支

git branch -r //查看远程分支
原文地址:https://www.cnblogs.com/yangjingkang/p/9929409.html