01 | Git常用命令介绍

在Windows上安装Git

Windows-Git Bash: 下载地址

Git GUI工具:Fork

Windows-Fork: 下载地址

Git 基础

配置全局信息

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

初始化仓库

$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/

管理修改

创建readme.txt并将文件添加至暂存区(Stage)

$ git add readme.txt

提交修改

$ git commit -m "wrote a readme file"

git commit命令,-m后面输入的是本次提交的说明,最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

当然也可以一次add多个文件至暂存区

$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."

回退版本

修改readme.txt文件中内容,查看

$ git status

$ git diff readme.txt 

$ git log

$ git log --pretty=oneline

回退到上一版本

$ git reset --hard HEAD^

$ git reset --hard <commit id>

$ git reflog

(这里上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100。)

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后执行git commit就可以一次性把暂存区的所有修改提交到当前分支。

撤销修改

$ git checkout -- <filename>

撤销工作区修改,命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令。

$ git reset HEAD <filename>

git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD ,就回到了场景1,第二步按场景1操作。

远程仓库

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

$ git remote add origin git@github.com:michaelliao/learngit.git
$ git push -u origin master

从远程库克隆

$ git clone http://10.135.0.142/bjtu-it-center/gitlearn.git

分支管理

查看当前分支

$ git branch <name>

创建并然后切换

$ git checkout -b <name>
$ git switch -c <name>

切换分支

$ git checkout <name>
$ git switch <name>

删除分支

$ git branch -d <name>

分支合并

合并分支(merge后提示的Fast-forward表示这次合并是“快进模式”,也就是直接把master指向branch的当前提交,所以合并速度非常快。)

$ git merge <name>

解决冲突(解决后commit)

<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1

查看分支合并情况

$ git log --graph --pretty=oneline --abbrev-commit
$ git log --graph

--no-ff参数,表示禁用Fast forward。通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

$ git merge --no-ff -m "merge with no-ff" <branch-name>

分支管理策略

查看远程分支

git remote

显示更详细的信息

$ git remote -v

推送分支

$ git push origin master

远程创建分支

$ git checkout -b feature origin/feature

拉取分支

$ git pull

如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令

$ git branch --set-upstream-to <branch-name> origin/<branch-name>

Rebase

rebase操作可以把本地未push的分叉提交历史整理成直线;
rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。
rebase前
rebase后

$ git rebase

忽略特殊文件

有些时候,你必须把某些文件放到Git工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件啦,等等,每次git status都会显示Untracked files ...
.gitignore文件样例:

# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini

# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build

# My configurations:
db.ini
deploy_key_rsa

生成公钥

生成ssh key(在Windows下查看[c盘->用户->自己的用户名->.ssh]下是否有"id_rsa、id_rsa.pub"文件,若无则Git-Bash中执行以下命令)

ssh-keygen -t rsa -C "youremail@example.com"
posted @ 2020-09-28 08:03  mhp  阅读(88)  评论(0)    收藏  举报