备忘,记录一些常用的 git 命令,现在只会用一些最简单的,以后慢慢完善
配置
安装完 git 之后首先第一步通常是配置你的个人信息,包括 name 和 email ,配置完毕后,任何修改or提交等操作 git 才会知道是谁干的
# 配置用户信息
git config --global user.name "[name]"
git config --global user.email "[email address]"
# example
git config --global user.name "chuiliu"
git config --global user.email "xxx@foxmail.com"
配置完毕后可以使用下面的命令查看所有的git配置,能看到刚刚配置的用户信息
git config -l
git config --list
初始化
怎样让某个目录变成一个git仓库呢,首先,我们需要在该目录下执行初始化命令
git init # 初始化git仓库
经过初始化后,当前目录就是一个git仓库了,git会生成一个名为.git
的隐藏文件夹来保存仓库的版本信息,
查看仓库的状态
这个命令可以看到,当前哪些文件被修改,哪些文件未暂存,哪些已经暂存,还可以看到有冲突的文件,很常用。
git status
查看提交日志
git log
暂存
暂存的命令是git add
,这里add的意思是,把文件加入到 git 的暂存区,没有执行过 add的文件,git 是不认识的,执行 commit的时候也不会被提交,也就是说,文件的提交前提是必须先 add。
# 添加当前目录下所有文件(3种方式)
git add .
git add -A
git add --all
# 添加某个文件
git add [filename]
# 添加index.html到暂存区
git add index.html
# 删除和移动的文件也能提交到暂存区
git add --all
提交
提交的命令是git commit
,特别注意的是,这里是提交到本地git仓库的版本区,而不是远程仓库,初学的时候容易混淆。git commit
的时候必须加上提交说明信息,并且不能为空,-m
选项表示message,即提交信息。如果直接执行git commit
,忘记-m
选项,git 会要求你填写提交信息。
每一次提交会产生一个版本信息,git将会完全记录,并且可以回退到指定版本等。
# 提交到仓库
git commit -m "descriptions"
git commit [filename] -m "descriptions"
# example
# 将当前暂存区的所有文件提交到版本区
git commit -m "update"
# 将暂存区中的index.html文件提交到版本区
git commit index.html -m "更新 index.html"
分支
通常我们会把代码放到多个分支上,通常会有一个分支来专门放稳定版本的代码,开发则在另外的分支上开发。
多人开发时,开发也可能是在多个分支上开发,比如开发中A在分支A上开发功能A,开发者B在分支B上开发功能B,他们之间的开发互不干扰,等他们都开发好功能之后,再各自将分支合并到开发分支C上
# 查看当前所有分支,当前所在的分支前面会有个*符号
git branch
# 新建分支
git branch [branchName]
# 新建并切换到分支
git checkout -b [branchName]
# 切换到分支
git checkout [branchName]
# 提交到[branchName]分支
git push origin [branchName]
# 合并[branchName]到主分支
git merge [branchName]
# 删除分支
git branch -d [branchName]
远程仓库
上面的命令都只是操作的本地的git仓库,而远程仓库是另外一回事,团队在协同开发则需要把代码放在远程仓库,我们在本地提交后,需要把远程仓库的代码同步下来,再推送本地的更新到远程仓库。
git remote add
如果是刚刚创建在本地的git仓库,想要连接到远程仓库,则只要在远程(github,coding 等)创建一个仓库,复制下仓库的url,然后在本地仓库根目录下执行下面命令,可以用ssh协议(需要配置)和http协议。
这里的origin
是git默认为远程仓库起的名字,可以修改成别的,如果有多个远程仓库,就要命多个不同的名字。
git remote add origin git@github.com:chuiliu/test.git
git pull
将远程仓库的最新代码更新到本地
git pull
git pull git@github.com:chuiliu/test.git [branchName]
git push
将本地代码推送到远程仓库,
git push -u origin master
git push origin master
# 默认会推送到master分支
git push
git clone
将远程仓库克隆到本地,非常常用的命令,比如我们想把github上的某个项目代码下载到本地,通常就是采用这种方式。
因此你也可以在github上直接创建一个空仓库,然后git clone
到本地,克隆下来的就已经连接好远程仓库了,不需要再执行git remote add
命令来建立连接。
git clone git@github.com:chuiliu/test.git
回滚
回滚到上一次commit的状态
git reset --hard
.gtiignore
通常git仓库下有些文件是不需要被提交的,比如常见的node_module
、.idea
之类的库文件或ide的文件,我们可以创建一个名为.gitignore
的文件来配置哪些信息不需要被提交。
# 创建.gitignore文件
touch .gitignore
一个.gitignore
文件可能是这样的,使用通配符来匹配不需要提交的文件或目录:
bin/
target/
.settings/
.idea/
.classpath/
.project/
*.epoch
*.log
*.iml
删除
删除文件
# 删除test.txt
git rm test.txt
从暂存区删除文件,不删除物理文件
git rm –cached test.txt
忽略已经跟踪着的文件,和.gitignore
一样,但是执行了这一句后尽管这个目录不写入.gitignore
文件,git也会忽略对它的跟踪
git update-index --assume-unchanged node_modules/
用git一起写代码
当多人协同写代码的时候,一般的流程是,先将你的修改add
和commit
到本地的版本区,然后再从远程仓库pull
同步最新的代码到本地,如果这时候有冲突,则必须先解决,然后add
和commit
,再push
你的代码到远程仓库,如果没有冲突,则直接push
就OK了。