Git内容虽多,管理工程我只用这一篇!

目录

一、开局一个远程仓

1.1 本地安装Git

1.2 配置一番

1.3 据为己有

二、开局一个本地仓

2.1 查看一番

2.2 操作一番

一、开局一个远程仓

1.1 本地安装Git

下载地址: https://gitforwindows.org/

安装完成后,有Git GUI, Git bash, Git CMD;其实我们使用的是git  bash,命令行工具黑乎乎的窗口

看看你的版本

git --version

1.2 配置一番

$ git config --global user.name "xxx"
$ git config --global user.email "xxxxxx.com" //这里要和你远程仓使用的邮箱一致

接下来看看你配置好了没:

$ git config user.name 
$ git config user.email
$ git config --list

1.3 据为己有

先把它克隆到本地,这个比较简单

git clone git://hellojs-tw/git-101.git //意思一下,没这个git

这时让你输入密码,完事之后在你的文件夹下有个.gt的隐藏文件夹

二、开局一个本地仓

2.1 查看一番

2.10查看我在哪里, 我所在的分支叫什么名字(你可以理解git里面都是分支),我之前都干了啥

git log  //查看提交快照

git log --graph  //查看分支型历史记录

git log --graph --oneline --decorate --all //分叉历史

git log -(n) //查看最近n次提交记录

2.11查看我之后有哪些分支

git branch --all //查看本地分支列表 ,以及当前所处分支

git remote show origin   //查看远程分支列表

2.12我之前做了哪些重要的事

git tag   //按照字母顺序列出所有标签

2.13我要去哪里

git checkout master   //我要切换到master分支,此时有个Head指针一起过来

/*切到某个提交*/
git checkout commit_id(xxxxxxxxxxxxxxxxx) //切到某个提交
//或者使用
git reset --hard commit_id    //退到/进到 指定commit_id
git reset --hard HEAD^  //回到最新的一次提交
//回退
git checkout master

        远程仓库名字 “origin” 与分支名字 “master” 一样,在 Git 中并没有任何特别的含义一样,同时“master”是当你运行git init时默认的起始分支名字,原因仅仅是它的广泛使用,“origin” 是当你运行 git clone 时默认的远程仓库名字

(远程仓库名)/(分支名) 这样的形式表示远程分支。

origin 并不是指得是远程的仓库,而是指得是远程仓库在本地的一个指针(这个指针有可能过时的)。当我们使用merge 的时候,我们进行合并的时候只是上一次fetch 从远程拿到的版本。不是远程仓库的最新版本。所以在上库之前记得git reset --hard //重置本地代码,清除所有差异, git  pull一下消除远程仓与本地仓的差异,实现同步以避免merge冲突。

理解orgin 或者 orgin/master 这个只是远程仓库在本地仓库的一个指针。我们可以使用 git fetch 命令来进行更新。所以在进行merge 的时候 不要忘了先进行git fetch 进行更新到最新的远程仓库。

什么是合并冲突?

如果两个人同时更改了同一个文件的同一行代码,或者一个人改动了那些被另一个人删除了的代码,Git 就不能简单地确定到底谁的改动才是正确的。这时 Git 会把这些地方标记为一个冲突,你必须首先解决掉这些冲突,然后再继续你的工作。

https://www.git-tower.com/learn/git/ebook/cn/command-line/advanced-topics/merge-conflicts

什么是index?

git add 命令将内容从工作目录添加到暂存区(或称为索引(index)区),以备下次提交;可以理解为暂存区指针。

2.14我来这里干什么

git branch b1  //我创建了一个分支b1

git checkout -b b2 //我新建了分支b2,我来到b2分支了

2.15 我看看我之前有没有动这个工程,动了哪些东西

git status  //查看修改了哪些文件,有没有放在暂存区,等待我commit

git status --short //文件状态的简单了解, 最后这些都是你自己修改的文件,以便于用beCompare

git diff  //查看没暂存,已经修改的内容

git diff --cached  //查看已暂存,待commit的内容

git ls-files //查看暂存文件中的信息

git rm --cached +文件名  //用于将文件移除暂存区

2.2 操作一番

2.21操作流程

先看一下git的工作流程(git-101:https://github.com/hellojs-tw/git-101

 

2.22 git pull vs git fetch

git fetch命令与一个远程的仓库交互,并且将远程仓库中有但是在当前仓库的没有的所有信息拉取下来然后
存储在你本地数据库中。

git pull 命令来自动的抓取然后合并远程分支到当前分支。

//git fetch [remote-name] //git fetch只会将本地库所关联的远程库的commit id更新至最新
//-------method 1-------------
git fetch origin master        //从远程仓库 抓取master分支,但是不会merge
git log -p master origin/master   //比较本地master分支与远程master分支的区别
git merge origin/master  //合并远程分支到本地

//-------method 2-------------
git fetch origin master:tmp
git diff tmp 
git merge tmp

//-------method 3-------------
//git pull会将本地库更新至远程库的最新状态
git pull  origin master//相当于是从远程获取最新版本并merge到本地
git pull <远程主机名> <远程分支名>:<本地分支名>
git pull origin next:master //取回origin主机的next分支,与本地的master分支合并

git fetch更安全一些,在git  merge前,我们可以查看更新情况,然后再决定是否合并。

2.23 git add 

git add hello.cpp //将文件添加到暂存区域,以便 git commit

git add *.cpp        //特定文件

git add ./*       //所有修改文件

git add hello/dir/     //特定文件夹下所有修改

tips: 如果你修改了一个文件,然后git add 上去了,没有进行commit ,过了一段时间后你又一次修改了改文件,git status发现同一个文件出现在未暂存区域和暂存区域。其实git只是暂存了你运行git add命令时的版本,所以当运行了git add之后又作了修订的文件,需要重新运行git add把最新的版本重新暂存起来

2.24 git commit -m

git commit        //自动弹出vim编辑器,添加提交信息

git commit -m "add some advanced features" // 添加提交信息

//------------撤销exam----------
git commit --amend    //紧接着git commit之后的话,仅修改提交信息,然后提交
//你提交后发现忘记了暂存某些需要修改的文件
git commit -m 'initial commit'
git add forgotten_file
git commit --amend

当进行commit时,必须要生成一个Change-Id,否则,push到gerrit服务器时,会收到一个错误提醒

2.25 git reset

//取消暂存的文件
git add * //暂存修改的文件
git status //查看修改后的文件
git reset Head <file>  //取消已经暂存的内容

//撤销对文件的修改
git add * //暂存修改的文件
git status //查看修改后的文件

git checkout --<file> //在未暂存区撤销之前做的所有修改

git reset HEAD^  //针对那个提交的混合重置,实际上将撤销那次提交并将修改的文件置为未暂存状态

git reset详解:https://www.jianshu.com/p/cbd5cd504f14

2.26 git rm

git rm  file //从跟踪清单中删除某个文件

git rm -f file //从暂存区删除某个文件

git rm --cached file  //仅从跟踪清单中移除,但是工作区中仍存在

2.27 git tag

//Git 可以给历史中的某个提交打上一个标签,以示重要
git tag   v1.4 //轻量级标签,像一个不会改变的分支,只是一个特定提交的引用

//附注标签事git数据库一个完整对象,可以包含打标签者的名字、邮件等
git tag -a v1.4 -m 'author, date,email' //最简单的方式运行tag时加上 -a选项

git show v1.4 //查看标签信息

2.28 git push

git push [remote-name]  [branch-name]

git push origin master   //将master分支推送到origin服务器

2.29 git  push origin HEAD:refs/for/Develop

向远程仓库Develop分支提交代码,并且找人review

这里就需要使用到gerit: https://www.cnblogs.com/chenpingzhao/p/9337117.html  ,   详情请查看具体攻略

参考:

git命令大全: http://www.manongjc.com/detail/8-lcxxnqhqhojqqyf.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值