常用语法#
文件添加及提交#
1
2
3
| $ git add test.txt //添加
$ git commit -m "wrote a test file" //提交
$ git commit -m "add 3 files." //一次性提交多个文件
|
改日志#
1
2
3
4
5
| git rebase -i
git commit --amend -》修改里面日志信息,vim修改
git rebase --continue
git push origin HEAD:refs/for/dev
git remote prune origin
|
修改已提交文件 dev分支#
1
2
3
4
5
6
| git rebase -i dev~1
git rebase -i HEAD~3 表示要修改当前版本的倒数第三次状态,如果你要修改哪个,就把那行的pick改成edit
pick修改为edit ,保存
git add .
git rebase --continue
git push origin HEAD:refs/for/dev
|
1
2
3
4
5
6
7
8
9
10
11
12
| (1) git reset --soft commitid3
(2) git status 可以看到绿色的已经add过的文件(即commitid1和commitid2的改动)
(3) git commit -s #添加评论,保存退出后会生成change_id
(4) git log 可以看到已经有了change_id
(5) git push origin HEAD:refs/for/dev 工作分支
git stash
可用来暂存当前正在进行的工作, 比如想pull 最新代码, 又不想加新commit, 或者另外一种情况,为了fix 一个紧急的bug, 先stash, 使返回到自己上一个commit,
改完bug之后再stash pop, 继续原来的工作。
git stash pop
|
git强制覆盖本地仓库#
拉取所有更新,不同步;
git fetch –all
本地代码同步线上最新版本(会覆盖本地所有与远程仓库上同名的文件);`
git reset –hard origin/master
再更新一次(其实也可以不用,第二步命令做过了其实)`
git pull
git fetch –all && git reset –hard origin/master && git pull
1
| git branch --set-upstream-to=origin/work work
|
安装及配置#
指定名称和邮箱#
1
2
3
| $ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
|
如果用了–global选项,那么更改的配置文件就是位于你用户主目录的那个,以后你所有的项目都会默认使用这里配置的用户信息。如果要在某个特定的项目中使用其他名字或者电邮,只要去掉–global选项重新配置即可,新的设定保存在当前项目的./git/config文件里
克隆仓库#
1
2
3
4
5
| git clone git://github.com/schacon/grit.git
如果希望在克隆的时候,自己定义要新建的项目目录名称,可以在上面的命令最后指定:
$ git clone git://github.com/schacon/grit.git myGit
唯一的差别就是,现在新建的目录成了mygrit,其它的都和上边的一样。
|
检查当前文件状态:#
忽略某些文件:可以创建一个名为.gitignore的文件,列出要忽略的文件模式。
要查看文件更新哪些部分#
不加参数直接输入:
版本控制#
1
2
3
4
5
6
7
8
| $ git log //查看提交历史记录,从最近到最远,可以看到3次
$ git log --pretty=oneline //加参,简洁查看
$ git reflog //查看每一次修改历史
$ cat test.txt //查看文件内容
$ git status //查看工作区中文件当前状态
$ git reset --hard HEAD^(HEAD~100)(commit id) //回退版本
$ git checkout -- test.txt //丢弃工作区的修改,即撤销修改
$ git reset HEAD test.txt //丢弃暂存区的修改(若已提交,则回退)
|
删除文件#
1
2
3
4
5
6
| $ rm test.txt
//直接删除
$ git rm test.txt
$ git commit -m "remove test.txt"
//删错了,恢复
$ git checkout -- test.txt
|
不常用命令#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| $ git tag v1.0 //打标签
$ git tag -a v0.1 -m "version 0.1 released" 1094adb //指定标签名和说明文字
$ git tag //查看所有标签
//若是忘记打,则查找历史提交commit id ,再打上
$ git log --pretty=oneline --abbrev-commit
$ git tag v0.9 f52c633
$ git show v0.9 //查看标签详细信息
$ git tag -d v0.1 //删除标签
$ git push origin v1.0 //推送标签到远程
$ git push origin –tags //一次性推送全部本地标签
//删除标签,(若已推送到远程,先从本地删除,从远程删除)
$ git tag -d v0.9
$ git push origin :refs/tags/v0.9
$ git config --global alias.st status //配置别名
$ git config --global alias.unstage 'reset HEAD' //配置操作别名
$ git config --global alias.last 'log -1' //显示最后一次提交信息
$ git last //显示最近一次的提交
$git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" //颜色
$ cat .git/config //查看每个仓库的git配置文件
$ cat .gitconfig //查看当前用户的git配置文件
$ git checkout -- test.txt 取消对文件的修改
|
Tips#
全局配置文件及commit模板指定#
git config –global –edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| [alias]
s = status
br = branch
co = checkout
df = diff
amend = commit --amend --no-edit
cs = commit -s
u = add -u
pub = "!f() { git push origin HEAD:refs/for/$(git rev-parse --abbrev-ref HEAD); }; f"
sub = "!f() { git pull --rebase origin $(git rev-parse --abbrev-ref HEAD); }; f"
draft = "!f() { git push origin HEAD:refs/drafts/$(git rev-parse --abbrev-ref HEAD); }; f"
[user]
name=Zpc
email=zpc@test.com
[core]
editor=vi
autocrlf=false
safecrlf=false
[commit]
template=D:\\xxx.template
[gui]
encoding=utf-8
|
git github在内网环境设置代理访问报错:#
fatal: unable to access ‘https://github.com/XXX': Could not resolve host: github.com
Unable to fetch in submodule path ‘XXX’
解决:
1
2
| $ git config --global http.proxy 127.0.0.1:10809
$ git config --global https.proxy https://10.xxx.xxx.xxx:1234
|
配置为代理,即可
Unable to negotiate with xxx.xxx.xxx.xxx port XX: no matching host key type found. Their offer: ssh-rsa,ssh-dss fatal: Could not read from remote repository.#
前提: 在排除没有配置公钥的情况下。
- 在Git的安装目录下
Git > etc > ssh
文件夹下找到 ssh_config
文件 。 - 在文件末尾添加一下代码。
1
2
3
4
5
| # 注意这里的 xxx.com 是没有 https:// 的
# 如 https://github.com/, 填写 github.com 即可(最后的斜杆也不能要)。
Host xxx.com
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
|