前言
本文主要罗列一些工作中常用的 git 命令,希望这些命令能对您有所帮助。
本地与远程有突冲,想放弃本地修改
git reset --hard FETCH_HEAD
重新从远端拉取某个文件
git checkout a.c
撤消某次 add
git rm --cached <added_file_to_undo>
撤消某次 commit
git reset --soft commitID 只是删除了commitId之后的commit记录,但是代码改动仍然存在
git reset --hard commitID 彻底的回到CommitID13:39时候的版本,之后的改动不存在了
将本地修改先暂存起来
git stash 将本地修改暂存起来
git stash pop 弹出暂存的修改
查看有冲突的文件
git status -uno
不显示临时文件
在 .gitignore 中添加不想被 git staus 看到的文件或目录
暂时回滚到某版本
首先通过 git log查看你之前的提交码
git log | more
commit 4adb3f0ecd9dbc79bd09666d88f8c2520305c001
Author: xxxxxx
Date: Thu Jan 25 11:51:45 2018 +0800
摘取 commit 码的前 7位,执行下面的命令
git checkout 4adb3f0
git reset --hard 4adb3f0
回滚到主分支
git checkout master
服务端有更新,但你却 commit了你的代码
-
先拉取服务端代码
git pull
-
提交代码
git push
-
如果你在 dev分支,此时还要拉取master的代码
1. 先 切换到 master 分支git checkout master
2. 拉取代码
git pull
3. 重新切换到 dev 分支
git checkout dev
查看每次提交的文件列表
git log --stat | more
查看某些提交代码的变化
git show <commit id> [<filename>]
显示所有本地与远端分支
git branch -a
显示所有远程分支
git branch -r
显示远端地址
git remote -v
创建一个新分支
git checkout -b new_branch
git --set-upstream origin new_branch
git diff 不显示修改的内容
有些情况下,通过 git status
能查到某些文件有变化,但使用 git diff
却看不到修改的内容。可以使用下面的面试查看变化。
- 第一种方法
git diff --cached 文件名
- 或者
先将修改的文件重命名,然后执行下面的语句git reset HEAD
配置更好的 git diff 工具
在使用 git diff 时,常常发现有很多不方便的地方。因为git diff 默认使用 patch 方式展示代码的不同。如果想看修改后代码的上下文就比较麻烦了(比如代码 review)。
其实 git 已经提供了扩展功能。可经将它的默认 diff 工具修改为vimdiff。配置如下:
- 首先打开 git config 文件
vim ~/.gitconfig
- 增加配置项
[difftool]
prompt = false
[diff]
vimdiff
tool = vimdiff
[difftool "vimdiff"]
path = /usr/bin/vimdiff
打tag
//为git打tag, 第一次需要在前面加一个v
git tag "v1.0.0"
//将tag推送到远程仓库
git push --tags
git merge 每次都生成一次commit
git merge --no-ff
拉某个 tag
git checkout tag_name
查看某个人的所有提交
git log --author=“author”
为git设置默认用户名和密码
在使用Git 的时候,经常会遇到需要频繁输入密码的情况,每次git push 和 git pull 都要求输入用户名和密码,如果提交频繁的话就十分不方便。
可以使用下面的方法,只需要第一次输入用户名和密码,以后都不用再输入了。
进入Git 配置文件
vim ~/.gitconfig
修改配置文件,添加下面这一行。
[credential]
helper = store
修改已提交的commit的用户名邮箱
- 第一步
git config --global user.name "newName"
git config --global user.email "newEmail"
- 修改已提交commit的用户名邮箱
git commit --amend --author="userName <userEmail>"
注意不能缺少< >
此指令仅能更新最近的一次commit的用户名邮箱
结束语
命令在不断更新中...
网友评论