2017年开始使用git,这里总结下用到的cmd,会持续跟新。
GIT可以在windows和linux两种操作系统中运行,这里记录的是linux下的操作方式。
autor --表示提交者
编号 | 功能说明 | command |
1 | clone | $ git clone <版本库的网址> <本地目录名>
git clone ssh://autor@192.168.100.51:29419/kunlun.git
|
2 | status | git status |
3 | log | git log (显示log)
git log -p -2 (p,表示展开更改,2表示最近的两个commit)
|
4 | add/commit | git add xxx (将xxx从工作区增加到缓存区)
git commit (将缓存区的改动,提交到分支上去,变成一个commit,生成change_id)
git commit --amend (这次提交,和上次提交为一个提交,共用一个change id)
git commit --amend --author 'autor<autor@iotelic.com>' (这次提交,和上次提交为一个提交,共用一个change id,并且更改提交的作者)
|
5 | diff | git diff (显示不同的部分) |
6 | push | git push <远程主机名> <本地分支名>:<远程分支名>
git push ssh://autor@192.168.100.51:29419/kunlun.git HEAD:refs/for/master
git push --no-thin ssh://autor@192.168.100.51:29419/kunlun.git HEAD:refs/for/master
|
7 | 撤销git add的文件 | git reset HEAD <xxx> (将文件xxx,从缓存区中撤回到工作区中) |
8 | 撤销git commit | git reset --soft <xxx> (xxx表示commit的id,表示将改动commit的改动撤回到工作区中)
git reset --hard <xxx> (xxx表示commit的id,表示直接回退到该xxx版本)
|
9 | pull | $ git pull <远程主机名> <远程分支名>:<本地分支名>
git pull ssh://autor@192.168.100.51:29419/kunlun.git master:master (从远程master分支上pull到本地master分支上)
$ git pull --rebase <远程主机名> <远程分支名>:<本地分支名>
|
10 | 撤销未提交更改 | git checkout -- <xxx> |
11 | 分支 | git branch -a (-a表示查看所有分支,包括远程分支)
git branch -D <branch name> (删除分支)
git branch <branch name> <remote branch> (创建分支)
git checkout -b <branch name> (切换到分支)
|
12 | Cherry pick | 1.git branch 查看branch 2.git checkout <branch1> 切换到branch1 3.git log 查看准备cherry pick的commit,并几下这个commit1 4.git checkout <branch2> 切换到branch2 5.git cherry-pick <commit1> 如果顺利,这样就将 branch1的 commit cherry pick到branch2上去了 如果有conflict, 解决冲突的方式和rebase的相反。
Rebase --> theirs, 记录local
Cherry pick --> mains 记录remote |
13 | Git diff | git diff 是已修改的workspace的修改与库上的code的区别 git diff --cached 查看已经add的修改与库上的区别 |
14 | 撤销还没add的更改 | git checkout -- filename 撤销还没提交的更改
|
15 | 修改用户名及邮箱 | git 修改当前的project的用户名的命令为:git config user.name 你的目标用户名; git 修改当前的project提交邮箱的命令为:git config user.email 你的目标邮箱名; |
16 | stash | git stash git stash pop
git stash save "work in progress for foo feature" 当你多次使用’git stash’命令后,你的栈里将充满了未提交的代码,这时候你会对将哪个版本应用回来有些困惑, ’git stash list’ 命令可以将当前的Git栈信息打印出来,你只需要将找到对应的版本号,例如使用’git stash apply stash@{1}’就可以将你指定版本号为stash@{1}的工作取出来,当你将所有的栈都应用回来的时候,可以使用’git stash clear’来将栈清空。
git stash # save uncommitted changes git stash --help # for more info |
17 | rebase 丢失commit的情况 | 当rebase commit丢失的时候,找回丢失commit的方法: 1. git reflog 2. git checkout -b my_recovery [commit] 回到丢失前的commit状态 3. git reset --soft 之前的一个commit 4. git stash 将改动存到stash里面 5. git checkout master 6. git stash pop 这样之前的改动就回到了master下的工作区内了
|
18 | 查看某一个文件的log | git log --pretty=oneline 文件名
|
19 |
生成patch | git diff > xxx
|
20 | 查看clone地址 | git remote -v
|
21 | 查看某个commit的修改 | git show commit_id eg:git show ffc768c21c2e10b3e631f5e22a09872eef718282 |
22 | patch | 假如现在操作的位置是第一层目录 patch -p 1 < x.patch patch -Rp 1< x.patch |