Git命令
在项目根目录下鼠标右键——>选择——> Git Bash Here
命令 | 备注 |
---|---|
git init <directory> | 在指定的⽬录下创建⼀个空的git repository。不带参数将在当前⽬录下创建⼀个git repository。 |
git add <directory> | 将指定⽬录的所有修改加⼊到下⼀次commit中。把替换成将添加指定⽂件的修改(例如:git add readme.txt 将readme.txt文件添加到暂存区区),也可以一次性添加多个文件(例如:git add file2.txt file3.txt ) |
git commit -m "<message>" | 提交暂存区的修改,使⽤指定的作为提交信息,⽽不是打开⽂本编辑器输⼊提交信息。(例如:git commit -m '第一次提交文件' ) |
git status | 显示哪些⽂件已被staged、未被staged以及未跟踪(untracked) |
git diff | ⽐较⼯作区和暂存区的修改。 |
git log -<limit> | 限制log的显示数量。例如:”git log -5 ”仅显示最新5条commit。 |
git log --pretty=oneline | 每⾏显示⼀条commit |
git reset --hard <commit> | 将当前分⽀回滚到指定,清除暂存区的修改,并强制删除所有⼯作区的修改(例如:git reset --hard HEAD^ )在Git中,用HEAD表示当前版本,上一个版本就是HEAD^ ,上上一个版本就是HEAD^^,我当然往上100个版本写100个, 我们可以用指定的版本编号来回退(例如:git reset --hard 31880fc ) |
git reflog | Git提供了一个命令git reflog用来记录你的每一次命令 |
git diff | ⽐较⼯作区和暂存区的修改。 |
git diff HEAD | ⽐较⼯作区和上⼀次commit后的修改 |
git diff --cached | ⽐较暂存区和上⼀次commit后的修改 |
git diff HEAD -- <file> | (例:用git diff HEAD -- readme.txt 命令可以查看readme.txt文件在工作区和版本库里面最新版本的区别) |
git checkout -- readme.txt | 命令git checkout -- readme.txt 意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。总之,就是让这个文件回到最近一次git commit或git add时的状态。git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。 |
git reset HEAD <file> | 用命令git reset HEAD <file> 可以把暂存区的修改撤销掉(unstage),重新放回工作区 |
git rm <file> | 从版本库中删除该文件,那就用命令git rm删掉,并且git commit(例如:想要删除版本库中的文件test.txt git rm test.txt 然后提交git commit -m "remove test.txt" ) |
ssh-keygen -t rsa -C "youremail@example.com" | 创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash) |
git remote add <name> <url> | 把一个已有的本地仓库与远程仓库,关联请千万注意,把上面的JieKki1998替换成你自己的GitHub账户名git remote add origin https://github.com/JieKki1998/learngit.git |
git push <remote> <branch> | 将本地指定推送到指定远程。如果远程没有对应的分⽀,将⾃动在远程创建此分⽀(例如:将master分支推送到远程仓库git push -u origin master ) |
git pull <remote> | 从指定抓取所有分⽀的commit并⽴刻合并到本地repo |
git branch --set-upstream-to=origin/dev dev | 指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接,如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name> |
git remote -v | git remote -v查看远程库信息 |
git remote rm <name> | 如果添加的时候地址写错了,或者就是想删除远程库,可以用git remote rm 命令,(根据名字删除,比如删除origin:git remote rm origin ) |
git clone <repo> | 克隆⼀个指定repo到本地。指定的repo可以是本地⽂件系统或者由HTTP或SSH指定的远程路径git clone git@github.com:JieKki1998/gitskills.git |
git checkout -b dev | 创建dev分支,然后切换到dev分支,等价于先执行git branch dev 再执行git checkout dev |
git checkout -b dev origin/dev | 创建远程origin的dev分支到本地 |
git branch | 显示本地repo的所有分⽀ |
git switch -c <branch> | 创建并切换到⼀个新的名为的分⽀。去掉-c参数将切换到⼀个已有分⽀。 |
git checkout master | 却换到master分支 |
git merge <branch> | 将指定分⽀合并到当前分⽀。(Administrator@JieLenovoPC MINGW64 ~/Desktop/test (master)$ git merge dev 意为将dev分支合并到master分支) |
git branch -d <branch> | 删除指定分支(删除dev分支:git branch -d dev ) |
git log --graph --pretty=oneline --abbrev-commit | 用带参数的git log查看到分支的合并情况 |
Administrator@JieLenovoPC MINGW64 ~/Desktop/learngit (master)
$ git log --graph --pretty=oneline --abbrev-commit
* 71dd61d (HEAD -> master) conflict fixed
|\
| * 05dd90a (feature1) AND simple
* | 48ce980 & simple
|/
* 2c6d5bf (origin/master, origin/HEAD) Update index.html
* 57020b6 add index.html
* 5ec1057 remove test.txt
* 5a6f53c add test.txt
* 0457e9b git tracks changes secend!
* da69b84 git tracks changes
* 8f331e8 understand how stage works
* 31880fc append GPL
* 690b16f add distributed
* f647968 wrote a readme file
Administrator@JieLenovoPC MINGW64 ~/Desktop/learngit (master)
$ git branch -d feature1
Deleted branch feature1 (was 05dd90a).