你应该知道的那些 GIT 命令

本文参考廖雪峰Git教程

一、常用命令

1. ADD AND COMMIT

  • git init //初始化git

  • git add ./filename //提交到版本库放入暂存

  • git add * //效果同 git add all

  • git add -A //暂存所有的文件,包括新增加的、修改的和删除的文件。

  • git add . //暂存新增加的和修改的文件,不包括已删除的文件。即当前目录下所有文件。

  • git add -u //暂存修改的和删除的文件,不包括新增加的文件。

  • git add -i //交互式添加文件到暂存区。

  • git add -p //暂存文件的一部分。

  • git commit -m “备注” //提交到版本库

  • git commit -am “本次提交说明” //自动把暂存所有跟踪过的文件一并提交,从而跳过 git add 步骤,参数 -am 也可写成 -a -m。

  • git commit --amend //重新提交

2. DIFF AND SHOW

  • git status //查看文件状态

  • git status -s 或 git status --short //状态简览

  • git diff //查看工作区中的修改。

  • git diff --staged 或 git diff --cached //查看暂存区中的修改。

  • git diff //比较两次 commit 之间的差异。

  • git diff //在两个 branch 之间比较。

  • git diff filename //查看指定文件具体修改了哪些内容

  • git diff HEAD – filename //命令可以查看工作区和版本库里面最新版本的区别

  • git show //查看最后一个 commit 的修改。

  • git show HEAD~3 //查看倒数第四个 commit 的修改

3. remote

  • git remote add origin “远程仓库地址” //关联远端仓库

  • git remote rm origin //删除远端仓库关联

  • git remote -v //查看已关联远端库

  • git push -u origin master //提交到远端仓库 第一次以后用:git push origin master

      由于远程库是空的,我们第一次推送master分支时,加上了-u参数,
      Git不但会把本地的master分支内容推送的远程新的master分支,
      还会把本地的master分支和远程的master分支关联起来,
      在以后的推送或者拉取时就可以简化命令。
    

4. reset & log

  • git reset --hard HEAD^ //回退版本 HEAD HEAD^ HEAD^^ HEAD~100

  • git reset --hard 版本号(十六进制一大串的前五位)

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

    • HEAD严格来说不是指向提交,而是指向master
    • master才是指向提交的,所以,HEAD指向的就是当前分支。
  • git log //查看记录 (按q退出)

  • git reflog//记录每次命令查找id

  • git log -pretty=oneline
    一大串类似1094adb…的是commit id(版本号)

  • git log --oneline

5. Others

  • git rm filename //删除文件
  • cat filename//查看文件内容
    • VIM 模式中,修改完之后按esc键退出编辑状态,再按大写ZZ就可以保存退出vim编辑器

二、分支管理

6. 创建与merge(合并)分支

  • git branch //查看分支

  • git branch -a 查看远程分支和本地分支

  • git branch -v 查看各个分支最后一个提交信息

  • git branch --merged 查看哪些分支已经合并入当前分支

  • git branch //创建分支

  • git checkout //切换分支

  • git checkout -b //创建+切换分支

  • git merge //合并某分支到当前分支

  • git branch -d //删除(本地)分支

  • git branch -D 强行本地删除

  • git push origin --delete 分支名(remotes/origin/分支名):删除远程分支

  • git log --graph命令可以看到分支合并图。

  • git删除远程分支

      1 $ git branch -r   //查看远程库分支
      2 $ git branch -r -d origin/branchname  //删除
      3 $ git push origin :branchname  //推送   :branchName 之间没有空格
    

7. 解决冲突

当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。

8. 分支管理

  • $ git merge --no-ff -m “merge with no-ff” dev

    • 合并时,如果可以,默认会选择 ‘fast forward’ 模式,但会丢失分支信息
      –no-ff参数,表示禁用Fast forward

    • 因本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。

  • 分支策略

    • master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
    • 干活都在dev分支上,dev分支是不稳定的

2.4 Bug 分支
每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。
Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:
$ git stash
Saved working directory and index state WIP on dev: f52c633 add merge
用git stash list命令查看工作现场存在哪
恢复方法:
一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop stash@{0}来删除;stash list就查看不到
另一种方式是用git stash pop,恢复的同时把stash内容也删了
可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:$ git stash apply stash@{0}

2.5 Feature 分支
开发一个新feature,最好新建一个分支
丢弃一个没有被合并过的分支,可以通过git branch -D 强行本地删除

2.6 多人协作
要查看远程库的信息,用git remote
用git remote -v显示更详细的信息
推送分支
git push origin master 推送分支,就是把该分支上的所有本地提交推送到远程库
master(主分支)与dev(开发分支)需要推送,bug与feature分支不需要推送
抓取分支
从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;
从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

2.7 Rebase
特点:把分叉的提交历史“整理”成一条直线,看上去更直观。
缺点是本地的分叉提交已经被修改过了
–pretty — 使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)
–abbrev-commit — 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。
$ git log --graph --pretty=oneline --abbrev-commit //找到历史提交的commit id
效果* 582d922 (HEAD -> master) add author
* 8875536 add comment
* d1be385 (origin/master) init hello
* e5e69f1 Merge branch ‘dev’
|\
| * 57c53ab (origin/dev, dev) fix env conflict
| |\
| | * 7a5e5dd add env
| * | 7bd91f1 add new env

  1. Tag Manage
    3.1 Creating Tag
    $ git tag v1.0 //可以打一个名为 v1.0的新标签
    $ git tag //查看所有标签
    $ git tag v0.9 f52c633 //为 commit id 为 f52c633 的提交版本创建标签v0.9
    $ git log --graph --pretty=oneline --abbrev-commit //找到历史提交的commit id
    $ git show 查看标签信息
    $ git tag -a v0.1 -m “version 0.1 released” 1094adb //-a指定标签名,-m指定说明文字

3.2 Operating Tag
命令git push origin 可以推送一个本地标签;

命令git push origin --tags可以推送全部未推送过的本地标签;

命令git tag -d 可以删除一个本地标签;

命令git push origin :refs/tags/可以删除一个远程标签。

  1. 配置别名
    $ git config --global alias.st status //告诉Git,以后st就表示status
    –global参数是全局参数,对当前用户生效所有Git仓库下都有用。位于用户主目录下的一个隐藏文件.gitconfig
    不加–global 与–system,只对当前仓库起作用。位于.git/config文件中
    –system ,将会对所有的用户生效 位于./etc/gitconfig
    删除:别名就在[alias]后面,要删除别名,直接把对应的行删掉即可
    $ cat ~/.gitconfig //查看已经配置的所有别名

  2. 多人协作详解
    github 创建 repository → settings → collaborators
    → 输入要加入的 partner 的用户名 → add collaborator
    系统发送邮件至 partner 邮箱,对方接受后即可
    同理,可被对方 add collaborator
    从对方pull & push branch
    在本地新建文件夹(建议与要 pull 的 repository 名一致)
    进入文件夹,右键 Git Bash Here
    初始化 git init
    关联远程库 git remote add origin git@github.com:用户名/库名
    查看远程库 git remote -v
    拉取master分支 git pull origin master
    创建dev分支 git checkout -b dev
    修改分支并提交
    git add .
    git commit -m"dedcribe"
    推到远程库 git push origin dev

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值